Changeset 94957 in spip-zone


Ignore:
Timestamp:
Feb 4, 2016, 9:05:24 PM (3 years ago)
Author:
p@…
Message:

Foundation 6.1.2

Location:
_plugins_/foundation_6/trunk
Files:
2 deleted
3 edited
1 copied

Legend:

Unmodified
Added
Removed
  • _plugins_/foundation_6/trunk/lib/foundation-6/css/foundation-flex.css

    r94745 r94957  
    22/**
    33 * Foundation for Sites by ZURB
    4  * Version 6.0.6
     4 * Version 6.1.2
    55 * foundation.zurb.com
    66 * Licensed under MIT Open Source
     
    907907/**
    908908   * Define consistent border, margin, and padding.
    909    */
    910 fieldset {
    911   border: 1px solid #c0c0c0;
    912   margin: 0 2px;
    913   padding: 0.35em 0.625em 0.75em; }
    914 
     909   * [NOTE] We don't enable this ruleset in Foundation, because we want the <fieldset> element to have plain styling.
     910   */
     911/* fieldset {
     912    border: 1px solid #c0c0c0;
     913    margin: 0 2px;
     914    padding: 0.35em 0.625em 0.75em;
     915  } */
    915916/**
    916917   * 1. Correct `color` not being inherited in IE 8/9/10/11.
     
    952953  font-family: "small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"; }
    953954
    954 html,
    955 body {
     955html {
    956956  font-size: 100%;
    957957  box-sizing: border-box; }
     
    10091009  line-height: 1; }
    10101010
     1011.is-visible {
     1012  display: block !important; }
     1013
     1014.is-hidden {
     1015  display: none !important; }
     1016
    10111017.row {
    10121018  max-width: 62.5rem;
    10131019  margin-left: auto;
    1014   margin-right: auto; }
    1015   .row::before, .row::after {
    1016     content: ' ';
    1017     display: table; }
    1018   .row::after {
    1019     clear: both; }
     1020  margin-right: auto;
     1021  display: -webkit-flex;
     1022  display: -ms-flexbox;
     1023  display: flex;
     1024  -webkit-flex-flow: row wrap;
     1025      -ms-flex-flow: row wrap;
     1026          flex-flow: row wrap; }
     1027  .row .row {
     1028    margin-left: -0.625rem;
     1029    margin-right: -0.625rem; }
     1030    @media screen and (min-width: 40em) {
     1031      .row .row {
     1032        margin-left: -0.9375rem;
     1033        margin-right: -0.9375rem; } }
     1034  .row.expanded {
     1035    max-width: none; }
    10201036  .row.collapse > .column, .row.collapse > .columns {
    10211037    padding-left: 0;
    10221038    padding-right: 0; }
    1023   .row .row {
    1024     margin-left: -0.9375rem;
    1025     margin-right: -0.9375rem; }
    1026     .row .row.collapse {
    1027       margin-left: 0;
    1028       margin-right: 0; }
    1029   .row.small-collapse > .column, .row.small-collapse > .columns {
    1030     padding-left: 0;
    1031     padding-right: 0; }
    1032   .row.small-uncollapse > .column, .row.small-uncollapse > .columns {
    1033     padding-left: 0.9375rem;
    1034     padding-right: 0.9375rem; }
     1039
     1040.column, .columns {
     1041  padding-left: 0.625rem;
     1042  padding-right: 0.625rem;
     1043  -webkit-flex: 1 1 0px;
     1044      -ms-flex: 1 1 0px;
     1045          flex: 1 1 0px; }
    10351046  @media screen and (min-width: 40em) {
    1036     .row.medium-collapse > .column, .row.medium-collapse > .columns {
    1037       padding-left: 0;
    1038       padding-right: 0; }
    1039     .row.medium-uncollapse > .column, .row.medium-uncollapse > .columns {
     1047    .column, .columns {
    10401048      padding-left: 0.9375rem;
    10411049      padding-right: 0.9375rem; } }
    1042   @media screen and (min-width: 64em) {
    1043     .row.large-collapse > .column, .row.large-collapse > .columns {
    1044       padding-left: 0;
    1045       padding-right: 0; }
    1046     .row.large-uncollapse > .column, .row.large-uncollapse > .columns {
    1047       padding-left: 0.9375rem;
    1048       padding-right: 0.9375rem; } }
    1049   .row.expanded {
    1050     max-width: none; }
    1051 
    1052 .column, .columns {
    1053   width: 100%;
    1054   float: left;
    1055   padding-left: 0.9375rem;
    1056   padding-right: 0.9375rem; }
    1057   .column:last-child:not(:first-child), .columns:last-child:not(:first-child) {
    1058     float: right; }
    1059   .column.end:last-child:last-child, .end.columns:last-child:last-child {
    1060     float: left; }
    10611050
    10621051.column.row.row, .row.row.columns {
     
    10691058
    10701059.small-1 {
    1071   width: 8.33333%; }
    1072 
    1073 .small-push-1 {
    1074   position: relative;
    1075   left: 8.33333%; }
    1076 
    1077 .small-pull-1 {
    1078   position: relative;
    1079   left: -8.33333%; }
     1060  -webkit-flex: 0 0 8.33333%;
     1061      -ms-flex: 0 0 8.33333%;
     1062          flex: 0 0 8.33333%;
     1063  max-width: 8.33333%; }
    10801064
    10811065.small-offset-0 {
     
    10831067
    10841068.small-2 {
    1085   width: 16.66667%; }
    1086 
    1087 .small-push-2 {
    1088   position: relative;
    1089   left: 16.66667%; }
    1090 
    1091 .small-pull-2 {
    1092   position: relative;
    1093   left: -16.66667%; }
     1069  -webkit-flex: 0 0 16.66667%;
     1070      -ms-flex: 0 0 16.66667%;
     1071          flex: 0 0 16.66667%;
     1072  max-width: 16.66667%; }
    10941073
    10951074.small-offset-1 {
     
    10971076
    10981077.small-3 {
    1099   width: 25%; }
    1100 
    1101 .small-push-3 {
    1102   position: relative;
    1103   left: 25%; }
    1104 
    1105 .small-pull-3 {
    1106   position: relative;
    1107   left: -25%; }
     1078  -webkit-flex: 0 0 25%;
     1079      -ms-flex: 0 0 25%;
     1080          flex: 0 0 25%;
     1081  max-width: 25%; }
    11081082
    11091083.small-offset-2 {
     
    11111085
    11121086.small-4 {
    1113   width: 33.33333%; }
    1114 
    1115 .small-push-4 {
    1116   position: relative;
    1117   left: 33.33333%; }
    1118 
    1119 .small-pull-4 {
    1120   position: relative;
    1121   left: -33.33333%; }
     1087  -webkit-flex: 0 0 33.33333%;
     1088      -ms-flex: 0 0 33.33333%;
     1089          flex: 0 0 33.33333%;
     1090  max-width: 33.33333%; }
    11221091
    11231092.small-offset-3 {
     
    11251094
    11261095.small-5 {
    1127   width: 41.66667%; }
    1128 
    1129 .small-push-5 {
    1130   position: relative;
    1131   left: 41.66667%; }
    1132 
    1133 .small-pull-5 {
    1134   position: relative;
    1135   left: -41.66667%; }
     1096  -webkit-flex: 0 0 41.66667%;
     1097      -ms-flex: 0 0 41.66667%;
     1098          flex: 0 0 41.66667%;
     1099  max-width: 41.66667%; }
    11361100
    11371101.small-offset-4 {
     
    11391103
    11401104.small-6 {
    1141   width: 50%; }
    1142 
    1143 .small-push-6 {
    1144   position: relative;
    1145   left: 50%; }
    1146 
    1147 .small-pull-6 {
    1148   position: relative;
    1149   left: -50%; }
     1105  -webkit-flex: 0 0 50%;
     1106      -ms-flex: 0 0 50%;
     1107          flex: 0 0 50%;
     1108  max-width: 50%; }
    11501109
    11511110.small-offset-5 {
     
    11531112
    11541113.small-7 {
    1155   width: 58.33333%; }
    1156 
    1157 .small-push-7 {
    1158   position: relative;
    1159   left: 58.33333%; }
    1160 
    1161 .small-pull-7 {
    1162   position: relative;
    1163   left: -58.33333%; }
     1114  -webkit-flex: 0 0 58.33333%;
     1115      -ms-flex: 0 0 58.33333%;
     1116          flex: 0 0 58.33333%;
     1117  max-width: 58.33333%; }
    11641118
    11651119.small-offset-6 {
     
    11671121
    11681122.small-8 {
    1169   width: 66.66667%; }
    1170 
    1171 .small-push-8 {
    1172   position: relative;
    1173   left: 66.66667%; }
    1174 
    1175 .small-pull-8 {
    1176   position: relative;
    1177   left: -66.66667%; }
     1123  -webkit-flex: 0 0 66.66667%;
     1124      -ms-flex: 0 0 66.66667%;
     1125          flex: 0 0 66.66667%;
     1126  max-width: 66.66667%; }
    11781127
    11791128.small-offset-7 {
     
    11811130
    11821131.small-9 {
    1183   width: 75%; }
    1184 
    1185 .small-push-9 {
    1186   position: relative;
    1187   left: 75%; }
    1188 
    1189 .small-pull-9 {
    1190   position: relative;
    1191   left: -75%; }
     1132  -webkit-flex: 0 0 75%;
     1133      -ms-flex: 0 0 75%;
     1134          flex: 0 0 75%;
     1135  max-width: 75%; }
    11921136
    11931137.small-offset-8 {
     
    11951139
    11961140.small-10 {
    1197   width: 83.33333%; }
    1198 
    1199 .small-push-10 {
    1200   position: relative;
    1201   left: 83.33333%; }
    1202 
    1203 .small-pull-10 {
    1204   position: relative;
    1205   left: -83.33333%; }
     1141  -webkit-flex: 0 0 83.33333%;
     1142      -ms-flex: 0 0 83.33333%;
     1143          flex: 0 0 83.33333%;
     1144  max-width: 83.33333%; }
    12061145
    12071146.small-offset-9 {
     
    12091148
    12101149.small-11 {
    1211   width: 91.66667%; }
    1212 
    1213 .small-push-11 {
    1214   position: relative;
    1215   left: 91.66667%; }
    1216 
    1217 .small-pull-11 {
    1218   position: relative;
    1219   left: -91.66667%; }
     1150  -webkit-flex: 0 0 91.66667%;
     1151      -ms-flex: 0 0 91.66667%;
     1152          flex: 0 0 91.66667%;
     1153  max-width: 91.66667%; }
    12201154
    12211155.small-offset-10 {
     
    12231157
    12241158.small-12 {
    1225   width: 100%; }
     1159  -webkit-flex: 0 0 100%;
     1160      -ms-flex: 0 0 100%;
     1161          flex: 0 0 100%;
     1162  max-width: 100%; }
    12261163
    12271164.small-offset-11 {
    12281165  margin-left: 91.66667%; }
    12291166
    1230 .small-up-1 > .column, .small-up-1 > .columns {
    1231   width: 100%;
    1232   float: left; }
    1233   .small-up-1 > .column:nth-of-type(1n), .small-up-1 > .columns:nth-of-type(1n) {
    1234     clear: none; }
    1235   .small-up-1 > .column:nth-of-type(1n+1), .small-up-1 > .columns:nth-of-type(1n+1) {
    1236     clear: both; }
    1237   .small-up-1 > .column:last-child, .small-up-1 > .columns:last-child {
    1238     float: left; }
    1239 
    1240 .small-up-2 > .column, .small-up-2 > .columns {
    1241   width: 50%;
    1242   float: left; }
    1243   .small-up-2 > .column:nth-of-type(1n), .small-up-2 > .columns:nth-of-type(1n) {
    1244     clear: none; }
    1245   .small-up-2 > .column:nth-of-type(2n+1), .small-up-2 > .columns:nth-of-type(2n+1) {
    1246     clear: both; }
    1247   .small-up-2 > .column:last-child, .small-up-2 > .columns:last-child {
    1248     float: left; }
    1249 
    1250 .small-up-3 > .column, .small-up-3 > .columns {
    1251   width: 33.33333%;
    1252   float: left; }
    1253   .small-up-3 > .column:nth-of-type(1n), .small-up-3 > .columns:nth-of-type(1n) {
    1254     clear: none; }
    1255   .small-up-3 > .column:nth-of-type(3n+1), .small-up-3 > .columns:nth-of-type(3n+1) {
    1256     clear: both; }
    1257   .small-up-3 > .column:last-child, .small-up-3 > .columns:last-child {
    1258     float: left; }
    1259 
    1260 .small-up-4 > .column, .small-up-4 > .columns {
    1261   width: 25%;
    1262   float: left; }
    1263   .small-up-4 > .column:nth-of-type(1n), .small-up-4 > .columns:nth-of-type(1n) {
    1264     clear: none; }
    1265   .small-up-4 > .column:nth-of-type(4n+1), .small-up-4 > .columns:nth-of-type(4n+1) {
    1266     clear: both; }
    1267   .small-up-4 > .column:last-child, .small-up-4 > .columns:last-child {
    1268     float: left; }
    1269 
    1270 .small-up-5 > .column, .small-up-5 > .columns {
    1271   width: 20%;
    1272   float: left; }
    1273   .small-up-5 > .column:nth-of-type(1n), .small-up-5 > .columns:nth-of-type(1n) {
    1274     clear: none; }
    1275   .small-up-5 > .column:nth-of-type(5n+1), .small-up-5 > .columns:nth-of-type(5n+1) {
    1276     clear: both; }
    1277   .small-up-5 > .column:last-child, .small-up-5 > .columns:last-child {
    1278     float: left; }
    1279 
    1280 .small-up-6 > .column, .small-up-6 > .columns {
    1281   width: 16.66667%;
    1282   float: left; }
    1283   .small-up-6 > .column:nth-of-type(1n), .small-up-6 > .columns:nth-of-type(1n) {
    1284     clear: none; }
    1285   .small-up-6 > .column:nth-of-type(6n+1), .small-up-6 > .columns:nth-of-type(6n+1) {
    1286     clear: both; }
    1287   .small-up-6 > .column:last-child, .small-up-6 > .columns:last-child {
    1288     float: left; }
    1289 
    1290 .small-up-7 > .column, .small-up-7 > .columns {
    1291   width: 14.28571%;
    1292   float: left; }
    1293   .small-up-7 > .column:nth-of-type(1n), .small-up-7 > .columns:nth-of-type(1n) {
    1294     clear: none; }
    1295   .small-up-7 > .column:nth-of-type(7n+1), .small-up-7 > .columns:nth-of-type(7n+1) {
    1296     clear: both; }
    1297   .small-up-7 > .column:last-child, .small-up-7 > .columns:last-child {
    1298     float: left; }
    1299 
    1300 .small-up-8 > .column, .small-up-8 > .columns {
    1301   width: 12.5%;
    1302   float: left; }
    1303   .small-up-8 > .column:nth-of-type(1n), .small-up-8 > .columns:nth-of-type(1n) {
    1304     clear: none; }
    1305   .small-up-8 > .column:nth-of-type(8n+1), .small-up-8 > .columns:nth-of-type(8n+1) {
    1306     clear: both; }
    1307   .small-up-8 > .column:last-child, .small-up-8 > .columns:last-child {
    1308     float: left; }
    1309 
    1310 .column.small-centered, .small-centered.columns {
    1311   float: none;
    1312   margin-left: auto;
    1313   margin-right: auto; }
    1314 
    1315 .small-uncenter,
    1316 .small-push-0,
    1317 .small-pull-0 {
    1318   position: static;
    1319   margin-left: 0;
    1320   margin-right: 0; }
     1167.small-order-1 {
     1168  -webkit-order: 1;
     1169      -ms-flex-order: 1;
     1170          order: 1; }
     1171
     1172.small-order-2 {
     1173  -webkit-order: 2;
     1174      -ms-flex-order: 2;
     1175          order: 2; }
     1176
     1177.small-order-3 {
     1178  -webkit-order: 3;
     1179      -ms-flex-order: 3;
     1180          order: 3; }
     1181
     1182.small-order-4 {
     1183  -webkit-order: 4;
     1184      -ms-flex-order: 4;
     1185          order: 4; }
     1186
     1187.small-order-5 {
     1188  -webkit-order: 5;
     1189      -ms-flex-order: 5;
     1190          order: 5; }
     1191
     1192.small-order-6 {
     1193  -webkit-order: 6;
     1194      -ms-flex-order: 6;
     1195          order: 6; }
     1196
     1197.small-collapse > .column, .small-collapse > .columns {
     1198  padding-left: 0;
     1199  padding-right: 0; }
     1200
     1201.small-uncollapse > .column, .small-uncollapse > .columns {
     1202  padding-left: 0.625rem;
     1203  padding-right: 0.625rem; }
    13211204
    13221205@media screen and (min-width: 40em) {
    13231206  .medium-1 {
    1324     width: 8.33333%; }
    1325   .medium-push-1 {
    1326     position: relative;
    1327     left: 8.33333%; }
    1328   .medium-pull-1 {
    1329     position: relative;
    1330     left: -8.33333%; }
     1207    -webkit-flex: 0 0 8.33333%;
     1208        -ms-flex: 0 0 8.33333%;
     1209            flex: 0 0 8.33333%;
     1210    max-width: 8.33333%; }
    13311211  .medium-offset-0 {
    13321212    margin-left: 0%; }
    13331213  .medium-2 {
    1334     width: 16.66667%; }
    1335   .medium-push-2 {
    1336     position: relative;
    1337     left: 16.66667%; }
    1338   .medium-pull-2 {
    1339     position: relative;
    1340     left: -16.66667%; }
     1214    -webkit-flex: 0 0 16.66667%;
     1215        -ms-flex: 0 0 16.66667%;
     1216            flex: 0 0 16.66667%;
     1217    max-width: 16.66667%; }
    13411218  .medium-offset-1 {
    13421219    margin-left: 8.33333%; }
    13431220  .medium-3 {
    1344     width: 25%; }
    1345   .medium-push-3 {
    1346     position: relative;
    1347     left: 25%; }
    1348   .medium-pull-3 {
    1349     position: relative;
    1350     left: -25%; }
     1221    -webkit-flex: 0 0 25%;
     1222        -ms-flex: 0 0 25%;
     1223            flex: 0 0 25%;
     1224    max-width: 25%; }
    13511225  .medium-offset-2 {
    13521226    margin-left: 16.66667%; }
    13531227  .medium-4 {
    1354     width: 33.33333%; }
    1355   .medium-push-4 {
    1356     position: relative;
    1357     left: 33.33333%; }
    1358   .medium-pull-4 {
    1359     position: relative;
    1360     left: -33.33333%; }
     1228    -webkit-flex: 0 0 33.33333%;
     1229        -ms-flex: 0 0 33.33333%;
     1230            flex: 0 0 33.33333%;
     1231    max-width: 33.33333%; }
    13611232  .medium-offset-3 {
    13621233    margin-left: 25%; }
    13631234  .medium-5 {
    1364     width: 41.66667%; }
    1365   .medium-push-5 {
    1366     position: relative;
    1367     left: 41.66667%; }
    1368   .medium-pull-5 {
    1369     position: relative;
    1370     left: -41.66667%; }
     1235    -webkit-flex: 0 0 41.66667%;
     1236        -ms-flex: 0 0 41.66667%;
     1237            flex: 0 0 41.66667%;
     1238    max-width: 41.66667%; }
    13711239  .medium-offset-4 {
    13721240    margin-left: 33.33333%; }
    13731241  .medium-6 {
    1374     width: 50%; }
    1375   .medium-push-6 {
    1376     position: relative;
    1377     left: 50%; }
    1378   .medium-pull-6 {
    1379     position: relative;
    1380     left: -50%; }
     1242    -webkit-flex: 0 0 50%;
     1243        -ms-flex: 0 0 50%;
     1244            flex: 0 0 50%;
     1245    max-width: 50%; }
    13811246  .medium-offset-5 {
    13821247    margin-left: 41.66667%; }
    13831248  .medium-7 {
    1384     width: 58.33333%; }
    1385   .medium-push-7 {
    1386     position: relative;
    1387     left: 58.33333%; }
    1388   .medium-pull-7 {
    1389     position: relative;
    1390     left: -58.33333%; }
     1249    -webkit-flex: 0 0 58.33333%;
     1250        -ms-flex: 0 0 58.33333%;
     1251            flex: 0 0 58.33333%;
     1252    max-width: 58.33333%; }
    13911253  .medium-offset-6 {
    13921254    margin-left: 50%; }
    13931255  .medium-8 {
    1394     width: 66.66667%; }
    1395   .medium-push-8 {
    1396     position: relative;
    1397     left: 66.66667%; }
    1398   .medium-pull-8 {
    1399     position: relative;
    1400     left: -66.66667%; }
     1256    -webkit-flex: 0 0 66.66667%;
     1257        -ms-flex: 0 0 66.66667%;
     1258            flex: 0 0 66.66667%;
     1259    max-width: 66.66667%; }
    14011260  .medium-offset-7 {
    14021261    margin-left: 58.33333%; }
    14031262  .medium-9 {
    1404     width: 75%; }
    1405   .medium-push-9 {
    1406     position: relative;
    1407     left: 75%; }
    1408   .medium-pull-9 {
    1409     position: relative;
    1410     left: -75%; }
     1263    -webkit-flex: 0 0 75%;
     1264        -ms-flex: 0 0 75%;
     1265            flex: 0 0 75%;
     1266    max-width: 75%; }
    14111267  .medium-offset-8 {
    14121268    margin-left: 66.66667%; }
    14131269  .medium-10 {
    1414     width: 83.33333%; }
    1415   .medium-push-10 {
    1416     position: relative;
    1417     left: 83.33333%; }
    1418   .medium-pull-10 {
    1419     position: relative;
    1420     left: -83.33333%; }
     1270    -webkit-flex: 0 0 83.33333%;
     1271        -ms-flex: 0 0 83.33333%;
     1272            flex: 0 0 83.33333%;
     1273    max-width: 83.33333%; }
    14211274  .medium-offset-9 {
    14221275    margin-left: 75%; }
    14231276  .medium-11 {
    1424     width: 91.66667%; }
    1425   .medium-push-11 {
    1426     position: relative;
    1427     left: 91.66667%; }
    1428   .medium-pull-11 {
    1429     position: relative;
    1430     left: -91.66667%; }
     1277    -webkit-flex: 0 0 91.66667%;
     1278        -ms-flex: 0 0 91.66667%;
     1279            flex: 0 0 91.66667%;
     1280    max-width: 91.66667%; }
    14311281  .medium-offset-10 {
    14321282    margin-left: 83.33333%; }
    14331283  .medium-12 {
    1434     width: 100%; }
     1284    -webkit-flex: 0 0 100%;
     1285        -ms-flex: 0 0 100%;
     1286            flex: 0 0 100%;
     1287    max-width: 100%; }
    14351288  .medium-offset-11 {
    14361289    margin-left: 91.66667%; }
    1437   .medium-up-1 > .column, .medium-up-1 > .columns {
    1438     width: 100%;
    1439     float: left; }
    1440     .medium-up-1 > .column:nth-of-type(1n), .medium-up-1 > .columns:nth-of-type(1n) {
    1441       clear: none; }
    1442     .medium-up-1 > .column:nth-of-type(1n+1), .medium-up-1 > .columns:nth-of-type(1n+1) {
    1443       clear: both; }
    1444     .medium-up-1 > .column:last-child, .medium-up-1 > .columns:last-child {
    1445       float: left; }
    1446   .medium-up-2 > .column, .medium-up-2 > .columns {
    1447     width: 50%;
    1448     float: left; }
    1449     .medium-up-2 > .column:nth-of-type(1n), .medium-up-2 > .columns:nth-of-type(1n) {
    1450       clear: none; }
    1451     .medium-up-2 > .column:nth-of-type(2n+1), .medium-up-2 > .columns:nth-of-type(2n+1) {
    1452       clear: both; }
    1453     .medium-up-2 > .column:last-child, .medium-up-2 > .columns:last-child {
    1454       float: left; }
    1455   .medium-up-3 > .column, .medium-up-3 > .columns {
    1456     width: 33.33333%;
    1457     float: left; }
    1458     .medium-up-3 > .column:nth-of-type(1n), .medium-up-3 > .columns:nth-of-type(1n) {
    1459       clear: none; }
    1460     .medium-up-3 > .column:nth-of-type(3n+1), .medium-up-3 > .columns:nth-of-type(3n+1) {
    1461       clear: both; }
    1462     .medium-up-3 > .column:last-child, .medium-up-3 > .columns:last-child {
    1463       float: left; }
    1464   .medium-up-4 > .column, .medium-up-4 > .columns {
    1465     width: 25%;
    1466     float: left; }
    1467     .medium-up-4 > .column:nth-of-type(1n), .medium-up-4 > .columns:nth-of-type(1n) {
    1468       clear: none; }
    1469     .medium-up-4 > .column:nth-of-type(4n+1), .medium-up-4 > .columns:nth-of-type(4n+1) {
    1470       clear: both; }
    1471     .medium-up-4 > .column:last-child, .medium-up-4 > .columns:last-child {
    1472       float: left; }
    1473   .medium-up-5 > .column, .medium-up-5 > .columns {
    1474     width: 20%;
    1475     float: left; }
    1476     .medium-up-5 > .column:nth-of-type(1n), .medium-up-5 > .columns:nth-of-type(1n) {
    1477       clear: none; }
    1478     .medium-up-5 > .column:nth-of-type(5n+1), .medium-up-5 > .columns:nth-of-type(5n+1) {
    1479       clear: both; }
    1480     .medium-up-5 > .column:last-child, .medium-up-5 > .columns:last-child {
    1481       float: left; }
    1482   .medium-up-6 > .column, .medium-up-6 > .columns {
    1483     width: 16.66667%;
    1484     float: left; }
    1485     .medium-up-6 > .column:nth-of-type(1n), .medium-up-6 > .columns:nth-of-type(1n) {
    1486       clear: none; }
    1487     .medium-up-6 > .column:nth-of-type(6n+1), .medium-up-6 > .columns:nth-of-type(6n+1) {
    1488       clear: both; }
    1489     .medium-up-6 > .column:last-child, .medium-up-6 > .columns:last-child {
    1490       float: left; }
    1491   .medium-up-7 > .column, .medium-up-7 > .columns {
    1492     width: 14.28571%;
    1493     float: left; }
    1494     .medium-up-7 > .column:nth-of-type(1n), .medium-up-7 > .columns:nth-of-type(1n) {
    1495       clear: none; }
    1496     .medium-up-7 > .column:nth-of-type(7n+1), .medium-up-7 > .columns:nth-of-type(7n+1) {
    1497       clear: both; }
    1498     .medium-up-7 > .column:last-child, .medium-up-7 > .columns:last-child {
    1499       float: left; }
    1500   .medium-up-8 > .column, .medium-up-8 > .columns {
    1501     width: 12.5%;
    1502     float: left; }
    1503     .medium-up-8 > .column:nth-of-type(1n), .medium-up-8 > .columns:nth-of-type(1n) {
    1504       clear: none; }
    1505     .medium-up-8 > .column:nth-of-type(8n+1), .medium-up-8 > .columns:nth-of-type(8n+1) {
    1506       clear: both; }
    1507     .medium-up-8 > .column:last-child, .medium-up-8 > .columns:last-child {
    1508       float: left; }
    1509   .column.medium-centered, .medium-centered.columns {
    1510     float: none;
    1511     margin-left: auto;
    1512     margin-right: auto; }
    1513   .medium-uncenter,
    1514   .medium-push-0,
    1515   .medium-pull-0 {
    1516     position: static;
    1517     margin-left: 0;
    1518     margin-right: 0; } }
     1290  .medium-order-1 {
     1291    -webkit-order: 1;
     1292        -ms-flex-order: 1;
     1293            order: 1; }
     1294  .medium-order-2 {
     1295    -webkit-order: 2;
     1296        -ms-flex-order: 2;
     1297            order: 2; }
     1298  .medium-order-3 {
     1299    -webkit-order: 3;
     1300        -ms-flex-order: 3;
     1301            order: 3; }
     1302  .medium-order-4 {
     1303    -webkit-order: 4;
     1304        -ms-flex-order: 4;
     1305            order: 4; }
     1306  .medium-order-5 {
     1307    -webkit-order: 5;
     1308        -ms-flex-order: 5;
     1309            order: 5; }
     1310  .medium-order-6 {
     1311    -webkit-order: 6;
     1312        -ms-flex-order: 6;
     1313            order: 6; } }
     1314
     1315@media screen and (min-width: 40em) and (min-width: 40em) {
     1316  .medium-expand {
     1317    -webkit-flex: 1 1 0px;
     1318        -ms-flex: 1 1 0px;
     1319            flex: 1 1 0px; } }
     1320
     1321.row.medium-unstack .column, .row.medium-unstack .columns {
     1322  -webkit-flex: 0 0 100%;
     1323      -ms-flex: 0 0 100%;
     1324          flex: 0 0 100%; }
     1325  @media screen and (min-width: 40em) {
     1326    .row.medium-unstack .column, .row.medium-unstack .columns {
     1327      -webkit-flex: 1 1 0px;
     1328          -ms-flex: 1 1 0px;
     1329              flex: 1 1 0px; } }
     1330
     1331@media screen and (min-width: 40em) {
     1332  .medium-collapse > .column, .medium-collapse > .columns {
     1333    padding-left: 0;
     1334    padding-right: 0; }
     1335  .medium-uncollapse > .column, .medium-uncollapse > .columns {
     1336    padding-left: 0.9375rem;
     1337    padding-right: 0.9375rem; } }
    15191338
    15201339@media screen and (min-width: 64em) {
    15211340  .large-1 {
    1522     width: 8.33333%; }
    1523   .large-push-1 {
    1524     position: relative;
    1525     left: 8.33333%; }
    1526   .large-pull-1 {
    1527     position: relative;
    1528     left: -8.33333%; }
     1341    -webkit-flex: 0 0 8.33333%;
     1342        -ms-flex: 0 0 8.33333%;
     1343            flex: 0 0 8.33333%;
     1344    max-width: 8.33333%; }
    15291345  .large-offset-0 {
    15301346    margin-left: 0%; }
    15311347  .large-2 {
    1532     width: 16.66667%; }
    1533   .large-push-2 {
    1534     position: relative;
    1535     left: 16.66667%; }
    1536   .large-pull-2 {
    1537     position: relative;
    1538     left: -16.66667%; }
     1348    -webkit-flex: 0 0 16.66667%;
     1349        -ms-flex: 0 0 16.66667%;
     1350            flex: 0 0 16.66667%;
     1351    max-width: 16.66667%; }
    15391352  .large-offset-1 {
    15401353    margin-left: 8.33333%; }
    15411354  .large-3 {
    1542     width: 25%; }
    1543   .large-push-3 {
    1544     position: relative;
    1545     left: 25%; }
    1546   .large-pull-3 {
    1547     position: relative;
    1548     left: -25%; }
     1355    -webkit-flex: 0 0 25%;
     1356        -ms-flex: 0 0 25%;
     1357            flex: 0 0 25%;
     1358    max-width: 25%; }
    15491359  .large-offset-2 {
    15501360    margin-left: 16.66667%; }
    15511361  .large-4 {
    1552     width: 33.33333%; }
    1553   .large-push-4 {
    1554     position: relative;
    1555     left: 33.33333%; }
    1556   .large-pull-4 {
    1557     position: relative;
    1558     left: -33.33333%; }
     1362    -webkit-flex: 0 0 33.33333%;
     1363        -ms-flex: 0 0 33.33333%;
     1364            flex: 0 0 33.33333%;
     1365    max-width: 33.33333%; }
    15591366  .large-offset-3 {
    15601367    margin-left: 25%; }
    15611368  .large-5 {
    1562     width: 41.66667%; }
    1563   .large-push-5 {
    1564     position: relative;
    1565     left: 41.66667%; }
    1566   .large-pull-5 {
    1567     position: relative;
    1568     left: -41.66667%; }
     1369    -webkit-flex: 0 0 41.66667%;
     1370        -ms-flex: 0 0 41.66667%;
     1371            flex: 0 0 41.66667%;
     1372    max-width: 41.66667%; }
    15691373  .large-offset-4 {
    15701374    margin-left: 33.33333%; }
    15711375  .large-6 {
    1572     width: 50%; }
    1573   .large-push-6 {
    1574     position: relative;
    1575     left: 50%; }
    1576   .large-pull-6 {
    1577     position: relative;
    1578     left: -50%; }
     1376    -webkit-flex: 0 0 50%;
     1377        -ms-flex: 0 0 50%;
     1378            flex: 0 0 50%;
     1379    max-width: 50%; }
    15791380  .large-offset-5 {
    15801381    margin-left: 41.66667%; }
    15811382  .large-7 {
    1582     width: 58.33333%; }
    1583   .large-push-7 {
    1584     position: relative;
    1585     left: 58.33333%; }
    1586   .large-pull-7 {
    1587     position: relative;
    1588     left: -58.33333%; }
     1383    -webkit-flex: 0 0 58.33333%;
     1384        -ms-flex: 0 0 58.33333%;
     1385            flex: 0 0 58.33333%;
     1386    max-width: 58.33333%; }
    15891387  .large-offset-6 {
    15901388    margin-left: 50%; }
    15911389  .large-8 {
    1592     width: 66.66667%; }
    1593   .large-push-8 {
    1594     position: relative;
    1595     left: 66.66667%; }
    1596   .large-pull-8 {
    1597     position: relative;
    1598     left: -66.66667%; }
     1390    -webkit-flex: 0 0 66.66667%;
     1391        -ms-flex: 0 0 66.66667%;
     1392            flex: 0 0 66.66667%;
     1393    max-width: 66.66667%; }
    15991394  .large-offset-7 {
    16001395    margin-left: 58.33333%; }
    16011396  .large-9 {
    1602     width: 75%; }
    1603   .large-push-9 {
    1604     position: relative;
    1605     left: 75%; }
    1606   .large-pull-9 {
    1607     position: relative;
    1608     left: -75%; }
     1397    -webkit-flex: 0 0 75%;
     1398        -ms-flex: 0 0 75%;
     1399            flex: 0 0 75%;
     1400    max-width: 75%; }
    16091401  .large-offset-8 {
    16101402    margin-left: 66.66667%; }
    16111403  .large-10 {
    1612     width: 83.33333%; }
    1613   .large-push-10 {
    1614     position: relative;
    1615     left: 83.33333%; }
    1616   .large-pull-10 {
    1617     position: relative;
    1618     left: -83.33333%; }
     1404    -webkit-flex: 0 0 83.33333%;
     1405        -ms-flex: 0 0 83.33333%;
     1406            flex: 0 0 83.33333%;
     1407    max-width: 83.33333%; }
    16191408  .large-offset-9 {
    16201409    margin-left: 75%; }
    16211410  .large-11 {
    1622     width: 91.66667%; }
    1623   .large-push-11 {
    1624     position: relative;
    1625     left: 91.66667%; }
    1626   .large-pull-11 {
    1627     position: relative;
    1628     left: -91.66667%; }
     1411    -webkit-flex: 0 0 91.66667%;
     1412        -ms-flex: 0 0 91.66667%;
     1413            flex: 0 0 91.66667%;
     1414    max-width: 91.66667%; }
    16291415  .large-offset-10 {
    16301416    margin-left: 83.33333%; }
    16311417  .large-12 {
    1632     width: 100%; }
     1418    -webkit-flex: 0 0 100%;
     1419        -ms-flex: 0 0 100%;
     1420            flex: 0 0 100%;
     1421    max-width: 100%; }
    16331422  .large-offset-11 {
    16341423    margin-left: 91.66667%; }
    1635   .large-up-1 > .column, .large-up-1 > .columns {
    1636     width: 100%;
    1637     float: left; }
    1638     .large-up-1 > .column:nth-of-type(1n), .large-up-1 > .columns:nth-of-type(1n) {
    1639       clear: none; }
    1640     .large-up-1 > .column:nth-of-type(1n+1), .large-up-1 > .columns:nth-of-type(1n+1) {
    1641       clear: both; }
    1642     .large-up-1 > .column:last-child, .large-up-1 > .columns:last-child {
    1643       float: left; }
    1644   .large-up-2 > .column, .large-up-2 > .columns {
    1645     width: 50%;
    1646     float: left; }
    1647     .large-up-2 > .column:nth-of-type(1n), .large-up-2 > .columns:nth-of-type(1n) {
    1648       clear: none; }
    1649     .large-up-2 > .column:nth-of-type(2n+1), .large-up-2 > .columns:nth-of-type(2n+1) {
    1650       clear: both; }
    1651     .large-up-2 > .column:last-child, .large-up-2 > .columns:last-child {
    1652       float: left; }
    1653   .large-up-3 > .column, .large-up-3 > .columns {
    1654     width: 33.33333%;
    1655     float: left; }
    1656     .large-up-3 > .column:nth-of-type(1n), .large-up-3 > .columns:nth-of-type(1n) {
    1657       clear: none; }
    1658     .large-up-3 > .column:nth-of-type(3n+1), .large-up-3 > .columns:nth-of-type(3n+1) {
    1659       clear: both; }
    1660     .large-up-3 > .column:last-child, .large-up-3 > .columns:last-child {
    1661       float: left; }
    1662   .large-up-4 > .column, .large-up-4 > .columns {
    1663     width: 25%;
    1664     float: left; }
    1665     .large-up-4 > .column:nth-of-type(1n), .large-up-4 > .columns:nth-of-type(1n) {
    1666       clear: none; }
    1667     .large-up-4 > .column:nth-of-type(4n+1), .large-up-4 > .columns:nth-of-type(4n+1) {
    1668       clear: both; }
    1669     .large-up-4 > .column:last-child, .large-up-4 > .columns:last-child {
    1670       float: left; }
    1671   .large-up-5 > .column, .large-up-5 > .columns {
    1672     width: 20%;
    1673     float: left; }
    1674     .large-up-5 > .column:nth-of-type(1n), .large-up-5 > .columns:nth-of-type(1n) {
    1675       clear: none; }
    1676     .large-up-5 > .column:nth-of-type(5n+1), .large-up-5 > .columns:nth-of-type(5n+1) {
    1677       clear: both; }
    1678     .large-up-5 > .column:last-child, .large-up-5 > .columns:last-child {
    1679       float: left; }
    1680   .large-up-6 > .column, .large-up-6 > .columns {
    1681     width: 16.66667%;
    1682     float: left; }
    1683     .large-up-6 > .column:nth-of-type(1n), .large-up-6 > .columns:nth-of-type(1n) {
    1684       clear: none; }
    1685     .large-up-6 > .column:nth-of-type(6n+1), .large-up-6 > .columns:nth-of-type(6n+1) {
    1686       clear: both; }
    1687     .large-up-6 > .column:last-child, .large-up-6 > .columns:last-child {
    1688       float: left; }
    1689   .large-up-7 > .column, .large-up-7 > .columns {
    1690     width: 14.28571%;
    1691     float: left; }
    1692     .large-up-7 > .column:nth-of-type(1n), .large-up-7 > .columns:nth-of-type(1n) {
    1693       clear: none; }
    1694     .large-up-7 > .column:nth-of-type(7n+1), .large-up-7 > .columns:nth-of-type(7n+1) {
    1695       clear: both; }
    1696     .large-up-7 > .column:last-child, .large-up-7 > .columns:last-child {
    1697       float: left; }
    1698   .large-up-8 > .column, .large-up-8 > .columns {
    1699     width: 12.5%;
    1700     float: left; }
    1701     .large-up-8 > .column:nth-of-type(1n), .large-up-8 > .columns:nth-of-type(1n) {
    1702       clear: none; }
    1703     .large-up-8 > .column:nth-of-type(8n+1), .large-up-8 > .columns:nth-of-type(8n+1) {
    1704       clear: both; }
    1705     .large-up-8 > .column:last-child, .large-up-8 > .columns:last-child {
    1706       float: left; }
    1707   .column.large-centered, .large-centered.columns {
    1708     float: none;
    1709     margin-left: auto;
    1710     margin-right: auto; }
    1711   .large-uncenter,
    1712   .large-push-0,
    1713   .large-pull-0 {
    1714     position: static;
    1715     margin-left: 0;
    1716     margin-right: 0; } }
     1424  .large-order-1 {
     1425    -webkit-order: 1;
     1426        -ms-flex-order: 1;
     1427            order: 1; }
     1428  .large-order-2 {
     1429    -webkit-order: 2;
     1430        -ms-flex-order: 2;
     1431            order: 2; }
     1432  .large-order-3 {
     1433    -webkit-order: 3;
     1434        -ms-flex-order: 3;
     1435            order: 3; }
     1436  .large-order-4 {
     1437    -webkit-order: 4;
     1438        -ms-flex-order: 4;
     1439            order: 4; }
     1440  .large-order-5 {
     1441    -webkit-order: 5;
     1442        -ms-flex-order: 5;
     1443            order: 5; }
     1444  .large-order-6 {
     1445    -webkit-order: 6;
     1446        -ms-flex-order: 6;
     1447            order: 6; } }
     1448
     1449@media screen and (min-width: 64em) and (min-width: 64em) {
     1450  .large-expand {
     1451    -webkit-flex: 1 1 0px;
     1452        -ms-flex: 1 1 0px;
     1453            flex: 1 1 0px; } }
     1454
     1455.row.large-unstack .column, .row.large-unstack .columns {
     1456  -webkit-flex: 0 0 100%;
     1457      -ms-flex: 0 0 100%;
     1458          flex: 0 0 100%; }
     1459  @media screen and (min-width: 64em) {
     1460    .row.large-unstack .column, .row.large-unstack .columns {
     1461      -webkit-flex: 1 1 0px;
     1462          -ms-flex: 1 1 0px;
     1463              flex: 1 1 0px; } }
     1464
     1465@media screen and (min-width: 64em) {
     1466  .large-collapse > .column, .large-collapse > .columns {
     1467    padding-left: 0;
     1468    padding-right: 0; }
     1469  .large-uncollapse > .column, .large-uncollapse > .columns {
     1470    padding-left: 0.9375rem;
     1471    padding-right: 0.9375rem; } }
     1472
     1473.shrink {
     1474  -webkit-flex: 0 0 auto;
     1475      -ms-flex: 0 0 auto;
     1476          flex: 0 0 auto;
     1477  max-width: 100%; }
     1478
     1479.row.align-right {
     1480  -webkit-justify-content: flex-end;
     1481      -ms-flex-pack: end;
     1482          justify-content: flex-end; }
     1483
     1484.row.align-center {
     1485  -webkit-justify-content: center;
     1486      -ms-flex-pack: center;
     1487          justify-content: center; }
     1488
     1489.row.align-justify {
     1490  -webkit-justify-content: space-between;
     1491      -ms-flex-pack: justify;
     1492          justify-content: space-between; }
     1493
     1494.row.align-spaced {
     1495  -webkit-justify-content: space-around;
     1496      -ms-flex-pack: distribute;
     1497          justify-content: space-around; }
     1498
     1499.row.align-top {
     1500  -webkit-align-items: flex-start;
     1501      -ms-flex-align: start;
     1502          align-items: flex-start; }
     1503
     1504.column.align-top, .align-top.columns {
     1505  -webkit-align-self: flex-start;
     1506      -ms-flex-item-align: start;
     1507          align-self: flex-start; }
     1508
     1509.row.align-bottom {
     1510  -webkit-align-items: flex-end;
     1511      -ms-flex-align: end;
     1512          align-items: flex-end; }
     1513
     1514.column.align-bottom, .align-bottom.columns {
     1515  -webkit-align-self: flex-end;
     1516      -ms-flex-item-align: end;
     1517          align-self: flex-end; }
     1518
     1519.row.align-middle {
     1520  -webkit-align-items: center;
     1521      -ms-flex-align: center;
     1522          align-items: center; }
     1523
     1524.column.align-middle, .align-middle.columns {
     1525  -webkit-align-self: center;
     1526      -ms-flex-item-align: center;
     1527          align-self: center; }
     1528
     1529.row.align-stretch {
     1530  -webkit-align-items: stretch;
     1531      -ms-flex-align: stretch;
     1532          align-items: stretch; }
     1533
     1534.column.align-stretch, .align-stretch.columns {
     1535  -webkit-align-self: stretch;
     1536      -ms-flex-item-align: stretch;
     1537          align-self: stretch; }
    17171538
    17181539div,
     
    20451866  .button.secondary {
    20461867    background-color: #e9e9e9;
    2047     color: #000; }
     1868    color: #fff; }
    20481869    .button.secondary:hover, .button.secondary:focus {
    20491870      background-color: #bababa;
    2050       color: #000; }
     1871      color: #fff; }
    20511872  .button.success {
    20521873    background-color: #5da423;
     
    21171938    border-color: #fefefe transparent transparent;
    21181939    border-top-style: solid;
     1940    border-bottom-width: 0;
    21191941    position: relative;
    21201942    top: 0.4em;
     
    22142036  width: 100%;
    22152037  margin-bottom: 1rem; }
    2216   .input-group > *:first-child {
     2038  .input-group > :first-child {
    22172039    border-radius: 3px 0 0 3px; }
    2218   .input-group > *:last-child > * {
     2040  .input-group > :last-child > * {
    22192041    border-radius: 0 3px 3px 0; }
    22202042
     
    22312053  background: #e6e6e6;
    22322054  color: #0a0a0a;
    2233   border: 1px solid #cacaca; }
     2055  border: 1px solid #cacaca;
     2056  white-space: nowrap; }
    22342057  .input-group-label:first-child {
    22352058    border-right: 0; }
     
    22582081
    22592082legend {
    2260   margin-bottom: 0.5rem; }
     2083  margin-bottom: 0.5rem;
     2084  max-width: 100%; }
    22612085
    22622086.fieldset {
     
    22792103  line-height: normal;
    22802104  color: #0a0a0a;
    2281   background-color: #fafafa;
     2105  background-color: #fefefe;
    22822106  border-radius: 3px;
    22832107  -webkit-appearance: none;
     
    22852109  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="32" height="24" viewBox="0 0 32 24"><polygon points="0,0 32,0 16,24" style="fill: rgb%2851, 51, 51%29"></polygon></svg>');
    22862110  background-size: 9px 6px;
    2287   background-position: right 0.5rem center;
     2111  background-position: right center;
     2112  background-origin: content-box;
    22882113  background-repeat: no-repeat; }
    22892114  @media screen and (min-width: 0\0) {
     
    24222247  background: #fefefe;
    24232248  border: 1px solid #e6e6e6;
     2249  border-bottom: 0;
    24242250  border-radius: 3px;
    24252251  margin-left: 0; }
     
    24352261  .accordion-title:hover, .accordion-title:focus {
    24362262    background-color: #e6e6e6; }
    2437   :last-child > .accordion-title {
    2438     border-bottom-width: 0; }
    24392263  .accordion-title::before {
    24402264    content: '+';
     
    24472271
    24482272.accordion-content {
    2449   padding: 1.25rem 1rem;
     2273  padding: 1rem;
    24502274  display: none;
    2451   border-bottom: 1px solid #e6e6e6; }
     2275  border-bottom: 1px solid #e6e6e6;
     2276  background-color: #fefefe; }
    24522277
    24532278.is-accordion-submenu-parent > a {
     
    24612286    border-color: #2ba6cb transparent transparent;
    24622287    border-top-style: solid;
     2288    border-bottom-width: 0;
    24632289    position: absolute;
    24642290    top: 50%;
     
    25442370  .button-group.large {
    25452371    font-size: 1.25rem; }
    2546   .button-group.expanded .button:nth-last-child(2):first-child,
    2547   .button-group.expanded .button:nth-last-child(2):first-child ~ .button {
    2548     width: 50%; }
    2549   .button-group.expanded .button:nth-last-child(3):first-child,
    2550   .button-group.expanded .button:nth-last-child(3):first-child ~ .button {
    2551     width: 33.33333%; }
    2552   .button-group.expanded .button:nth-last-child(4):first-child,
    2553   .button-group.expanded .button:nth-last-child(4):first-child ~ .button {
    2554     width: 25%; }
    2555   .button-group.expanded .button:nth-last-child(5):first-child,
    2556   .button-group.expanded .button:nth-last-child(5):first-child ~ .button {
    2557     width: 20%; }
    2558   .button-group.expanded .button:nth-last-child(6):first-child,
    2559   .button-group.expanded .button:nth-last-child(6):first-child ~ .button {
    2560     width: 16.66667%; }
     2372  .button-group.expanded {
     2373    display: table;
     2374    table-layout: fixed;
     2375    width: 100%; }
     2376    .button-group.expanded::before, .button-group.expanded::after {
     2377      display: none; }
     2378    .button-group.expanded .button {
     2379      display: table-cell;
     2380      float: none; }
    25612381  .button-group.primary .button {
    25622382    background-color: #2ba6cb;
    2563     color: #fff; }
     2383    color: #fefefe; }
    25642384    .button-group.primary .button:hover, .button-group.primary .button:focus {
    25652385      background-color: #2285a2;
    2566       color: #fff; }
     2386      color: #fefefe; }
    25672387  .button-group.secondary .button {
    25682388    background-color: #e9e9e9;
    2569     color: #000; }
     2389    color: #0a0a0a; }
    25702390    .button-group.secondary .button:hover, .button-group.secondary .button:focus {
    25712391      background-color: #bababa;
    2572       color: #000; }
     2392      color: #0a0a0a; }
    25732393  .button-group.success .button {
    25742394    background-color: #5da423;
    2575     color: #fff; }
     2395    color: #fefefe; }
    25762396    .button-group.success .button:hover, .button-group.success .button:focus {
    25772397      background-color: #4a831c;
    2578       color: #fff; }
     2398      color: #fefefe; }
    25792399  .button-group.alert .button {
    25802400    background-color: #c60f13;
    2581     color: #fff; }
     2401    color: #fefefe; }
    25822402    .button-group.alert .button:hover, .button-group.alert .button:focus {
    25832403      background-color: #9e0c0f;
    2584       color: #fff; }
     2404      color: #fefefe; }
    25852405  .button-group.warning .button {
    25862406    background-color: #ffae00;
    2587     color: #fff; }
     2407    color: #fefefe; }
    25882408    .button-group.warning .button:hover, .button-group.warning .button:focus {
    25892409      background-color: #cc8b00;
    2590       color: #fff; }
     2410      color: #fefefe; }
    25912411  .button-group.stacked .button, .button-group.stacked-for-small .button {
    25922412    width: 100%; }
     
    25982418      .button-group.stacked-for-small .button:not(:last-child) {
    25992419        border-right: 1px solid #fefefe; } }
     2420  @media screen and (min-width: 0em) and (max-width: 39.9375em) {
     2421    .button-group.stacked-for-small.expanded {
     2422      display: block; }
     2423      .button-group.stacked-for-small.expanded .button {
     2424        display: block;
     2425        border-right: 0; } }
    26002426
    26012427.callout {
     
    26802506    border-color: transparent transparent transparent #2ba6cb;
    26812507    border-left-style: solid;
     2508    border-right-width: 0;
    26822509    position: absolute;
    26832510    top: 50%;
     
    26852512    right: 1rem; }
    26862513
    2687 .js-drilldown-back::before {
     2514.js-drilldown-back > a::before {
    26882515  content: '';
    26892516  display: block;
     
    26932520  border-color: transparent #2ba6cb transparent transparent;
    26942521  border-right-style: solid;
    2695   float: left;
    2696   margin-right: 0.75rem;
    2697   margin-left: 0.6rem;
    2698   margin-top: 14px; }
     2522  border-left-width: 0;
     2523  border-left-width: 0;
     2524  display: inline-block;
     2525  vertical-align: middle;
     2526  margin-right: 0.75rem; }
    26992527
    27002528.dropdown-pane {
    27012529  background-color: #fefefe;
    27022530  border: 1px solid #cacaca;
     2531  border-radius: 3px;
    27032532  display: block;
     2533  font-size: 1rem;
    27042534  padding: 1rem;
    27052535  position: absolute;
    27062536  visibility: hidden;
    27072537  width: 300px;
    2708   z-index: 10;
    2709   border-radius: 3px; }
     2538  z-index: 10; }
    27102539  .dropdown-pane.is-open {
    27112540    visibility: visible; }
     
    27232552  outline: 0; }
    27242553
    2725 .dropdown.menu .is-dropdown-submenu-parent {
     2554.no-js .dropdown.menu ul {
     2555  display: none; }
     2556
     2557.dropdown.menu:not(.vertical) .is-dropdown-submenu.first-sub {
     2558  top: 100%;
     2559  left: 0;
     2560  right: auto; }
     2561
     2562.dropdown.menu.align-right .is-dropdown-submenu.first-sub {
     2563  top: 100%;
     2564  left: auto;
     2565  right: 0; }
     2566
     2567.is-dropdown-menu.vertical {
     2568  width: 100px; }
     2569  .is-dropdown-menu.vertical.align-right {
     2570    float: right; }
     2571  .is-dropdown-menu.vertical > li .is-dropdown-submenu {
     2572    top: 0;
     2573    left: 100%; }
     2574
     2575.is-dropdown-submenu-parent {
    27262576  position: relative; }
    2727   .dropdown.menu .is-dropdown-submenu-parent a::after {
     2577  .is-dropdown-submenu-parent a::after {
    27282578    float: right;
    27292579    margin-top: 3px;
    27302580    margin-left: 10px; }
    2731   .dropdown.menu .is-dropdown-submenu-parent.is-down-arrow a {
     2581  .is-dropdown-submenu-parent.is-down-arrow a {
    27322582    padding-right: 1.5rem;
    27332583    position: relative; }
    2734   .dropdown.menu .is-dropdown-submenu-parent.is-down-arrow > a::after {
     2584  .is-dropdown-submenu-parent.is-down-arrow > a::after {
    27352585    content: '';
    27362586    display: block;
     
    27402590    border-color: #2ba6cb transparent transparent;
    27412591    border-top-style: solid;
     2592    border-bottom-width: 0;
    27422593    position: absolute;
    27432594    top: 0.825rem;
    27442595    right: 5px; }
    2745   .dropdown.menu .is-dropdown-submenu-parent.is-left-arrow > a::after {
     2596  .is-dropdown-submenu-parent.is-left-arrow > a::after {
    27462597    content: '';
    27472598    display: block;
     
    27512602    border-color: transparent #2ba6cb transparent transparent;
    27522603    border-right-style: solid;
     2604    border-left-width: 0;
    27532605    float: left;
    27542606    margin-left: 0;
    27552607    margin-right: 10px; }
    2756   .dropdown.menu .is-dropdown-submenu-parent.is-right-arrow > a::after {
     2608  .is-dropdown-submenu-parent.is-right-arrow > a::after {
    27572609    content: '';
    27582610    display: block;
     
    27612613    border: inset 5px;
    27622614    border-color: transparent transparent transparent #2ba6cb;
    2763     border-left-style: solid; }
    2764   .dropdown.menu .is-dropdown-submenu-parent.is-left-arrow.opens-inner .submenu {
     2615    border-left-style: solid;
     2616    border-right-width: 0; }
     2617  .is-dropdown-submenu-parent.is-left-arrow.opens-inner .is-dropdown-submenu {
    27652618    right: 0;
    27662619    left: auto; }
    2767   .dropdown.menu .is-dropdown-submenu-parent.is-right-arrow.opens-inner .submenu {
     2620  .is-dropdown-submenu-parent.is-right-arrow.opens-inner .is-dropdown-submenu {
    27682621    left: 0;
    27692622    right: auto; }
    2770   .dropdown.menu .is-dropdown-submenu-parent.opens-inner .submenu {
     2623  .is-dropdown-submenu-parent.opens-inner .is-dropdown-submenu {
    27712624    top: 100%; }
    2772 
    2773 .no-js .dropdown.menu ul {
    2774   display: none; }
    2775 
    2776 .dropdown.menu .submenu {
     2625  .is-dropdown-submenu-parent.opens-left .is-dropdown-submenu {
     2626    left: auto;
     2627    right: 100%; }
     2628
     2629.is-dropdown-submenu {
    27772630  display: none;
    27782631  position: absolute;
     
    27832636  background: #fefefe;
    27842637  border: 1px solid #cacaca; }
    2785   .dropdown.menu .submenu > li {
     2638  .is-dropdown-submenu .is-dropdown-submenu {
     2639    margin-top: -1px; }
     2640  .is-dropdown-submenu > li {
    27862641    width: 100%; }
    2787   .dropdown.menu .submenu.first-sub {
    2788     top: 100%;
    2789     left: 0;
    2790     right: auto; }
    2791   .dropdown.menu .submenu:not(.js-dropdown-nohover) > .is-dropdown-submenu-parent:hover > .dropdown.menu .submenu, .dropdown.menu .submenu.js-dropdown-active {
     2642  .is-dropdown-submenu:not(.js-dropdown-nohover) > .is-dropdown-submenu-parent:hover > .is-dropdown-submenu, .is-dropdown-submenu.js-dropdown-active {
    27922643    display: block; }
    2793 
    2794 .dropdown.menu .is-dropdown-submenu-parent.opens-left .submenu {
    2795   left: auto;
    2796   right: 100%; }
    2797 
    2798 .dropdown.menu.align-right .submenu.first-sub {
    2799   top: 100%;
    2800   left: auto;
    2801   right: 0; }
    2802 
    2803 .is-dropdown-menu.vertical {
    2804   width: 100px; }
    2805   .is-dropdown-menu.vertical.align-right {
    2806     float: right; }
    2807   .is-dropdown-menu.vertical > li .submenu {
    2808     top: 0;
    2809     left: 100%; }
    28102644
    28112645.flex-video {
     
    28702704  .media-object-section:first-child {
    28712705    padding-right: 1rem; }
    2872   .media-object-section:last-child:not( + .media-object-section:first-child) {
     2706  .media-object-section:last-child:not(:nth-child(2)) {
    28732707    padding-left: 1rem; }
    28742708  .media-object-section.middle {
     
    28852719    [data-whatinput='mouse'] .menu > li {
    28862720      outline: 0; }
    2887   .menu > li:not(.menu-text) > a {
     2721  .menu > li > a {
    28882722    display: block;
    28892723    padding: 0.7rem 1rem;
     
    29162750    .menu.large-vertical > li {
    29172751      display: block; } }
     2752  .menu.simple li {
     2753    line-height: 1;
     2754    display: inline-block;
     2755    margin-right: 1rem; }
    29182756  .menu.simple a {
    2919     padding: 0;
    2920     margin-right: 1rem; }
     2757    padding: 0; }
    29212758  .menu.align-right > li {
    29222759    float: right; }
    29232760  .menu.expanded {
    29242761    display: table;
     2762    table-layout: fixed;
    29252763    width: 100%; }
    2926     .menu.expanded > li:nth-last-child(2):first-child,
    2927     .menu.expanded > li:nth-last-child(2):first-child ~ li {
    2928       width: 50%; }
    2929     .menu.expanded > li:nth-last-child(3):first-child,
    2930     .menu.expanded > li:nth-last-child(3):first-child ~ li {
    2931       width: 33.33333%; }
    2932     .menu.expanded > li:nth-last-child(4):first-child,
    2933     .menu.expanded > li:nth-last-child(4):first-child ~ li {
    2934       width: 25%; }
    2935     .menu.expanded > li:nth-last-child(5):first-child,
    2936     .menu.expanded > li:nth-last-child(5):first-child ~ li {
    2937       width: 20%; }
    2938     .menu.expanded > li:nth-last-child(6):first-child,
    2939     .menu.expanded > li:nth-last-child(6):first-child ~ li {
    2940       width: 16.66667%; }
    29412764    .menu.expanded > li:first-child:last-child {
    29422765      width: 100%; }
     
    30052828  cursor: pointer;
    30062829  transition: background 0.5s ease; }
    3007   .is-off-canvas-open .js-off-canvas-exit {
    3008     display: block; }
    30092830
    30102831.off-canvas {
     
    30142835  max-height: 100%;
    30152836  overflow-y: auto;
    3016   -webkit-transform: translateX(0px);
    3017       -ms-transform: translateX(0px);
    3018           transform: translateX(0px); }
     2837  -webkit-transform: translateX(0);
     2838      -ms-transform: translateX(0);
     2839          transform: translateX(0); }
    30192840  [data-whatinput='mouse'] .off-canvas {
    30202841    outline: 0; }
     
    31472968    font-size: 0.875rem;
    31482969    margin-right: 0.0625rem;
    3149     display: none;
    3150     border-radius: 3px; }
     2970    border-radius: 3px;
     2971    display: none; }
    31512972    .pagination li:last-child, .pagination li:first-child {
    31522973      display: inline-block; }
     
    32143035  background-color: #2ba6cb;
    32153036  border-radius: 3px; }
    3216   .progress-meter .progress-meter-text {
    3217     position: absolute;
    3218     top: 50%;
    3219     left: 50%;
    3220     -webkit-transform: translate(-50%, -50%);
    3221         -ms-transform: translate(-50%, -50%);
    3222             transform: translate(-50%, -50%);
    3223     margin: 0;
    3224     font-size: 0.75rem;
    3225     font-weight: bold;
    3226     color: #fefefe;
    3227     white-space: nowrap; }
     3037
     3038.progress-meter-text {
     3039  position: absolute;
     3040  top: 50%;
     3041  left: 50%;
     3042  -webkit-transform: translate(-50%, -50%);
     3043      -ms-transform: translate(-50%, -50%);
     3044          transform: translate(-50%, -50%);
     3045  position: absolute;
     3046  margin: 0;
     3047  font-size: 0.75rem;
     3048  font-weight: bold;
     3049  color: #fefefe;
     3050  white-space: nowrap;
     3051  border-radius: 3px; }
    32283052
    32293053.slider {
     
    33473171  padding: 1rem;
    33483172  border: 1px solid #cacaca;
    3349   margin: 100px auto 0 auto;
     3173  margin: 6.25rem auto 0;
    33503174  background-color: #fefefe;
    33513175  border-radius: 3px;
     
    33663190      width: 600px;
    33673191      max-width: 62.5rem; } }
    3368   .reveal.collapse {
    3369     padding: 0; }
    33703192  @media screen and (min-width: 40em) {
    33713193    .reveal .reveal {
     
    33733195      right: auto;
    33743196      margin: 0 auto; } }
     3197  .reveal.collapse {
     3198    padding: 0; }
    33753199  @media screen and (min-width: 40em) {
    33763200    .reveal.tiny {
     
    33943218    max-width: none;
    33953219    margin-left: 0;
    3396     border: none; }
     3220    border: 0; }
    33973221
    33983222.switch {
     
    35003324
    35013325table {
     3326  width: 100%;
    35023327  margin-bottom: 1rem;
    35033328  border-radius: 3px; }
    3504   thead,
    3505   tbody,
    3506   tfoot {
     3329  table thead,
     3330  table tbody,
     3331  table tfoot {
    35073332    border: 1px solid #f1f1f1;
    35083333    background-color: #fefefe; }
    3509   caption {
     3334  table caption {
    35103335    font-weight: bold;
    35113336    padding: 0.5rem 0.625rem 0.625rem; }
    3512   thead,
    3513   tfoot {
     3337  table thead,
     3338  table tfoot {
    35143339    background: #f8f8f8;
    35153340    color: #222222; }
    3516     thead tr,
    3517     tfoot tr {
     3341    table thead tr,
     3342    table tfoot tr {
    35183343      background: transparent; }
    3519     thead th,
    3520     thead td,
    3521     tfoot th,
    3522     tfoot td {
     3344    table thead th,
     3345    table thead td,
     3346    table tfoot th,
     3347    table tfoot td {
    35233348      padding: 0.5rem 0.625rem 0.625rem;
    35243349      font-weight: bold;
    35253350      text-align: left; }
    3526   tbody tr:nth-child(even) {
     3351  table tbody tr:nth-child(even) {
    35273352    background-color: #f1f1f1; }
    3528   tbody th,
    3529   tbody td {
     3353  table tbody th,
     3354  table tbody td {
    35303355    padding: 0.5rem 0.625rem 0.625rem; }
    35313356
     
    35453370  display: block;
    35463371  width: 100%;
    3547   overflow-y: scroll; }
     3372  overflow-x: auto; }
    35483373
    35493374table.hover tr:hover {
     
    35633388  .tabs::after {
    35643389    clear: both; }
    3565   .tabs.simple > li > a {
    3566     padding: 0; }
    3567     .tabs.simple > li > a:hover {
    3568       background: transparent; }
    3569   .tabs.vertical > li {
    3570     width: auto;
    3571     float: none;
    3572     display: block; }
    3573   .tabs.primary {
    3574     background: #2ba6cb; }
    3575     .tabs.primary > li > a {
    3576       color: #fefefe; }
    3577       .tabs.primary > li > a:hover, .tabs.primary > li > a:focus {
    3578         background: #299ec1; }
     3390
     3391.tabs.vertical > li {
     3392  width: auto;
     3393  float: none;
     3394  display: block; }
     3395
     3396.tabs.simple > li > a {
     3397  padding: 0; }
     3398  .tabs.simple > li > a:hover {
     3399    background: transparent; }
     3400
     3401.tabs.primary {
     3402  background: #2ba6cb; }
     3403  .tabs.primary > li > a {
     3404    color: #fefefe; }
     3405    .tabs.primary > li > a:hover, .tabs.primary > li > a:focus {
     3406      background: #299ec1; }
    35793407
    35803408.tabs-title {
     
    35963424  border: 1px solid #e6e6e6;
    35973425  border-top: 0; }
    3598   .tabs-content.vertical {
    3599     border: 1px solid #e6e6e6;
    3600     border-left: 0; }
     3426
     3427.tabs-content.vertical {
     3428  border: 1px solid #e6e6e6;
     3429  border-left: 0; }
    36013430
    36023431.tabs-panel {
     
    36643493    box-shadow: 0 7px 0 #cacaca, 0 14px 0 #cacaca; }
    36653494
     3495.menu-icon.dark {
     3496  position: relative;
     3497  display: inline-block;
     3498  vertical-align: middle;
     3499  cursor: pointer;
     3500  width: 20px;
     3501  height: 16px; }
     3502  .menu-icon.dark::after {
     3503    content: '';
     3504    position: absolute;
     3505    display: block;
     3506    width: 100%;
     3507    height: 2px;
     3508    background: #0a0a0a;
     3509    top: 0;
     3510    left: 0;
     3511    box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; }
     3512  .menu-icon.dark:hover::after {
     3513    background: #8a8a8a;
     3514    box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; }
     3515
    36663516.has-tip {
    36673517  border-bottom: dotted 1px #8a8a8a;
     
    36893539    border-color: transparent transparent #0a0a0a;
    36903540    border-bottom-style: solid;
     3541    border-top-width: 0;
    36913542    bottom: 100%;
    36923543    position: absolute;
     
    37033554    border-color: #0a0a0a transparent transparent;
    37043555    border-top-style: solid;
     3556    border-bottom-width: 0;
    37053557    top: 100%;
    37063558    bottom: auto; }
     
    37133565    border-color: transparent transparent transparent #0a0a0a;
    37143566    border-left-style: solid;
     3567    border-right-width: 0;
    37153568    bottom: auto;
    37163569    left: 100%;
     
    37273580    border-color: transparent #0a0a0a transparent transparent;
    37283581    border-right-style: solid;
     3582    border-left-width: 0;
    37293583    bottom: auto;
    37303584    left: auto;
     
    37453599  .top-bar ul {
    37463600    background-color: #e6e6e6; }
    3747   .top-bar a {
    3748     color: #2ba6cb; }
    37493601  .top-bar input {
    37503602    width: 200px;
     
    37543606
    37553607@media screen and (max-width: 39.9375em) {
     3608  .stacked-for-small .top-bar-title {
     3609    width: 100%; }
    37563610  .stacked-for-small .top-bar-right {
    37573611    width: 100%; }
     
    37603614
    37613615@media screen and (max-width: 63.9375em) {
     3616  .stacked-for-medium .top-bar-title {
     3617    width: 100%; }
    37623618  .stacked-for-medium .top-bar-right {
    37633619    width: 100%; }
     
    37663622
    37673623@media screen and (max-width: 74.9375em) {
     3624  .stacked-for-large .top-bar-title {
     3625    width: 100%; }
    37683626  .stacked-for-large .top-bar-right {
    37693627    width: 100%; }
     
    37713629    width: 100%; } }
    37723630
    3773 @media screen and (max-width: 39.9375em) {
     3631@media screen and (min-width: 0em) and (max-width: 39.9375em) {
     3632  .top-bar-title {
     3633    width: 100%; }
    37743634  .top-bar-right {
    37753635    width: 100%; }
     
    37773637    width: 100%; } }
    37783638
     3639.top-bar-title {
     3640  float: left;
     3641  margin-right: 1rem; }
     3642
    37793643.top-bar-left {
    37803644  float: left; }
     
    37833647  float: right; }
    37843648
    3785 /*# sourceMappingURL=foundation.css.map */
     3649/*# sourceMappingURL=foundation-flex.css.map */
  • _plugins_/foundation_6/trunk/lib/foundation-6/css/foundation.css

    r93809 r94957  
    22/**
    33 * Foundation for Sites by ZURB
    4  * Version 6.0.6
     4 * Version 6.1.2
    55 * foundation.zurb.com
    66 * Licensed under MIT Open Source
     
    907907/**
    908908   * Define consistent border, margin, and padding.
     909   * [NOTE] We don't enable this ruleset in Foundation, because we want the <fieldset> element to have plain styling.
    909910   */
    910 fieldset {
    911   border: 1px solid #c0c0c0;
    912   margin: 0 2px;
    913   padding: 0.35em 0.625em 0.75em; }
    914 
     911/* fieldset {
     912    border: 1px solid #c0c0c0;
     913    margin: 0 2px;
     914    padding: 0.35em 0.625em 0.75em;
     915  } */
    915916/**
    916917   * 1. Correct `color` not being inherited in IE 8/9/10/11.
     
    952953  font-family: "small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"; }
    953954
    954 html,
    955 body {
     955html {
    956956  font-size: 100%;
    957957  box-sizing: border-box; }
     
    10081008  border-radius: 3px;
    10091009  line-height: 1; }
     1010
     1011.is-visible {
     1012  display: block !important; }
     1013
     1014.is-hidden {
     1015  display: none !important; }
    10101016
    10111017.row {
     
    10221028    padding-right: 0; }
    10231029  .row .row {
    1024     margin-left: -0.9375rem;
    1025     margin-right: -0.9375rem; }
     1030    margin-left: -0.625rem;
     1031    margin-right: -0.625rem; }
     1032    @media screen and (min-width: 40em) {
     1033      .row .row {
     1034        margin-left: -0.9375rem;
     1035        margin-right: -0.9375rem; } }
    10261036    .row .row.collapse {
    10271037      margin-left: 0;
    10281038      margin-right: 0; }
    1029   .row.small-collapse > .column, .row.small-collapse > .columns {
    1030     padding-left: 0;
    1031     padding-right: 0; }
    1032   .row.small-uncollapse > .column, .row.small-uncollapse > .columns {
    1033     padding-left: 0.9375rem;
    1034     padding-right: 0.9375rem; }
     1039  .row.expanded {
     1040    max-width: none; }
     1041    .row.expanded .row {
     1042      margin-left: auto;
     1043      margin-right: auto; }
     1044
     1045.column, .columns {
     1046  padding-left: 0.625rem;
     1047  padding-right: 0.625rem;
     1048  width: 100%;
     1049  float: left; }
    10351050  @media screen and (min-width: 40em) {
    1036     .row.medium-collapse > .column, .row.medium-collapse > .columns {
    1037       padding-left: 0;
    1038       padding-right: 0; }
    1039     .row.medium-uncollapse > .column, .row.medium-uncollapse > .columns {
     1051    .column, .columns {
    10401052      padding-left: 0.9375rem;
    10411053      padding-right: 0.9375rem; } }
    1042   @media screen and (min-width: 64em) {
    1043     .row.large-collapse > .column, .row.large-collapse > .columns {
    1044       padding-left: 0;
    1045       padding-right: 0; }
    1046     .row.large-uncollapse > .column, .row.large-uncollapse > .columns {
    1047       padding-left: 0.9375rem;
    1048       padding-right: 0.9375rem; } }
    1049   .row.expanded {
    1050     max-width: none; }
    1051 
    1052 .column, .columns {
    1053   width: 100%;
    1054   float: left;
    1055   padding-left: 0.9375rem;
    1056   padding-right: 0.9375rem; }
    10571054  .column:last-child:not(:first-child), .columns:last-child:not(:first-child) {
    10581055    float: right; }
     
    13081305    float: left; }
    13091306
    1310 .column.small-centered, .small-centered.columns {
     1307.small-collapse > .column, .small-collapse > .columns {
     1308  padding-left: 0;
     1309  padding-right: 0; }
     1310
     1311.small-collapse .row {
     1312  margin-left: 0;
     1313  margin-right: 0; }
     1314
     1315.small-uncollapse > .column, .small-uncollapse > .columns {
     1316  padding-left: 0.625rem;
     1317  padding-right: 0.625rem; }
     1318
     1319.small-centered {
    13111320  float: none;
    13121321  margin-left: auto;
    13131322  margin-right: auto; }
    13141323
    1315 .small-uncenter,
     1324.small-uncentered,
    13161325.small-push-0,
    13171326.small-pull-0 {
    13181327  position: static;
    13191328  margin-left: 0;
    1320   margin-right: 0; }
     1329  margin-right: 0;
     1330  float: left; }
    13211331
    13221332@media screen and (min-width: 40em) {
     
    15071517    .medium-up-8 > .column:last-child, .medium-up-8 > .columns:last-child {
    15081518      float: left; }
    1509   .column.medium-centered, .medium-centered.columns {
     1519  .medium-collapse > .column, .medium-collapse > .columns {
     1520    padding-left: 0;
     1521    padding-right: 0; }
     1522  .medium-collapse .row {
     1523    margin-left: 0;
     1524    margin-right: 0; }
     1525  .medium-uncollapse > .column, .medium-uncollapse > .columns {
     1526    padding-left: 0.9375rem;
     1527    padding-right: 0.9375rem; }
     1528  .medium-centered {
    15101529    float: none;
    15111530    margin-left: auto;
    15121531    margin-right: auto; }
    1513   .medium-uncenter,
     1532  .medium-uncentered,
    15141533  .medium-push-0,
    15151534  .medium-pull-0 {
    15161535    position: static;
    15171536    margin-left: 0;
    1518     margin-right: 0; } }
     1537    margin-right: 0;
     1538    float: left; } }
    15191539
    15201540@media screen and (min-width: 64em) {
     
    17051725    .large-up-8 > .column:last-child, .large-up-8 > .columns:last-child {
    17061726      float: left; }
    1707   .column.large-centered, .large-centered.columns {
     1727  .large-collapse > .column, .large-collapse > .columns {
     1728    padding-left: 0;
     1729    padding-right: 0; }
     1730  .large-collapse .row {
     1731    margin-left: 0;
     1732    margin-right: 0; }
     1733  .large-uncollapse > .column, .large-uncollapse > .columns {
     1734    padding-left: 0.9375rem;
     1735    padding-right: 0.9375rem; }
     1736  .large-centered {
    17081737    float: none;
    17091738    margin-left: auto;
    17101739    margin-right: auto; }
    1711   .large-uncenter,
     1740  .large-uncentered,
    17121741  .large-push-0,
    17131742  .large-pull-0 {
    17141743    position: static;
    17151744    margin-left: 0;
    1716     margin-right: 0; } }
     1745    margin-right: 0;
     1746    float: left; } }
    17171747
    17181748div,
     
    20452075  .button.secondary {
    20462076    background-color: #e9e9e9;
    2047     color: #000; }
     2077    color: #fff; }
    20482078    .button.secondary:hover, .button.secondary:focus {
    20492079      background-color: #bababa;
    2050       color: #000; }
     2080      color: #fff; }
    20512081  .button.success {
    20522082    background-color: #5da423;
     
    21172147    border-color: #fefefe transparent transparent;
    21182148    border-top-style: solid;
     2149    border-bottom-width: 0;
    21192150    position: relative;
    21202151    top: 0.4em;
     
    22142245  width: 100%;
    22152246  margin-bottom: 1rem; }
    2216   .input-group > *:first-child {
     2247  .input-group > :first-child {
    22172248    border-radius: 3px 0 0 3px; }
    2218   .input-group > *:last-child > * {
     2249  .input-group > :last-child > * {
    22192250    border-radius: 0 3px 3px 0; }
    22202251
     
    22312262  background: #e6e6e6;
    22322263  color: #0a0a0a;
    2233   border: 1px solid #cacaca; }
     2264  border: 1px solid #cacaca;
     2265  white-space: nowrap; }
    22342266  .input-group-label:first-child {
    22352267    border-right: 0; }
     
    22582290
    22592291legend {
    2260   margin-bottom: 0.5rem; }
     2292  margin-bottom: 0.5rem;
     2293  max-width: 100%; }
    22612294
    22622295.fieldset {
     
    22792312  line-height: normal;
    22802313  color: #0a0a0a;
    2281   background-color: #fafafa;
     2314  background-color: #fefefe;
    22822315  border-radius: 3px;
    22832316  -webkit-appearance: none;
     
    22852318  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="32" height="24" viewBox="0 0 32 24"><polygon points="0,0 32,0 16,24" style="fill: rgb%2851, 51, 51%29"></polygon></svg>');
    22862319  background-size: 9px 6px;
    2287   background-position: right 0.5rem center;
     2320  background-position: right center;
     2321  background-origin: content-box;
    22882322  background-repeat: no-repeat; }
    22892323  @media screen and (min-width: 0\0) {
     
    24222456  background: #fefefe;
    24232457  border: 1px solid #e6e6e6;
     2458  border-bottom: 0;
    24242459  border-radius: 3px;
    24252460  margin-left: 0; }
     
    24352470  .accordion-title:hover, .accordion-title:focus {
    24362471    background-color: #e6e6e6; }
    2437   :last-child > .accordion-title {
    2438     border-bottom-width: 0; }
    24392472  .accordion-title::before {
    24402473    content: '+';
     
    24472480
    24482481.accordion-content {
    2449   padding: 1.25rem 1rem;
     2482  padding: 1rem;
    24502483  display: none;
    2451   border-bottom: 1px solid #e6e6e6; }
     2484  border-bottom: 1px solid #e6e6e6;
     2485  background-color: #fefefe; }
    24522486
    24532487.is-accordion-submenu-parent > a {
     
    24612495    border-color: #2ba6cb transparent transparent;
    24622496    border-top-style: solid;
     2497    border-bottom-width: 0;
    24632498    position: absolute;
    24642499    top: 50%;
     
    25442579  .button-group.large {
    25452580    font-size: 1.25rem; }
    2546   .button-group.expanded .button:nth-last-child(2):first-child,
    2547   .button-group.expanded .button:nth-last-child(2):first-child ~ .button {
    2548     width: 50%; }
    2549   .button-group.expanded .button:nth-last-child(3):first-child,
    2550   .button-group.expanded .button:nth-last-child(3):first-child ~ .button {
    2551     width: 33.33333%; }
    2552   .button-group.expanded .button:nth-last-child(4):first-child,
    2553   .button-group.expanded .button:nth-last-child(4):first-child ~ .button {
    2554     width: 25%; }
    2555   .button-group.expanded .button:nth-last-child(5):first-child,
    2556   .button-group.expanded .button:nth-last-child(5):first-child ~ .button {
    2557     width: 20%; }
    2558   .button-group.expanded .button:nth-last-child(6):first-child,
    2559   .button-group.expanded .button:nth-last-child(6):first-child ~ .button {
    2560     width: 16.66667%; }
     2581  .button-group.expanded {
     2582    display: table;
     2583    table-layout: fixed;
     2584    width: 100%; }
     2585    .button-group.expanded::before, .button-group.expanded::after {
     2586      display: none; }
     2587    .button-group.expanded .button {
     2588      display: table-cell;
     2589      float: none; }
    25612590  .button-group.primary .button {
    25622591    background-color: #2ba6cb;
    2563     color: #fff; }
     2592    color: #fefefe; }
    25642593    .button-group.primary .button:hover, .button-group.primary .button:focus {
    25652594      background-color: #2285a2;
    2566       color: #fff; }
     2595      color: #fefefe; }
    25672596  .button-group.secondary .button {
    25682597    background-color: #e9e9e9;
    2569     color: #000; }
     2598    color: #0a0a0a; }
    25702599    .button-group.secondary .button:hover, .button-group.secondary .button:focus {
    25712600      background-color: #bababa;
    2572       color: #000; }
     2601      color: #0a0a0a; }
    25732602  .button-group.success .button {
    25742603    background-color: #5da423;
    2575     color: #fff; }
     2604    color: #fefefe; }
    25762605    .button-group.success .button:hover, .button-group.success .button:focus {
    25772606      background-color: #4a831c;
    2578       color: #fff; }
     2607      color: #fefefe; }
    25792608  .button-group.alert .button {
    25802609    background-color: #c60f13;
    2581     color: #fff; }
     2610    color: #fefefe; }
    25822611    .button-group.alert .button:hover, .button-group.alert .button:focus {
    25832612      background-color: #9e0c0f;
    2584       color: #fff; }
     2613      color: #fefefe; }
    25852614  .button-group.warning .button {
    25862615    background-color: #ffae00;
    2587     color: #fff; }
     2616    color: #fefefe; }
    25882617    .button-group.warning .button:hover, .button-group.warning .button:focus {
    25892618      background-color: #cc8b00;
    2590       color: #fff; }
     2619      color: #fefefe; }
    25912620  .button-group.stacked .button, .button-group.stacked-for-small .button {
    25922621    width: 100%; }
     
    25982627      .button-group.stacked-for-small .button:not(:last-child) {
    25992628        border-right: 1px solid #fefefe; } }
     2629  @media screen and (min-width: 0em) and (max-width: 39.9375em) {
     2630    .button-group.stacked-for-small.expanded {
     2631      display: block; }
     2632      .button-group.stacked-for-small.expanded .button {
     2633        display: block;
     2634        border-right: 0; } }
    26002635
    26012636.callout {
     
    26802715    border-color: transparent transparent transparent #2ba6cb;
    26812716    border-left-style: solid;
     2717    border-right-width: 0;
    26822718    position: absolute;
    26832719    top: 50%;
     
    26852721    right: 1rem; }
    26862722
    2687 .js-drilldown-back::before {
     2723.js-drilldown-back > a::before {
    26882724  content: '';
    26892725  display: block;
     
    26932729  border-color: transparent #2ba6cb transparent transparent;
    26942730  border-right-style: solid;
    2695   float: left;
    2696   margin-right: 0.75rem;
    2697   margin-left: 0.6rem;
    2698   margin-top: 14px; }
     2731  border-left-width: 0;
     2732  border-left-width: 0;
     2733  display: inline-block;
     2734  vertical-align: middle;
     2735  margin-right: 0.75rem; }
    26992736
    27002737.dropdown-pane {
    27012738  background-color: #fefefe;
    27022739  border: 1px solid #cacaca;
     2740  border-radius: 3px;
    27032741  display: block;
     2742  font-size: 1rem;
    27042743  padding: 1rem;
    27052744  position: absolute;
    27062745  visibility: hidden;
    27072746  width: 300px;
    2708   z-index: 10;
    2709   border-radius: 3px; }
     2747  z-index: 10; }
    27102748  .dropdown-pane.is-open {
    27112749    visibility: visible; }
     
    27232761  outline: 0; }
    27242762
    2725 .dropdown.menu .is-dropdown-submenu-parent {
     2763.no-js .dropdown.menu ul {
     2764  display: none; }
     2765
     2766.dropdown.menu:not(.vertical) .is-dropdown-submenu.first-sub {
     2767  top: 100%;
     2768  left: 0;
     2769  right: auto; }
     2770
     2771.dropdown.menu.align-right .is-dropdown-submenu.first-sub {
     2772  top: 100%;
     2773  left: auto;
     2774  right: 0; }
     2775
     2776.is-dropdown-menu.vertical {
     2777  width: 100px; }
     2778  .is-dropdown-menu.vertical.align-right {
     2779    float: right; }
     2780  .is-dropdown-menu.vertical > li .is-dropdown-submenu {
     2781    top: 0;
     2782    left: 100%; }
     2783
     2784.is-dropdown-submenu-parent {
    27262785  position: relative; }
    2727   .dropdown.menu .is-dropdown-submenu-parent a::after {
     2786  .is-dropdown-submenu-parent a::after {
    27282787    float: right;
    27292788    margin-top: 3px;
    27302789    margin-left: 10px; }
    2731   .dropdown.menu .is-dropdown-submenu-parent.is-down-arrow a {
     2790  .is-dropdown-submenu-parent.is-down-arrow a {
    27322791    padding-right: 1.5rem;
    27332792    position: relative; }
    2734   .dropdown.menu .is-dropdown-submenu-parent.is-down-arrow > a::after {
     2793  .is-dropdown-submenu-parent.is-down-arrow > a::after {
    27352794    content: '';
    27362795    display: block;
     
    27402799    border-color: #2ba6cb transparent transparent;
    27412800    border-top-style: solid;
     2801    border-bottom-width: 0;
    27422802    position: absolute;
    27432803    top: 0.825rem;
    27442804    right: 5px; }
    2745   .dropdown.menu .is-dropdown-submenu-parent.is-left-arrow > a::after {
     2805  .is-dropdown-submenu-parent.is-left-arrow > a::after {
    27462806    content: '';
    27472807    display: block;
     
    27512811    border-color: transparent #2ba6cb transparent transparent;
    27522812    border-right-style: solid;
     2813    border-left-width: 0;
    27532814    float: left;
    27542815    margin-left: 0;
    27552816    margin-right: 10px; }
    2756   .dropdown.menu .is-dropdown-submenu-parent.is-right-arrow > a::after {
     2817  .is-dropdown-submenu-parent.is-right-arrow > a::after {
    27572818    content: '';
    27582819    display: block;
     
    27612822    border: inset 5px;
    27622823    border-color: transparent transparent transparent #2ba6cb;
    2763     border-left-style: solid; }
    2764   .dropdown.menu .is-dropdown-submenu-parent.is-left-arrow.opens-inner .submenu {
     2824    border-left-style: solid;
     2825    border-right-width: 0; }
     2826  .is-dropdown-submenu-parent.is-left-arrow.opens-inner .is-dropdown-submenu {
    27652827    right: 0;
    27662828    left: auto; }
    2767   .dropdown.menu .is-dropdown-submenu-parent.is-right-arrow.opens-inner .submenu {
     2829  .is-dropdown-submenu-parent.is-right-arrow.opens-inner .is-dropdown-submenu {
    27682830    left: 0;
    27692831    right: auto; }
    2770   .dropdown.menu .is-dropdown-submenu-parent.opens-inner .submenu {
     2832  .is-dropdown-submenu-parent.opens-inner .is-dropdown-submenu {
    27712833    top: 100%; }
    2772 
    2773 .no-js .dropdown.menu ul {
    2774   display: none; }
    2775 
    2776 .dropdown.menu .submenu {
     2834  .is-dropdown-submenu-parent.opens-left .is-dropdown-submenu {
     2835    left: auto;
     2836    right: 100%; }
     2837
     2838.is-dropdown-submenu {
    27772839  display: none;
    27782840  position: absolute;
     
    27832845  background: #fefefe;
    27842846  border: 1px solid #cacaca; }
    2785   .dropdown.menu .submenu > li {
     2847  .is-dropdown-submenu .is-dropdown-submenu {
     2848    margin-top: -1px; }
     2849  .is-dropdown-submenu > li {
    27862850    width: 100%; }
    2787   .dropdown.menu .submenu.first-sub {
    2788     top: 100%;
    2789     left: 0;
    2790     right: auto; }
    2791   .dropdown.menu .submenu:not(.js-dropdown-nohover) > .is-dropdown-submenu-parent:hover > .dropdown.menu .submenu, .dropdown.menu .submenu.js-dropdown-active {
     2851  .is-dropdown-submenu:not(.js-dropdown-nohover) > .is-dropdown-submenu-parent:hover > .is-dropdown-submenu, .is-dropdown-submenu.js-dropdown-active {
    27922852    display: block; }
    2793 
    2794 .dropdown.menu .is-dropdown-submenu-parent.opens-left .submenu {
    2795   left: auto;
    2796   right: 100%; }
    2797 
    2798 .dropdown.menu.align-right .submenu.first-sub {
    2799   top: 100%;
    2800   left: auto;
    2801   right: 0; }
    2802 
    2803 .is-dropdown-menu.vertical {
    2804   width: 100px; }
    2805   .is-dropdown-menu.vertical.align-right {
    2806     float: right; }
    2807   .is-dropdown-menu.vertical > li .submenu {
    2808     top: 0;
    2809     left: 100%; }
    28102853
    28112854.flex-video {
     
    28702913  .media-object-section:first-child {
    28712914    padding-right: 1rem; }
    2872   .media-object-section:last-child:not( + .media-object-section:first-child) {
     2915  .media-object-section:last-child:not(:nth-child(2)) {
    28732916    padding-left: 1rem; }
    28742917  .media-object-section.middle {
     
    28852928    [data-whatinput='mouse'] .menu > li {
    28862929      outline: 0; }
    2887   .menu > li:not(.menu-text) > a {
     2930  .menu > li > a {
    28882931    display: block;
    28892932    padding: 0.7rem 1rem;
     
    29162959    .menu.large-vertical > li {
    29172960      display: block; } }
     2961  .menu.simple li {
     2962    line-height: 1;
     2963    display: inline-block;
     2964    margin-right: 1rem; }
    29182965  .menu.simple a {
    2919     padding: 0;
    2920     margin-right: 1rem; }
     2966    padding: 0; }
    29212967  .menu.align-right > li {
    29222968    float: right; }
    29232969  .menu.expanded {
    29242970    display: table;
     2971    table-layout: fixed;
    29252972    width: 100%; }
    2926     .menu.expanded > li:nth-last-child(2):first-child,
    2927     .menu.expanded > li:nth-last-child(2):first-child ~ li {
    2928       width: 50%; }
    2929     .menu.expanded > li:nth-last-child(3):first-child,
    2930     .menu.expanded > li:nth-last-child(3):first-child ~ li {
    2931       width: 33.33333%; }
    2932     .menu.expanded > li:nth-last-child(4):first-child,
    2933     .menu.expanded > li:nth-last-child(4):first-child ~ li {
    2934       width: 25%; }
    2935     .menu.expanded > li:nth-last-child(5):first-child,
    2936     .menu.expanded > li:nth-last-child(5):first-child ~ li {
    2937       width: 20%; }
    2938     .menu.expanded > li:nth-last-child(6):first-child,
    2939     .menu.expanded > li:nth-last-child(6):first-child ~ li {
    2940       width: 16.66667%; }
    29412973    .menu.expanded > li:first-child:last-child {
    29422974      width: 100%; }
     
    30053037  cursor: pointer;
    30063038  transition: background 0.5s ease; }
    3007   .is-off-canvas-open .js-off-canvas-exit {
    3008     display: block; }
    30093039
    30103040.off-canvas {
     
    30143044  max-height: 100%;
    30153045  overflow-y: auto;
    3016   -webkit-transform: translateX(0px);
    3017       -ms-transform: translateX(0px);
    3018           transform: translateX(0px); }
     3046  -webkit-transform: translateX(0);
     3047      -ms-transform: translateX(0);
     3048          transform: translateX(0); }
    30193049  [data-whatinput='mouse'] .off-canvas {
    30203050    outline: 0; }
     
    31473177    font-size: 0.875rem;
    31483178    margin-right: 0.0625rem;
    3149     display: none;
    3150     border-radius: 3px; }
     3179    border-radius: 3px;
     3180    display: none; }
    31513181    .pagination li:last-child, .pagination li:first-child {
    31523182      display: inline-block; }
     
    32143244  background-color: #2ba6cb;
    32153245  border-radius: 3px; }
    3216   .progress-meter .progress-meter-text {
    3217     position: absolute;
    3218     top: 50%;
    3219     left: 50%;
    3220     -webkit-transform: translate(-50%, -50%);
    3221         -ms-transform: translate(-50%, -50%);
    3222             transform: translate(-50%, -50%);
    3223     margin: 0;
    3224     font-size: 0.75rem;
    3225     font-weight: bold;
    3226     color: #fefefe;
    3227     white-space: nowrap; }
     3246
     3247.progress-meter-text {
     3248  position: absolute;
     3249  top: 50%;
     3250  left: 50%;
     3251  -webkit-transform: translate(-50%, -50%);
     3252      -ms-transform: translate(-50%, -50%);
     3253          transform: translate(-50%, -50%);
     3254  position: absolute;
     3255  margin: 0;
     3256  font-size: 0.75rem;
     3257  font-weight: bold;
     3258  color: #fefefe;
     3259  white-space: nowrap;
     3260  border-radius: 3px; }
    32283261
    32293262.slider {
     
    33473380  padding: 1rem;
    33483381  border: 1px solid #cacaca;
    3349   margin: 100px auto 0 auto;
     3382  margin: 6.25rem auto 0;
    33503383  background-color: #fefefe;
    33513384  border-radius: 3px;
     
    33663399      width: 600px;
    33673400      max-width: 62.5rem; } }
    3368   .reveal.collapse {
    3369     padding: 0; }
    33703401  @media screen and (min-width: 40em) {
    33713402    .reveal .reveal {
     
    33733404      right: auto;
    33743405      margin: 0 auto; } }
     3406  .reveal.collapse {
     3407    padding: 0; }
    33753408  @media screen and (min-width: 40em) {
    33763409    .reveal.tiny {
     
    33943427    max-width: none;
    33953428    margin-left: 0;
    3396     border: none; }
     3429    border: 0; }
    33973430
    33983431.switch {
     
    35003533
    35013534table {
     3535  width: 100%;
    35023536  margin-bottom: 1rem;
    35033537  border-radius: 3px; }
    3504   thead,
    3505   tbody,
    3506   tfoot {
     3538  table thead,
     3539  table tbody,
     3540  table tfoot {
    35073541    border: 1px solid #f1f1f1;
    35083542    background-color: #fefefe; }
    3509   caption {
     3543  table caption {
    35103544    font-weight: bold;
    35113545    padding: 0.5rem 0.625rem 0.625rem; }
    3512   thead,
    3513   tfoot {
     3546  table thead,
     3547  table tfoot {
    35143548    background: #f8f8f8;
    35153549    color: #222222; }
    3516     thead tr,
    3517     tfoot tr {
     3550    table thead tr,
     3551    table tfoot tr {
    35183552      background: transparent; }
    3519     thead th,
    3520     thead td,
    3521     tfoot th,
    3522     tfoot td {
     3553    table thead th,
     3554    table thead td,
     3555    table tfoot th,
     3556    table tfoot td {
    35233557      padding: 0.5rem 0.625rem 0.625rem;
    35243558      font-weight: bold;
    35253559      text-align: left; }
    3526   tbody tr:nth-child(even) {
     3560  table tbody tr:nth-child(even) {
    35273561    background-color: #f1f1f1; }
    3528   tbody th,
    3529   tbody td {
     3562  table tbody th,
     3563  table tbody td {
    35303564    padding: 0.5rem 0.625rem 0.625rem; }
    35313565
     
    35453579  display: block;
    35463580  width: 100%;
    3547   overflow-y: scroll; }
     3581  overflow-x: auto; }
    35483582
    35493583table.hover tr:hover {
     
    35633597  .tabs::after {
    35643598    clear: both; }
    3565   .tabs.simple > li > a {
    3566     padding: 0; }
    3567     .tabs.simple > li > a:hover {
    3568       background: transparent; }
    3569   .tabs.vertical > li {
    3570     width: auto;
    3571     float: none;
    3572     display: block; }
    3573   .tabs.primary {
    3574     background: #2ba6cb; }
    3575     .tabs.primary > li > a {
    3576       color: #fefefe; }
    3577       .tabs.primary > li > a:hover, .tabs.primary > li > a:focus {
    3578         background: #299ec1; }
     3599
     3600.tabs.vertical > li {
     3601  width: auto;
     3602  float: none;
     3603  display: block; }
     3604
     3605.tabs.simple > li > a {
     3606  padding: 0; }
     3607  .tabs.simple > li > a:hover {
     3608    background: transparent; }
     3609
     3610.tabs.primary {
     3611  background: #2ba6cb; }
     3612  .tabs.primary > li > a {
     3613    color: #fefefe; }
     3614    .tabs.primary > li > a:hover, .tabs.primary > li > a:focus {
     3615      background: #299ec1; }
    35793616
    35803617.tabs-title {
     
    35963633  border: 1px solid #e6e6e6;
    35973634  border-top: 0; }
    3598   .tabs-content.vertical {
    3599     border: 1px solid #e6e6e6;
    3600     border-left: 0; }
     3635
     3636.tabs-content.vertical {
     3637  border: 1px solid #e6e6e6;
     3638  border-left: 0; }
    36013639
    36023640.tabs-panel {
     
    36643702    box-shadow: 0 7px 0 #cacaca, 0 14px 0 #cacaca; }
    36653703
     3704.menu-icon.dark {
     3705  position: relative;
     3706  display: inline-block;
     3707  vertical-align: middle;
     3708  cursor: pointer;
     3709  width: 20px;
     3710  height: 16px; }
     3711  .menu-icon.dark::after {
     3712    content: '';
     3713    position: absolute;
     3714    display: block;
     3715    width: 100%;
     3716    height: 2px;
     3717    background: #0a0a0a;
     3718    top: 0;
     3719    left: 0;
     3720    box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; }
     3721  .menu-icon.dark:hover::after {
     3722    background: #8a8a8a;
     3723    box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; }
     3724
    36663725.has-tip {
    36673726  border-bottom: dotted 1px #8a8a8a;
     
    36893748    border-color: transparent transparent #0a0a0a;
    36903749    border-bottom-style: solid;
     3750    border-top-width: 0;
    36913751    bottom: 100%;
    36923752    position: absolute;
     
    37033763    border-color: #0a0a0a transparent transparent;
    37043764    border-top-style: solid;
     3765    border-bottom-width: 0;
    37053766    top: 100%;
    37063767    bottom: auto; }
     
    37133774    border-color: transparent transparent transparent #0a0a0a;
    37143775    border-left-style: solid;
     3776    border-right-width: 0;
    37153777    bottom: auto;
    37163778    left: 100%;
     
    37273789    border-color: transparent #0a0a0a transparent transparent;
    37283790    border-right-style: solid;
     3791    border-left-width: 0;
    37293792    bottom: auto;
    37303793    left: auto;
     
    37453808  .top-bar ul {
    37463809    background-color: #e6e6e6; }
    3747   .top-bar a {
    3748     color: #2ba6cb; }
    37493810  .top-bar input {
    37503811    width: 200px;
     
    37543815
    37553816@media screen and (max-width: 39.9375em) {
     3817  .stacked-for-small .top-bar-title {
     3818    width: 100%; }
    37563819  .stacked-for-small .top-bar-right {
    37573820    width: 100%; }
     
    37603823
    37613824@media screen and (max-width: 63.9375em) {
     3825  .stacked-for-medium .top-bar-title {
     3826    width: 100%; }
    37623827  .stacked-for-medium .top-bar-right {
    37633828    width: 100%; }
     
    37663831
    37673832@media screen and (max-width: 74.9375em) {
     3833  .stacked-for-large .top-bar-title {
     3834    width: 100%; }
    37683835  .stacked-for-large .top-bar-right {
    37693836    width: 100%; }
     
    37713838    width: 100%; } }
    37723839
    3773 @media screen and (max-width: 39.9375em) {
     3840@media screen and (min-width: 0em) and (max-width: 39.9375em) {
     3841  .top-bar-title {
     3842    width: 100%; }
    37743843  .top-bar-right {
    37753844    width: 100%; }
     
    37773846    width: 100%; } }
    37783847
     3848.top-bar-title {
     3849  float: left;
     3850  margin-right: 1rem; }
     3851
    37793852.top-bar-left {
    37803853  float: left; }
  • _plugins_/foundation_6/trunk/lib/foundation-6/js/foundation.js

    r93809 r94957  
    22"use strict";
    33
    4 var FOUNDATION_VERSION = '6.0.6';
     4var FOUNDATION_VERSION = '6.1.2';
    55
    66// Global Foundation object
     
    1818   */
    1919  _uuids: [],
    20   /**
    21    * Stores currently active plugins.
    22    */
    23   _activePlugins: {},
    2420
    2521  /**
     
    4642  /**
    4743   * @function
    48    * Creates a pointer to an instance of a Plugin within the Foundation._activePlugins object.
    49    * Sets the `[data-pluginName="uniqueIdHere"]`, allowing easy access to any plugin's internal methods.
     44   * Populates the _uuids array with pointers to each individual plugin instance.
     45   * Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls.
    5046   * Also fires the initialization event for each plugin, consolidating repeditive code.
    5147   * @param {Object} plugin - an instance of a plugin, usually `this` in context.
     48   * @param {String} name - the name of the plugin, passed as a camelCased string.
    5249   * @fires Plugin#init
    5350   */
    54   registerPlugin: function(plugin){
    55     var pluginName = functionName(plugin.constructor).toLowerCase();
    56 
     51  registerPlugin: function(plugin, name){
     52    var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase();
    5753    plugin.uuid = this.GetYoDigits(6, pluginName);
    5854
    59     if(!plugin.$element.attr('data-' + pluginName)){
    60       plugin.$element.attr('data-' + pluginName, plugin.uuid);
    61     }
     55    if(!plugin.$element.attr('data-' + pluginName)){ plugin.$element.attr('data-' + pluginName, plugin.uuid); }
     56    if(!plugin.$element.data('zfPlugin')){ plugin.$element.data('zfPlugin', plugin); }
    6257          /**
    6358           * Fires when the plugin has initialized.
     
    6661    plugin.$element.trigger('init.zf.' + pluginName);
    6762
    68     this._activePlugins[plugin.uuid] = plugin;
     63    this._uuids.push(plugin.uuid);
    6964
    7065    return;
     
    7267  /**
    7368   * @function
    74    * Removes the pointer for an instance of a Plugin from the Foundation._activePlugins obj.
     69   * Removes the plugins uuid from the _uuids array.
     70   * Removes the zfPlugin data attribute, as well as the data-plugin-name attribute.
    7571   * Also fires the destroyed event for the plugin, consolidating repeditive code.
    7672   * @param {Object} plugin - an instance of a plugin, usually `this` in context.
     
    7874   */
    7975  unregisterPlugin: function(plugin){
    80     var pluginName = functionName(plugin.constructor).toLowerCase();
    81 
    82     delete this._activePlugins[plugin.uuid];
    83     plugin.$element.removeAttr('data-' + pluginName)
     76    var pluginName = hyphenate(functionName(plugin.$element.data('zfPlugin').constructor));
     77
     78    this._uuids.splice(this._uuids.indexOf(plugin.uuid), 1);
     79    plugin.$element.removeAttr('data-' + pluginName).removeData('zfPlugin')
    8480          /**
    8581           * Fires when the plugin has been destroyed.
     
    8783           */
    8884          .trigger('destroyed.zf.' + pluginName);
    89 
     85    for(var prop in plugin){
     86      plugin[prop] = null;//clean up script to prep for garbage collection.
     87    }
    9088    return;
    9189  },
     
    9795   * @default If no argument is passed, reflow all currently active plugins.
    9896   */
    99   _reflow: function(plugins){
    100     var actvPlugins = Object.keys(this._activePlugins);
    101     var _this = this;
    102 
    103     if(!plugins){
    104       actvPlugins.forEach(function(p){
    105         _this._activePlugins[p]._init();
    106       });
    107 
    108     }else if(typeof plugins === 'string'){
    109       var namespace = plugins.split('-')[1];
    110 
    111       if(namespace){
    112 
    113         this._activePlugins[plugins]._init();
    114 
    115       }else{
    116         namespace = new RegExp(plugins, 'i');
    117 
    118         actvPlugins.filter(function(p){
    119           return namespace.test(p);
    120         }).forEach(function(p){
    121           _this._activePlugins[p]._init();
    122         });
    123       }
    124     }
    125 
    126   },
     97   reInit: function(plugins){
     98     var isJQ = plugins instanceof $;
     99     try{
     100       if(isJQ){
     101         plugins.each(function(){
     102           $(this).data('zfPlugin')._init();
     103         });
     104       }else{
     105         var type = typeof plugins,
     106         _this = this,
     107         fns = {
     108           'object': function(plgs){
     109             plgs.forEach(function(p){
     110               $('[data-'+ p +']').foundation('_init');
     111             });
     112           },
     113           'string': function(){
     114             $('[data-'+ plugins +']').foundation('_init');
     115           },
     116           'undefined': function(){
     117             this['object'](Object.keys(_this._plugins));
     118           }
     119         };
     120         fns[type](plugins);
     121       }
     122     }catch(err){
     123       console.error(err);
     124     }finally{
     125       return plugins;
     126     }
     127   },
    127128
    128129  /**
     
    169170            opts = {};
    170171        // Don't double-dip on plugins
    171         if ($el.data('zf-plugin')) {
     172        if ($el.data('zfPlugin')) {
    172173          console.warn("Tried to initialize "+name+" on an element that already has a Foundation plugin.");
    173174          return;
     
    181182        }
    182183        try{
    183           $el.data('zf-plugin', new plugin($(this), opts));
     184          $el.data('zfPlugin', new plugin($(this), opts));
    184185        }catch(er){
    185186          console.error(er);
     
    364365  if(/true/.test(str)) return true;
    365366  else if(/false/.test(str)) return false;
    366   else if(!isNaN(str * 1)/* && typeof (str * 1) === "number"*/) return parseFloat(str);
     367  else if(!isNaN(str * 1)) return parseFloat(str);
    367368  return str;
    368369}
     
    977978            $sub = $item.children('ul');
    978979        if($sub.length){
    979           $item.addClass('has-submenu ' + hasSubClass)
     980          $item.addClass(hasSubClass)
    980981               .attr({
    981982                 'aria-haspopup': true,
    982                  'aria-selected': false,
    983983                 'aria-expanded': false,
    984984                 'aria-label': $item.children('a:first').text()
     
    10061006      menu.find('*')
    10071007      // menu.find('.' + subMenuClass + ', .' + subItemClass + ', .is-active, .has-submenu, .is-submenu-item, .submenu, [data-submenu]')
    1008           .removeClass(subMenuClass + ' ' + subItemClass + ' ' + hasSubClass + ' has-submenu is-submenu-item submenu is-active')
     1008          .removeClass(subMenuClass + ' ' + subItemClass + ' ' + hasSubClass + ' is-submenu-item submenu is-active')
    10091009          .removeAttr('data-submenu').css('display', '');
    10101010
     
    10371037        timer;
    10381038
     1039    this.isPaused = false;
     1040   
    10391041    this.restart = function(){
    10401042      remain = -1;
     
    10441046
    10451047    this.start = function(){
     1048      this.isPaused = false
    10461049      // if(!elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.
    10471050      clearTimeout(timer);
     
    10591062
    10601063    this.pause = function(){
     1064      this.isPaused = true;
    10611065      //if(elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.
    10621066      clearTimeout(timer);
     
    11151119    version: '1.0.0',
    11161120    enabled: 'ontouchstart' in document.documentElement,
    1117     preventDefault: true,
     1121    preventDefault: false,
    11181122    moveThreshold: 75,
    11191123    timeThreshold: 200
     
    11451149        dir = dx > 0 ? 'left' : 'right';
    11461150      }
    1147       else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {
    1148         dir = dy > 0 ? 'down' : 'up';
    1149       }
     1151      // else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {
     1152      //   dir = dy > 0 ? 'down' : 'up';
     1153      // }
    11501154      if(dir) {
     1155        e.preventDefault();
    11511156        onTouchEnd.call(this);
    11521157        $(this).trigger('swipe', dir).trigger('swipe' + dir);
     
    12031208            touchend: 'mouseup'
    12041209          },
    1205           type = eventTypes[event.type];
    1206 
    1207       var simulatedEvent = document.createEvent('MouseEvent');
    1208       simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0/*left*/, null);
     1210          type = eventTypes[event.type],
     1211          simulatedEvent
     1212        ;
     1213
     1214      if('MouseEvent' in window && typeof window.MouseEvent === 'function') {
     1215        simulatedEvent = window.MouseEvent(type, {
     1216          'bubbles': true,
     1217          'cancelable': true,
     1218          'screenX': first.screenX,
     1219          'screenY': first.screenY,
     1220          'clientX': first.clientX,
     1221          'clientY': first.clientY
     1222        });
     1223      } else {
     1224        simulatedEvent = document.createEvent('MouseEvent');
     1225        simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0/*left*/, null);
     1226      }
    12091227      first.target.dispatchEvent(simulatedEvent);
    12101228    };
     
    14721490
    14731491  // Elements with [data-closable] will respond to close.zf.trigger events.
    1474   $(document).on('close.zf.trigger', '[data-closable]', function() {
    1475     var animation = $(this).data('closable') || 'fade-out';
    1476     if(Foundation.Motion){
     1492  $(document).on('close.zf.trigger', '[data-closable]', function(e){
     1493    e.stopPropagation();
     1494    var animation = $(this).data('closable');
     1495
     1496    if(animation !== ''){
    14771497      Foundation.Motion.animateOut($(this), animation, function() {
    14781498        $(this).trigger('closed.zf');
     
    16811701    this.$element = element;
    16821702    this.options  = $.extend({}, Abide.defaults, this.$element.data(), options);
    1683     this.$window  = $(window);
    1684     this.name     = 'Abide';
    1685     this.attr     = 'data-abide';
    16861703
    16871704    this._init();
    1688     this._events();
    1689 
    1690     Foundation.registerPlugin(this);
     1705
     1706    Foundation.registerPlugin(this, 'Abide');
    16911707  }
    16921708
     
    16951711   */
    16961712  Abide.defaults = {
    1697     validateOn: 'fieldChange', // options: fieldChange, manual, submit
     1713    /**
     1714     * The default event to validate inputs. Checkboxes and radios validate immediately.
     1715     * Remove or change this value for manual validation.
     1716     * @option
     1717     * @example 'fieldChange'
     1718     */
     1719    validateOn: 'fieldChange',
     1720    /**
     1721     * Class to be applied to input labels on failed validation.
     1722     * @option
     1723     * @example 'is-invalid-label'
     1724     */
    16981725    labelErrorClass: 'is-invalid-label',
     1726    /**
     1727     * Class to be applied to inputs on failed validation.
     1728     * @option
     1729     * @example 'is-invalid-input'
     1730     */
    16991731    inputErrorClass: 'is-invalid-input',
     1732    /**
     1733     * Class selector to use to target Form Errors for show/hide.
     1734     * @option
     1735     * @example '.form-error'
     1736     */
    17001737    formErrorSelector: '.form-error',
     1738    /**
     1739     * Class added to Form Errors on failed validation.
     1740     * @option
     1741     * @example 'is-visible'
     1742     */
    17011743    formErrorClass: 'is-visible',
     1744    /**
     1745     * Set to true to validate text inputs on any value change.
     1746     * @option
     1747     * @example false
     1748     */
     1749    liveValidate: false,
     1750
    17021751    patterns: {
    17031752      alpha : /^[a-zA-Z]+$/,
     
    17311780      color : /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/
    17321781    },
     1782    /**
     1783     * Optional validation functions to be used. `equalTo` being the only default included function.
     1784     * Functions should return only a boolean if the input is valid or not. Functions are given the following arguments:
     1785     * el : The jQuery element to validate.
     1786     * required : Boolean value of the required attribute be present or not.
     1787     * parent : The direct parent of the input.
     1788     * @option
     1789     */
    17331790    validators: {
    17341791      equalTo: function (el, required, parent) {
    1735         var from  = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,
    1736             to    = el.value,
    1737             valid = (from === to);
    1738 
    1739         return valid;
     1792        return $('#' + el.attr('data-equalto')).val() === el.val();
    17401793      }
    17411794    }
     
    17471800   * @private
    17481801   */
    1749   Abide.prototype._init = function() {
     1802  Abide.prototype._init = function(){
     1803    this.$inputs = this.$element.find('input, textarea, select').not('[data-abide-ignore]');
     1804
     1805    this._events();
    17501806  };
    17511807
     
    17551811   */
    17561812  Abide.prototype._events = function() {
    1757     var self = this;
    1758     this.$element
    1759       .off('.abide')
    1760       .on('reset.fndtn.abide', function(e) {
    1761         self.resetForm($(this));
    1762       })
    1763       .on('submit.fndtn.abide', function(e) {
    1764         e.preventDefault();
    1765         self.validateForm(self.$element);
    1766       })
    1767       .find('input, textarea, select')
    1768         .off('.abide')
    1769         .on('blur.fndtn.abide change.fndtn.abide', function (e) {
    1770           if (self.options.validateOn === 'fieldChange') {
    1771             self.validateInput($(e.target), self.$element);
    1772           }
    1773           // self.validateForm(self.$element);
     1813    var _this = this;
     1814
     1815    this.$element.off('.abide')
     1816        .on('reset.zf.abide', function(e){
     1817          _this.resetForm();
    17741818        })
    1775         .on('keydown.fndtn.abide', function (e) {
    1776           // if (settings.live_validate === true && e.which != 9) {
    1777           //   clearTimeout(self.timer);
    1778           //   self.timer = setTimeout(function () {
    1779           //     self.validate([this], e);
    1780           //   }.bind(this), settings.timeout);
    1781           // }
    1782           // self.validateForm(self.$element);
     1819        .on('submit.zf.abide', function(e){
     1820          return _this.validateForm();
    17831821        });
    17841822
     1823    if(this.options.validateOn === 'fieldChange'){
     1824        this.$inputs.off('change.zf.abide')
     1825            .on('change.zf.abide', function(e){
     1826              _this.validateInput($(this));
     1827            });
     1828    }
     1829
     1830    if(this.options.liveValidate){
     1831      this.$inputs.off('input.zf.abide')
     1832          .on('input.zf.abide', function(e){
     1833            _this.validateInput($(this));
     1834          });
     1835    }
    17851836  },
    17861837  /**
     
    17891840   */
    17901841  Abide.prototype._reflow = function() {
    1791     var self = this;
     1842    this._init();
    17921843  };
    17931844  /**
     
    17971848   */
    17981849  Abide.prototype.requiredCheck = function($el) {
     1850    if(!$el.attr('required')) return true;
     1851    var isGood = true;
    17991852    switch ($el[0].type) {
    1800       case 'text':
    1801         if ($el.attr('required') && !$el.val()) {
    1802           // requirement check does not pass
    1803           return false;
    1804         } else {
    1805           return true;
    1806         }
     1853
     1854      case 'checkbox':
     1855      case 'radio':
     1856        isGood = $el[0].checked;
    18071857        break;
    1808         case 'password':
    1809         if ($el.attr('required') && !$el.val()) {
    1810           // requirement check does not pass
    1811           return false;
    1812         } else {
    1813           return true;
    1814         }
     1858
     1859      case 'select':
     1860      case 'select-one':
     1861      case 'select-multiple':
     1862        var opt = $el.find('option:selected');
     1863        if(!opt.length || !opt.val()) isGood = false;
    18151864        break;
    1816       case 'checkbox':
    1817         if ($el.attr('required') && !$el.is(':checked')) {
    1818           return false;
    1819         } else {
    1820           return true;
    1821         }
    1822         break;
    1823       case 'radio':
    1824         if ($el.attr('required') && !$el.is(':checked')) {
    1825           return false;
    1826         } else {
    1827           return true;
    1828         }
    1829         break;
     1865
    18301866      default:
    1831         if ($el.attr('required') && (!$el.val() || !$el.val().length || $el.is(':empty'))) {
    1832           return false;
    1833         } else {
    1834           return true;
    1835         }
    1836     }
    1837   };
    1838   /**
    1839    * Checks whether or not a form element has the required attribute and if it's checked or not
    1840    * @param {Object} element - jQuery object to check for required attribute
     1867        if(!$el.val() || !$el.val().length) isGood = false;
     1868    }
     1869    return isGood;
     1870  };
     1871  /**
     1872   * Based on $el, get the first element with selector in this order:
     1873   * 1. The element's direct sibling('s).
     1874   * 3. The element's parent's children.
     1875   *
     1876   * This allows for multiple form errors per input, though if none are found, no form errors will be shown.
     1877   *
     1878   * @param {Object} $el - jQuery object to use as reference to find the form error selector.
     1879   * @returns {Object} jQuery object with the selector.
     1880   */
     1881  Abide.prototype.findFormError = function($el){
     1882    var $error = $el.siblings(this.options.formErrorSelector);
     1883    if(!$error.length){
     1884      $error = $el.parent().find(this.options.formErrorSelector);
     1885    }
     1886    return $error;
     1887  };
     1888  /**
     1889   * Get the first element in this order:
     1890   * 2. The <label> with the attribute `[for="someInputId"]`
     1891   * 3. The `.closest()` <label>
     1892   *
     1893   * @param {Object} $el - jQuery object to check for required attribute
    18411894   * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty
    18421895   */
    18431896  Abide.prototype.findLabel = function($el) {
    1844     if ($el.next('label').length) {
    1845       return $el.next('label');
    1846     }
    1847     else {
     1897    var $label = this.$element.find('label[for="' + $el[0].id + '"]');
     1898    if(!$label.length){
    18481899      return $el.closest('label');
    18491900    }
     1901    return $label;
    18501902  };
    18511903  /**
    18521904   * Adds the CSS error class as specified by the Abide settings to the label, input, and the form
    1853    * @param {Object} element - jQuery object to add the class to
    1854    */
    1855   Abide.prototype.addErrorClasses = function($el) {
    1856     var self = this,
    1857         $label = self.findLabel($el),
    1858         $formError = $el.next(self.options.formErrorSelector) || $el.find(self.options.formErrorSelector);
    1859 
    1860     // label
    1861     if ($label) {
    1862       $label.addClass(self.options.labelErrorClass);
    1863     }
    1864     // form error
    1865     if ($formError) {
    1866       $formError.addClass(self.options.formErrorClass);
    1867     }
    1868     // input
    1869     $el.addClass(self.options.inputErrorClass);
     1905   * @param {Object} $el - jQuery object to add the class to
     1906   */
     1907  Abide.prototype.addErrorClasses = function($el){
     1908    var $label = this.findLabel($el),
     1909        $formError = this.findFormError($el);
     1910
     1911    if($label.length){
     1912      $label.addClass(this.options.labelErrorClass);
     1913    }
     1914    if($formError.length){
     1915      $formError.addClass(this.options.formErrorClass);
     1916    }
     1917    $el.addClass(this.options.inputErrorClass).attr('data-invalid', '');
    18701918  };
    18711919  /**
    18721920   * Removes CSS error class as specified by the Abide settings from the label, input, and the form
    1873    * @param {Object} element - jQuery object to remove the class from
    1874    */
    1875   Abide.prototype.removeErrorClasses = function($el) {
    1876     var self = this,
    1877         $label = self.findLabel($el),
    1878         $formError = $el.next(self.options.formErrorSelector) || $el.find(self.options.formErrorSelector);
    1879     // label
    1880     if ($label && $label.hasClass(self.options.labelErrorClass)) {
    1881       $label.removeClass(self.options.labelErrorClass);
    1882     }
    1883     // form error
    1884     if ($formError && $formError.hasClass(self.options.formErrorClass)) {
    1885       $formError.removeClass(self.options.formErrorClass);
    1886     }
    1887     // input
    1888     if ($el.hasClass(self.options.inputErrorClass)) {
    1889       $el.removeClass(self.options.inputErrorClass);
    1890     }
     1921   * @param {Object} $el - jQuery object to remove the class from
     1922   */
     1923  Abide.prototype.removeErrorClasses = function($el){
     1924    var $label = this.findLabel($el),
     1925        $formError = this.findFormError($el);
     1926
     1927    if($label.length){
     1928      $label.removeClass(this.options.labelErrorClass);
     1929    }
     1930    if($formError.length){
     1931      $formError.removeClass(this.options.formErrorClass);
     1932    }
     1933    $el.removeClass(this.options.inputErrorClass).removeAttr('data-invalid');
    18911934  };
    18921935  /**
     
    18951938   * @fires Abide#valid
    18961939   * @param {Object} element - jQuery object to validate, should be an HTML input
    1897    * @param {Object} form - jQuery object of the entire form to find the various input elements
    1898    */
    1899   Abide.prototype.validateInput = function($el, $form) {
    1900     var self = this,
    1901         textInput = $form.find('input[type="text"]'),
    1902         passwordInput = $form.find('input[type="password"]'),
    1903         checkInput = $form.find('input[type="checkbox"]'),
    1904         label,
    1905         radioGroupName;
    1906 
    1907     if ($el[0].type === 'text') {
    1908       if (!self.requiredCheck($el) || !self.validateText($el)) {
    1909         self.addErrorClasses($el);
    1910         $el.trigger('invalid.fndtn.abide', $el[0]);
    1911       }
    1912       else {
    1913         self.removeErrorClasses($el);
    1914         $el.trigger('valid.fndtn.abide', $el[0]);
    1915       }
    1916     }
    1917     else if ($el[0].type === 'radio') {
    1918       radioGroupName = $el.attr('name');
    1919       label = $el.siblings('label');
    1920 
    1921       if (self.validateRadio(radioGroupName)) {
    1922         $(label).each(function() {
    1923           if ($(this).hasClass(self.options.labelErrorClass)) {
    1924             $(this).removeClass(self.options.labelErrorClass);
    1925           }
     1940   * @returns {Boolean} goodToGo - If the input is valid or not.
     1941   */
     1942  Abide.prototype.validateInput = function($el){
     1943    var clearRequire = this.requiredCheck($el),
     1944        validated = false,
     1945        customValidator = true,
     1946        validator = $el.attr('data-validator'),
     1947        equalTo = true;
     1948
     1949    switch ($el[0].type) {
     1950
     1951      case 'radio':
     1952        validated = this.validateRadio($el.attr('name'));
     1953        break;
     1954
     1955      case 'checkbox':
     1956        validated = clearRequire;
     1957        break;
     1958
     1959      case 'select':
     1960      case 'select-one':
     1961      case 'select-multiple':
     1962        validated = clearRequire;
     1963        break;
     1964
     1965      default:
     1966        validated = this.validateText($el);
     1967    }
     1968
     1969    if(validator){ customValidator = this.matchValidation($el, validator, $el.attr('required')); }
     1970    if($el.attr('data-equalto')){ equalTo = this.options.validators.equalTo($el); }
     1971
     1972    var goodToGo = [clearRequire, validated, customValidator, equalTo].indexOf(false) === -1,
     1973        message = (goodToGo ? 'valid' : 'invalid') + '.zf.abide';
     1974
     1975    this[goodToGo ? 'removeErrorClasses' : 'addErrorClasses']($el);
     1976
     1977    /**
     1978     * Fires when the input is done checking for validation. Event trigger is either `valid.zf.abide` or `invalid.zf.abide`
     1979     * Trigger includes the DOM element of the input.
     1980     * @event Abide#valid
     1981     * @event Abide#invalid
     1982     */
     1983    $el.trigger(message, [$el]);
     1984
     1985    return goodToGo;
     1986  };
     1987  /**
     1988   * Goes through a form and if there are any invalid inputs, it will display the form error element
     1989   * @returns {Boolean} noError - true if no errors were detected...
     1990   * @fires Abide#formvalid
     1991   * @fires Abide#forminvalid
     1992   */
     1993  Abide.prototype.validateForm = function(){
     1994    var acc = [],
     1995        _this = this;
     1996
     1997    this.$inputs.each(function(){
     1998      acc.push(_this.validateInput($(this)));
     1999    });
     2000
     2001    var noError = acc.indexOf(false) === -1;
     2002
     2003    this.$element.find('[data-abide-error]').css('display', (noError ? 'none' : 'block'));
     2004        /**
     2005         * Fires when the form is finished validating. Event trigger is either `formvalid.zf.abide` or `forminvalid.zf.abide`.
     2006         * Trigger includes the element of the form.
     2007         * @event Abide#formvalid
     2008         * @event Abide#forminvalid
     2009         */
     2010    this.$element.trigger((noError ? 'formvalid' : 'forminvalid') + '.zf.abide', [this.$element]);
     2011
     2012    return noError;
     2013  };
     2014  /**
     2015   * Determines whether or a not a text input is valid based on the pattern specified in the attribute. If no matching pattern is found, returns true.
     2016   * @param {Object} $el - jQuery object to validate, should be a text input HTML element
     2017   * @param {String} pattern - string value of one of the RegEx patterns in Abide.options.patterns
     2018   * @returns {Boolean} Boolean value depends on whether or not the input value matches the pattern specified
     2019   */
     2020   Abide.prototype.validateText = function($el, pattern){
     2021     // pattern = pattern ? pattern : $el.attr('pattern') ? $el.attr('pattern') : $el.attr('type');
     2022     pattern = (pattern || $el.attr('pattern') || $el.attr('type'));
     2023     var inputText = $el.val();
     2024
     2025     return inputText.length ?//if text, check if the pattern exists, if so, test it, if no text or no pattern, return true.
     2026            this.options.patterns.hasOwnProperty(pattern) ? this.options.patterns[pattern].test(inputText) :
     2027            pattern && pattern !== $el.attr('type') ? new RegExp(pattern).test(inputText) : true : true;
     2028   };  /**
     2029   * Determines whether or a not a radio input is valid based on whether or not it is required and selected
     2030   * @param {String} groupName - A string that specifies the name of a radio button group
     2031   * @returns {Boolean} Boolean value depends on whether or not at least one radio input has been selected (if it's required)
     2032   */
     2033  Abide.prototype.validateRadio = function(groupName){
     2034    var $group = this.$element.find(':radio[name="' + groupName + '"]'),
     2035        counter = [],
     2036        _this = this;
     2037
     2038    $group.each(function(){
     2039      var rdio = $(this),
     2040          clear = _this.requiredCheck(rdio);
     2041      counter.push(clear);
     2042      if(clear) _this.removeErrorClasses(rdio);
     2043    });
     2044
     2045    return counter.indexOf(false) === -1;
     2046  };
     2047  /**
     2048   * Determines if a selected input passes a custom validation function. Multiple validations can be used, if passed to the element with `data-validator="foo bar baz"` in a space separated listed.
     2049   * @param {Object} $el - jQuery input element.
     2050   * @param {String} validators - a string of function names matching functions in the Abide.options.validators object.
     2051   * @param {Boolean} required - self explanatory?
     2052   * @returns {Boolean} - true if validations passed.
     2053   */
     2054  Abide.prototype.matchValidation = function($el, validators, required){
     2055    var _this = this;
     2056    required = required ? true : false;
     2057    var clear = validators.split(' ').map(function(v){
     2058      return _this.options.validators[v]($el, required, $el.parent());
     2059    });
     2060    return clear.indexOf(false) === -1;
     2061  };
     2062  /**
     2063   * Resets form inputs and styles
     2064   * @fires Abide#formreset
     2065   */
     2066  Abide.prototype.resetForm = function() {
     2067    var $form = this.$element,
     2068        opts = this.options;
     2069
     2070    $('.' + opts.labelErrorClass, $form).not('small').removeClass(opts.labelErrorClass);
     2071    $('.' + opts.inputErrorClass, $form).not('small').removeClass(opts.inputErrorClass);
     2072    $(opts.formErrorSelector + '.' + opts.formErrorClass).removeClass(opts.formErrorClass);
     2073    $form.find('[data-abide-error]').css('display', 'none');
     2074    $(':input', $form).not(':button, :submit, :reset, :hidden, [data-abide-ignore]').val('').removeAttr('data-invalid');
     2075    /**
     2076     * Fires when the form has been reset.
     2077     * @event Abide#formreset
     2078     */
     2079    $form.trigger('formreset.zf.abide', [$form]);
     2080  };
     2081  /**
     2082   * Destroys an instance of Abide.
     2083   * Removes error styles and classes from elements, without resetting their values.
     2084   */
     2085  Abide.prototype.destroy = function(){
     2086    var _this = this;
     2087    this.$element.off('.abide')
     2088        .find('[data-abide-error]').css('display', 'none');
     2089    this.$inputs.off('.abide')
     2090        .each(function(){
     2091          _this.removeErrorClasses($(this));
    19262092        });
    1927         $el.trigger('valid.fndtn.abide', $el[0]);
    1928       }
    1929       else {
    1930         $(label).each(function() {
    1931           $(this).addClass(self.options.labelErrorClass);
    1932         });
    1933         $el.trigger('invalid.fndtn.abide', $el[0]);
    1934       };
    1935     }
    1936     else if ($el[0].type === 'checkbox') {
    1937       if (!self.requiredCheck($el)) {
    1938         self.addErrorClasses($el);
    1939         $el.trigger('invalid.fndtn.abide', $el[0]);
    1940       }
    1941       else {
    1942         self.removeErrorClasses($el);
    1943         $el.trigger('valid.fndtn.abide', $el[0]);
    1944       }
    1945     }
    1946     else {
    1947       if (!self.requiredCheck($el) || !self.validateText($el)) {
    1948         self.addErrorClasses($el);
    1949         $el.trigger('invalid.fndtn.abide', $el[0]);
    1950       }
    1951       else {
    1952         self.removeErrorClasses($el);
    1953         $el.trigger('valid.fndtn.abide', $el[0]);
    1954       }
    1955     }
    1956   };
    1957   /**
    1958    * Goes through a form and if there are any invalid inputs, it will display the form error element
    1959    * @param {Object} element - jQuery object to validate, should be a form HTML element
    1960    */
    1961   Abide.prototype.validateForm = function($form) {
    1962     var self = this,
    1963         inputs = $form.find('input'),
    1964         inputCount = $form.find('input').length,
    1965         counter = 0;
    1966 
    1967     while (counter < inputCount) {
    1968       self.validateInput($(inputs[counter]), $form);
    1969       counter++;
    1970     }
    1971 
    1972     // what are all the things that can go wrong with a form?
    1973     if ($form.find('.form-error.is-visible').length || $form.find('.is-invalid-label').length) {
    1974       $form.find('[data-abide-error]').css('display', 'block');
    1975     }
    1976     else {
    1977       $form.find('[data-abide-error]').css('display', 'none');
    1978     }
    1979   };
    1980   /**
    1981    * Determines whether or a not a text input is valid based on the patterns specified in the attribute
    1982    * @param {Object} element - jQuery object to validate, should be a text input HTML element
    1983    * @returns {Boolean} Boolean value depends on whether or not the input value matches the pattern specified
    1984    */
    1985   Abide.prototype.validateText = function($el) {
    1986     var self = this,
    1987         valid = false,
    1988         patternLib = this.options.patterns,
    1989         inputText = $($el).val(),
    1990         // maybe have a different way of parsing this bc people might use type
    1991         pattern = $($el).attr('pattern');
    1992 
    1993     // if there's no value, then return true
    1994     // since required check has already been done
    1995     if (inputText.length === 0) {
    1996       return true;
    1997     }
    1998     else {
    1999       if (inputText.match(patternLib[pattern])) {
    2000         return true;
    2001       }
    2002       else {
    2003         return false;
    2004       }
    2005     }
    2006   };
    2007   /**
    2008    * Determines whether or a not a radio input is valid based on whether or not it is required and selected
    2009    * @param {String} group - A string that specifies the name of a radio button group
    2010    * @returns {Boolean} Boolean value depends on whether or not at least one radio input has been selected (if it's required)
    2011    */
    2012   Abide.prototype.validateRadio = function(group) {
    2013     var self = this,
    2014         labels = $(':radio[name="' + group + '"]').siblings('label'),
    2015         counter = 0;
    2016     // go through each radio button
    2017     $(':radio[name="' + group + '"]').each(function() {
    2018       // put them through the required checkpoint
    2019       if (!self.requiredCheck($(this))) {
    2020         // if at least one doesn't pass, add a tally to the counter
    2021         counter++;
    2022       }
    2023       // if at least one is checked
    2024       // reset the counter
    2025       if ($(this).is(':checked')) {
    2026         counter = 0;
    2027       }
    2028     });
    2029 
    2030     if (counter > 0) {
    2031       return false;
    2032     }
    2033     else {
    2034       return true;
    2035     }
    2036   };
    2037   Abide.prototype.matchValidation = function(val, validation) {
    2038 
    2039   };
    2040   /**
    2041    * Resets form inputs and styles
    2042    * @param {Object} $form - A jQuery object that should be an HTML form element
    2043    */
    2044   Abide.prototype.resetForm = function($form) {
    2045     var self = this;
    2046     var invalidAttr = 'data-invalid';
    2047     // remove data attributes
    2048     $('[' + self.invalidAttr + ']', $form).removeAttr(invalidAttr);
    2049     // remove styles
    2050     $('.' + self.options.labelErrorClass, $form).not('small').removeClass(self.options.labelErrorClass);
    2051     $('.' + self.options.inputErrorClass, $form).not('small').removeClass(self.options.inputErrorClass);
    2052     $('.form-error.is-visible').removeClass('is-visible');
    2053     $form.find('[data-abide-error]').css('display', 'none');
    2054     $(':input', $form).not(':button, :submit, :reset, :hidden, [data-abide-ignore]').val('').removeAttr(invalidAttr);
    2055   };
    2056   Abide.prototype.destroy = function(){
    2057     //TODO this...
     2093
     2094    Foundation.unregisterPlugin(this);
    20582095  };
    20592096
     
    20842121   * @fires Accordion#init
    20852122   * @param {jQuery} element - jQuery object to make into an accordion.
     2123   * @param {Object} options - a plain object with settings to override the default options.
    20862124   */
    20872125  function Accordion(element, options){
     
    20912129    this._init();
    20922130
    2093     Foundation.registerPlugin(this);
     2131    Foundation.registerPlugin(this, 'Accordion');
    20942132    Foundation.Keyboard.register('Accordion', {
    20952133      'ENTER': 'toggle',
     
    21282166    this.$element.attr('role', 'tablist');
    21292167    this.$tabs = this.$element.children('li');
    2130     if (this.$tabs.length == 0) {
     2168    if (this.$tabs.length === 0) {
    21312169      this.$tabs = this.$element.children('[data-accordion-item]');
    21322170    }
     
    22342272
    22352273    // Foundation.Move(_this.options.slideSpeed, $target, function(){
    2236       $target.slideDown(_this.options.slideSpeed);
     2274      $target.slideDown(_this.options.slideSpeed, function () {
     2275        /**
     2276         * Fires when the tab is done opening.
     2277         * @event Accordion#down
     2278         */
     2279        _this.$element.trigger('down.zf.accordion', [$target]);
     2280      });
    22372281    // });
    22382282
     
    22442288      'aria-selected': true
    22452289    });
    2246     /**
    2247      * Fires when the tab is done opening.
    2248      * @event Accordion#down
    2249      */
    2250     this.$element.trigger('down.zf.accordion', [$target]);
    22512290  };
    22522291
     
    22672306
    22682307    // Foundation.Move(this.options.slideSpeed, $target, function(){
    2269       $target.slideUp(_this.options.slideSpeed);
     2308      $target.slideUp(_this.options.slideSpeed, function () {
     2309        /**
     2310         * Fires when the tab is done collapsing up.
     2311         * @event Accordion#up
     2312         */
     2313        _this.$element.trigger('up.zf.accordion', [$target]);
     2314      });
    22702315    // });
    22712316
     
    22772322     'aria-selected': false
    22782323   });
    2279 
    2280     /**
    2281      * Fires when the tab is done collapsing up.
    2282      * @event Accordion#up
    2283      */
    2284     this.$element.trigger('up.zf.accordion', [$target]);
    22852324  };
    22862325
     
    23252364    this._init();
    23262365
    2327     Foundation.registerPlugin(this);
     2366    Foundation.registerPlugin(this, 'AccordionMenu');
    23282367    Foundation.Keyboard.register('AccordionMenu', {
    23292368      'ENTER': 'toggle',
     
    23652404    });
    23662405
    2367     this.$menuLinks = this.$element.find('.has-submenu');
     2406    this.$menuLinks = this.$element.find('.is-accordion-submenu-parent');
    23682407    this.$menuLinks.each(function(){
    23692408      var linkId = this.id || Foundation.GetYoDigits(6, 'acc-menu-link'),
     
    23752414        'aria-controls': subId,
    23762415        'aria-expanded': isActive,
    2377         'aria-selected': false,
    23782416        'role': 'tab',
    23792417        'id': linkId
     
    24072445
    24082446      if ($submenu.length) {
    2409         $(this).children('a').off('click.zf.accordionmenu').on('click.zf.accordionmenu', function(e) {
     2447        $(this).children('a').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function(e) {
    24102448          e.preventDefault();
    24112449
     
    25112549
    25122550    $target.addClass('is-active').attr({'aria-hidden': false})
    2513       .parent('.has-submenu').attr({'aria-expanded': true, 'aria-selected': true});
     2551      .parent('.is-accordion-submenu-parent').attr({'aria-expanded': true});
    25142552
    25152553      Foundation.Move(this.options.slideSpeed, $target, function(){
    2516         $target.slideDown(_this.options.slideSpeed);
     2554        $target.slideDown(_this.options.slideSpeed, function () {
     2555          /**
     2556           * Fires when the menu is done opening.
     2557           * @event AccordionMenu#down
     2558           */
     2559          _this.$element.trigger('down.zf.accordionMenu', [$target]);
     2560        });
    25172561      });
    2518     /**
    2519      * Fires when the menu is done collapsing up.
    2520      * @event AccordionMenu#down
    2521      */
    2522     this.$element.trigger('down.zf.accordionMenu', [$target]);
    25232562  };
    25242563
     
    25312570    var _this = this;
    25322571    Foundation.Move(this.options.slideSpeed, $target, function(){
    2533       $target.slideUp(_this.options.slideSpeed);
     2572      $target.slideUp(_this.options.slideSpeed, function () {
     2573        /**
     2574         * Fires when the menu is done collapsing up.
     2575         * @event AccordionMenu#up
     2576         */
     2577        _this.$element.trigger('up.zf.accordionMenu', [$target]);
     2578      });
    25342579    });
    2535     $target.attr('aria-hidden', true)
    2536            .find('[data-submenu]').slideUp(0).attr('aria-hidden', true).end()
    2537            .parent('.has-submenu')
    2538            .attr({'aria-expanded': false, 'aria-selected': false});
    2539     // $target.slideUp(this.options.slideSpeed, function() {
    2540     //   $target.find('[data-submenu]').slideUp(0).attr('aria-hidden', true);
    2541     // }).attr('aria-hidden', true).parent('.has-submenu').attr({'aria-expanded': false, 'aria-selected': false});
    2542 
    2543     /**
    2544      * Fires when the menu is done collapsing up.
    2545      * @event AccordionMenu#up
    2546      */
    2547     this.$element.trigger('up.zf.accordionMenu', [$target]);
     2580
     2581    var $menus = $target.find('[data-submenu]').slideUp(0).addBack().attr('aria-hidden', true);
     2582
     2583    $menus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false);
    25482584  };
    25492585
     
    25872623    this._init();
    25882624
    2589     Foundation.registerPlugin(this);
     2625    Foundation.registerPlugin(this, 'Drilldown');
    25902626    Foundation.Keyboard.register('Drilldown', {
    25912627      'ENTER': 'open',
     
    26262662   */
    26272663  Drilldown.prototype._init = function(){
    2628     this.$submenuAnchors = this.$element.find('li.has-submenu');
     2664    this.$submenuAnchors = this.$element.find('li.is-drilldown-submenu-parent');
    26292665    this.$submenus = this.$submenuAnchors.children('[data-submenu]');
    2630     this.$menuItems = this.$element.find('li:visible').not('.js-drilldown-back').attr('role', 'menuitem');
     2666    this.$menuItems = this.$element.find('li').not('.js-drilldown-back').attr('role', 'menuitem');
    26312667
    26322668    this._prepareMenu();
     
    27722808   */
    27732809  Drilldown.prototype._hideAll = function(){
    2774     var $elem = this.$element.find('.is-drilldown-sub.is-active').addClass('is-closing');
     2810    var $elem = this.$element.find('.is-drilldown-submenu.is-active').addClass('is-closing');
    27752811    $elem.one(Foundation.transitionend($elem), function(e){
    27762812      $elem.removeClass('is-active is-closing');
     
    28052841  Drilldown.prototype._menuLinkEvents = function(){
    28062842    var _this = this;
    2807     this.$menuItems.not('.has-submenu')
     2843    this.$menuItems.not('.is-drilldown-submenu-parent')
    28082844        .off('click.zf.drilldown')
    28092845        .on('click.zf.drilldown', function(e){
     
    28712907    this.$element.unwrap()
    28722908                 .find('.js-drilldown-back').remove()
    2873                  .end().find('.is-active, .is-closing, .is-drilldown-sub').removeClass('is-active is-closing is-drilldown-sub')
     2909                 .end().find('.is-active, .is-closing, .is-drilldown-submenu').removeClass('is-active is-closing is-drilldown-submenu')
    28742910                 .end().find('[data-submenu]').removeAttr('aria-hidden tabindex role')
    28752911                 .off('.zf.drilldown').end().off('zf.drilldown');
     
    28902926 * @requires foundation.util.keyboard
    28912927 * @requires foundation.util.box
     2928 * @requires foundation.util.triggers
    28922929 */
    28932930!function($, Foundation){
     
    28962933   * Creates a new instance of a dropdown.
    28972934   * @class
    2898    * @param {jQuery} element - jQuery object to make into an accordion menu.
     2935   * @param {jQuery} element - jQuery object to make into a dropdown.
     2936   *        Object should be of the dropdown panel, rather than its anchor.
    28992937   * @param {Object} options - Overrides to the default plugin settings.
    29002938   */
     
    29042942    this._init();
    29052943
    2906     Foundation.registerPlugin(this);
     2944    Foundation.registerPlugin(this, 'Dropdown');
    29072945    Foundation.Keyboard.register('Dropdown', {
    29082946      'ENTER': 'open',
     
    29623000     * @example true
    29633001     */
    2964     autoFocus: false
     3002    autoFocus: false,
     3003    /**
     3004     * Allows a click on the body to close the dropdown.
     3005     * @option
     3006     * @example false
     3007     */
     3008    closeOnClick: false
    29653009  };
    29663010  /**
     
    29993043   */
    30003044  Dropdown.prototype.getPositionClass = function(){
    3001     var position = this.$element[0].className.match(/(top|left|right)/g);
     3045    var position = this.$element[0].className.match(/\b(top|left|right)\b/g);
    30023046        position = position ? position[0] : '';
    30033047    return position;
     
    31573201  };
    31583202  /**
     3203   * Adds an event handler to the body to close any dropdowns on a click.
     3204   * @function
     3205   * @private
     3206   */
     3207  Dropdown.prototype._addBodyHandler = function(){
     3208     var $body = $(document.body).not(this.$element),
     3209         _this = this;
     3210     $body.off('click.zf.dropdown')
     3211          .on('click.zf.dropdown', function(e){
     3212            if(_this.$anchor.is(e.target) || _this.$anchor.find(e.target).length) {
     3213              return;
     3214            }
     3215            if(_this.$element.find(e.target).length) {
     3216              return;
     3217            }
     3218            _this.close();
     3219            $body.off('click.zf.dropdown');
     3220          });
     3221  };
     3222  /**
    31593223   * Opens the dropdown pane, and fires a bubbling event to close other dropdowns.
    31603224   * @function
     
    31833247    }
    31843248
     3249    if(this.options.closeOnClick){ this._addBodyHandler(); }
    31853250
    31863251    /**
     
    32733338    this._init();
    32743339
    3275     Foundation.registerPlugin(this);
     3340    Foundation.registerPlugin(this, 'DropdownMenu');
    32763341    Foundation.Keyboard.register('DropdownMenu', {
    32773342      'ENTER': 'open',
     
    33653430    this.$tabs.find('ul.is-dropdown-submenu').addClass(this.options.verticalClass);
    33663431
    3367     if(this.$element.hasClass(this.options.rightClass) || this.options.alignment === 'right'){
     3432    if(this.$element.hasClass(this.options.rightClass) || this.options.alignment === 'right' || Foundation.rtl()){
    33683433      this.options.alignment = 'right';
    33693434      subs.addClass('is-left-arrow opens-left');
     
    33863451    var _this = this,
    33873452        hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined'),
    3388         parClass = 'is-dropdown-submenu-parent',
    3389         delay;
     3453        parClass = 'is-dropdown-submenu-parent';
    33903454
    33913455    if(this.options.clickOpen || hasTouch){
     
    34213485
    34223486        if(hasSub){
    3423           clearTimeout(delay);
    3424           delay = setTimeout(function(){
     3487          clearTimeout(_this.delay);
     3488          _this.delay = setTimeout(function(){
    34253489            _this._show($elem.children('.is-dropdown-submenu'));
    34263490          }, _this.options.hoverDelay);
     
    34323496          if($elem.attr('data-is-click') === 'true' && _this.options.clickOpen){ return false; }
    34333497
    3434           // clearTimeout(delay);
    3435           delay = setTimeout(function(){
     3498          clearTimeout(_this.delay);
     3499          _this.delay = setTimeout(function(){
    34363500            _this._hide($elem);
    34373501          }, _this.options.closingTime);
     
    35613625    $sub.css('visibility', 'hidden').addClass('js-dropdown-active').attr({'aria-hidden': false})
    35623626        .parent('li.is-dropdown-submenu-parent').addClass('is-active')
    3563         .attr({'aria-selected': true, 'aria-expanded': true});
     3627        .attr({'aria-expanded': true});
    35643628    var clear = Foundation.Box.ImNotTouchingYou($sub, null, true);
    35653629    if(!clear){
     
    36043668    if(somethingToClose){
    36053669      $toClose.find('li.is-active').add($toClose).attr({
    3606         'aria-selected': false,
    36073670        'aria-expanded': false,
    36083671        'data-is-click': false
     
    36343697    this.$menuItems.off('.zf.dropdownmenu').removeAttr('data-is-click')
    36353698        .removeClass('is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner');
     3699    $(document.body).off('.zf.dropdownmenu');
    36363700    Foundation.Nest.Burn(this.$element, 'dropdown');
    36373701    Foundation.unregisterPlugin(this);
     
    36513715   * @param {Object} options - Overrides to the default plugin settings.
    36523716   */
    3653   function Equalizer(element, options) {
     3717  function Equalizer(element, options){
    36543718    this.$element = element;
    36553719    this.options  = $.extend({}, Equalizer.defaults, this.$element.data(), options);
    3656     this.$window  = $(window);
    3657     this.name     = 'equalizer';
    3658     this.attr     = 'data-equalizer';
    36593720
    36603721    this._init();
    3661     this._events();
    3662 
    3663     Foundation.registerPlugin(this);
     3722
     3723    Foundation.registerPlugin(this, 'Equalizer');
    36643724  }
    36653725
     
    36753735    equalizeOnStack: true,
    36763736    /**
    3677      * Amount of time, in ms, to debounce the size checking/equalization. Lower times mean smoother transitions/less performance on mobile.
    3678      * @option
    3679      * @example 50
    3680      */
    3681     throttleInterval: 50
     3737     * Enable height equalization row by row.
     3738     * @option
     3739     * @example false
     3740     */
     3741    equalizeByRow: false,
     3742    /**
     3743     * String representing the minimum breakpoint size the plugin should equalize heights on.
     3744     * @option
     3745     * @example 'medium'
     3746     */
     3747    equalizeOn: ''
    36823748  };
    36833749
     
    36863752   * @private
    36873753   */
    3688   Equalizer.prototype._init = function() {
    3689     this._reflow();
    3690   };
    3691 
     3754  Equalizer.prototype._init = function(){
     3755    var eqId = this.$element.attr('data-equalizer') || '';
     3756    var $watched = this.$element.find('[data-equalizer-watch="' + eqId + '"]');
     3757
     3758    this.$watched = $watched.length ? $watched : this.$element.find('[data-equalizer-watch]');
     3759    this.$element.attr('data-resize', (eqId || Foundation.GetYoDigits(6, 'eq')));
     3760
     3761    this.hasNested = this.$element.find('[data-equalizer]').length > 0;
     3762    this.isNested = this.$element.parentsUntil(document.body, '[data-equalizer]').length > 0;
     3763    this.isOn = false;
     3764
     3765    var imgs = this.$element.find('img');
     3766    var tooSmall;
     3767    if(this.options.equalizeOn){
     3768      tooSmall = this._checkMQ();
     3769      $(window).on('changed.zf.mediaquery', this._checkMQ.bind(this));
     3770    }else{
     3771      this._events();
     3772    }
     3773    if((tooSmall !== undefined && tooSmall === false) || tooSmall === undefined){
     3774      if(imgs.length){
     3775        Foundation.onImagesLoaded(imgs, this._reflow.bind(this));
     3776      }else{
     3777        this._reflow();
     3778      }
     3779    }
     3780
     3781  };
     3782  /**
     3783   * Removes event listeners if the breakpoint is too small.
     3784   * @private
     3785   */
     3786  Equalizer.prototype._pauseEvents = function(){
     3787    this.isOn = false;
     3788    this.$element.off('.zf.equalizer resizeme.zf.trigger');
     3789  };
    36923790  /**
    36933791   * Initializes events for Equalizer.
    36943792   * @private
    36953793   */
    3696   Equalizer.prototype._events = function() {
    3697     var self = this;
    3698 
    3699     this.$window
    3700       .off('.equalizer')
    3701       .on('resize.fndtn.equalizer', Foundation.util.throttle(function () {
    3702         self._reflow();
    3703       }, self.options.throttleInterval));
    3704   };
    3705 
     3794  Equalizer.prototype._events = function(){
     3795    var _this = this;
     3796    this._pauseEvents();
     3797    if(this.hasNested){
     3798      this.$element.on('postequalized.zf.equalizer', function(e){
     3799        if(e.target !== _this.$element[0]){ _this._reflow(); }
     3800      });
     3801    }else{
     3802      this.$element.on('resizeme.zf.trigger', this._reflow.bind(this));
     3803    }
     3804    this.isOn = true;
     3805  };
     3806  /**
     3807   * Checks the current breakpoint to the minimum required size.
     3808   * @private
     3809   */
     3810  Equalizer.prototype._checkMQ = function(){
     3811    var tooSmall = !Foundation.MediaQuery.atLeast(this.options.equalizeOn);
     3812    if(tooSmall){
     3813      if(this.isOn){
     3814        this._pauseEvents();
     3815        this.$watched.css('height', 'auto');
     3816      }
     3817    }else{
     3818      if(!this.isOn){
     3819        this._events();
     3820      }
     3821    }
     3822    return tooSmall;
     3823  };
    37063824  /**
    37073825   * A noop version for the plugin
    37083826   * @private
    37093827   */
    3710   Equalizer.prototype._killswitch = function() {
     3828  Equalizer.prototype._killswitch = function(){
    37113829    return;
    37123830  };
     
    37153833   * @private
    37163834   */
    3717   Equalizer.prototype._reflow = function() {
    3718     var self = this;
    3719 
    3720     $('[' + this.attr + ']').each(function() {
    3721       var $eqParent       = $(this),
    3722           adjustedHeights = [],
    3723           $images = $eqParent.find('img');
    3724 
    3725       if ($images.length) {
    3726         Foundation.onImagesLoaded($images, function() {
    3727           adjustedHeights = self.getHeights($eqParent);
    3728           self.applyHeight($eqParent, adjustedHeights);
    3729         });
     3835  Equalizer.prototype._reflow = function(){
     3836    if(!this.options.equalizeOnStack){
     3837      if(this._isStacked()){
     3838        this.$watched.css('height', 'auto');
     3839        return false;
    37303840      }
    3731       else {
    3732         adjustedHeights = self.getHeights($eqParent);
    3733         self.applyHeight($eqParent, adjustedHeights);
     3841    }
     3842    if (this.options.equalizeByRow) {
     3843      this.getHeightsByRow(this.applyHeightByRow.bind(this));
     3844    }else{
     3845      this.getHeights(this.applyHeight.bind(this));
     3846    }
     3847  };
     3848  /**
     3849   * Manually determines if the first 2 elements are *NOT* stacked.
     3850   * @private
     3851   */
     3852  Equalizer.prototype._isStacked = function(){
     3853    return this.$watched[0].offsetTop !== this.$watched[1].offsetTop;
     3854  };
     3855  /**
     3856   * Finds the outer heights of children contained within an Equalizer parent and returns them in an array
     3857   * @param {Function} cb - A non-optional callback to return the heights array to.
     3858   * @returns {Array} heights - An array of heights of children within Equalizer container
     3859   */
     3860  Equalizer.prototype.getHeights = function(cb){
     3861    var heights = [];
     3862    for(var i = 0, len = this.$watched.length; i < len; i++){
     3863      this.$watched[i].style.height = 'auto';
     3864      heights.push(this.$watched[i].offsetHeight);
     3865    }
     3866    cb(heights);
     3867  };
     3868  /**
     3869   * Finds the outer heights of children contained within an Equalizer parent and returns them in an array
     3870   * @param {Function} cb - A non-optional callback to return the heights array to.
     3871   * @returns {Array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child
     3872   */
     3873  Equalizer.prototype.getHeightsByRow = function(cb) {
     3874    var lastElTopOffset = this.$watched.first().offset().top,
     3875        groups = [],
     3876        group = 0;
     3877    //group by Row
     3878    groups[group] = [];
     3879    for(var i = 0, len = this.$watched.length; i < len; i++){
     3880      this.$watched[i].style.height = 'auto';
     3881      //maybe could use this.$watched[i].offsetTop
     3882      var elOffsetTop = $(this.$watched[i]).offset().top;
     3883      if (elOffsetTop!=lastElTopOffset) {
     3884        group++;
     3885        groups[group] = [];
     3886        lastElTopOffset=elOffsetTop;
    37343887      }
    3735     });
    3736   };
    3737   /**
    3738    * Finds the outer heights of children contained within an Equalizer parent and returns them in an array
    3739    * @param {Object} $eqParent A jQuery instance of an Equalizer container
    3740    * @returns {Array} heights An array of heights of children within Equalizer container
    3741    */
    3742   Equalizer.prototype.getHeights = function($eqParent) {
    3743     var eqGroupName = $eqParent.data('equalizer'),
    3744         eqGroup     = eqGroupName ? $eqParent.find('[' + this.attr + '-watch="' + eqGroupName + '"]:visible') : $eqParent.find('[' + this.attr + '-watch]:visible'),
    3745         heights;
    3746 
    3747     eqGroup.height('inherit');
    3748     heights = eqGroup.map(function () { return $(this).outerHeight(false);}).get();
    3749    
    3750     return heights;
     3888      groups[group].push([this.$watched[i],this.$watched[i].offsetHeight]);
     3889    }
     3890
     3891    for (var j = 0, ln = groups.length; j < ln; j++) {
     3892      var heights = $(groups[j]).map(function(){ return this[1]; }).get();
     3893      var max         = Math.max.apply(null, heights);
     3894      groups[j].push(max);
     3895    }
     3896    cb(groups);
    37513897  };
    37523898  /**
    37533899   * Changes the CSS height property of each child in an Equalizer parent to match the tallest
    3754    * @param {Object} $eqParent - A jQuery instance of an Equalizer container
    37553900   * @param {array} heights - An array of heights of children within Equalizer container
    3756    * @fires Equalizer#preEqualized
    3757    * @fires Equalizer#postEqualized
    3758    */
    3759   Equalizer.prototype.applyHeight = function($eqParent, heights) {
    3760     var eqGroupName = $eqParent.data('equalizer'),
    3761         eqGroup     = eqGroupName ? $eqParent.find('['+this.attr+'-watch="'+eqGroupName+'"]:visible') : $eqParent.find('['+this.attr+'-watch]:visible'),
    3762         max         = Math.max.apply(null, heights);
    3763 
     3901   * @fires Equalizer#preequalized
     3902   * @fires Equalizer#postequalized
     3903   */
     3904  Equalizer.prototype.applyHeight = function(heights){
     3905    var max = Math.max.apply(null, heights);
    37643906    /**
    37653907     * Fires before the heights are applied
    3766      * @event Equalizer#preEqualized
    3767      */
    3768     $eqParent.trigger('preEqualized.zf.Equalizer');
    3769 
    3770     // for now, apply the max height found in the array
    3771     for (var i = 0; i < eqGroup.length; i++) {
    3772       $(eqGroup[i]).css('height', max);
    3773     }
     3908     * @event Equalizer#preequalized
     3909     */
     3910    this.$element.trigger('preequalized.zf.equalizer');
     3911
     3912    this.$watched.css('height', max);
    37743913
    37753914    /**
    37763915     * Fires when the heights have been applied
    3777      * @event Equalizer#postEqualized
    3778      */
    3779     $eqParent.trigger('postEqualized.zf.Equalizer');
     3916     * @event Equalizer#postequalized
     3917     */
     3918     this.$element.trigger('postequalized.zf.equalizer');
     3919  };
     3920  /**
     3921   * Changes the CSS height property of each child in an Equalizer parent to match the tallest by row
     3922   * @param {array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child
     3923   * @fires Equalizer#preequalized
     3924   * @fires Equalizer#preequalizedRow
     3925   * @fires Equalizer#postequalizedRow
     3926   * @fires Equalizer#postequalized
     3927   */
     3928  Equalizer.prototype.applyHeightByRow = function(groups){
     3929    /**
     3930     * Fires before the heights are applied
     3931     */
     3932    this.$element.trigger('preequalized.zf.equalizer');
     3933    for (var i = 0, len = groups.length; i < len ; i++) {
     3934      var groupsILength = groups[i].length,
     3935          max = groups[i][groupsILength - 1];
     3936      if (groupsILength<=2) {
     3937        $(groups[i][0][0]).css({'height':'auto'});
     3938        continue;
     3939      }
     3940      /**
     3941        * Fires before the heights per row are applied
     3942        * @event Equalizer#preequalizedRow
     3943        */
     3944      this.$element.trigger('preequalizedrow.zf.equalizer');
     3945      for (var j = 0, lenJ = (groupsILength-1); j < lenJ ; j++) {
     3946        $(groups[i][j][0]).css({'height':max});
     3947      }
     3948      /**
     3949        * Fires when the heights per row have been applied
     3950        * @event Equalizer#postequalizedRow
     3951        */
     3952      this.$element.trigger('postequalizedrow.zf.equalizer');
     3953    }
     3954    /**
     3955     * Fires when the heights have been applied
     3956     */
     3957     this.$element.trigger('postequalized.zf.equalizer');
    37803958  };
    37813959  /**
     
    37843962   */
    37853963  Equalizer.prototype.destroy = function(){
    3786     //TODO this.
     3964    this._pauseEvents();
     3965    this.$watched.css('height', 'auto');
     3966
     3967    Foundation.unregisterPlugin(this);
    37873968  };
    37883969
     
    38244005    this._events();
    38254006
    3826     Foundation.registerPlugin(this);
     4007    Foundation.registerPlugin(this, 'Interchange');
    38274008  }
    38284009
     
    38614042   */
    38624043  Interchange.prototype._events = function() {
    3863     $(window).on('resize.fndtn.interchange', Foundation.util.throttle(this._reflow.bind(this), 50));
     4044    $(window).on('resize.zf.interchange', Foundation.util.throttle(this._reflow.bind(this), 50));
    38644045  };
    38654046
     
    39434124    if (this.currentPath === path) return;
    39444125
    3945     var _this = this;
     4126    var _this = this,
     4127        trigger = 'replaced.zf.interchange';
    39464128
    39474129    // Replacing images
    39484130    if (this.$element[0].nodeName === 'IMG') {
    39494131      this.$element.attr('src', path).load(function() {
    3950         _this.$element.trigger('replaced.zf.interchange');
    39514132        _this.currentPath = path;
    3952       });
     4133      })
     4134      .trigger(trigger);
    39534135    }
    39544136    // Replacing background images
    39554137    else if (path.match(/\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i)) {
    3956       this.$element.css({ 'background-image': 'url('+path+')' });
     4138      this.$element.css({ 'background-image': 'url('+path+')' })
     4139          .trigger(trigger);
    39574140    }
    39584141    // Replacing HTML
    39594142    else {
    39604143      $.get(path, function(response) {
    3961         _this.$element.html(response);
     4144        _this.$element.html(response)
     4145             .trigger(trigger);
    39624146        $(response).foundation();
    3963         _this.$element.trigger('replaced.zf.interchange');
    39644147        _this.currentPath = path;
    39654148      });
    39664149    }
     4150
     4151    /**
     4152     * Fires when content in an Interchange element is done being loaded.
     4153     * @event Interchange#replaced
     4154     */
     4155    // this.$element.trigger('replaced.zf.interchange');
    39674156  };
    39684157  /**
     
    40054194    this._init();
    40064195
    4007     Foundation.registerPlugin(this);
     4196    Foundation.registerPlugin(this, 'Magellan');
    40084197  }
    40094198
     
    41014290          easing:   _this.options.animationEasing
    41024291        };
    4103 
    41044292    $(window).one('load', function(){
     4293      if(_this.options.deepLinking){
     4294        if(location.hash){
     4295          _this.scrollToLoc(location.hash);
     4296        }
     4297      }
    41054298      _this.calcPoints();
    41064299      _this._updateActive();
     
    41124305    }).on('click.zf.magellan', 'a[href^="#"]', function(e) {
    41134306        e.preventDefault();
    4114         var arrival   = this.getAttribute('href'),
    4115             scrollPos = $(arrival).offset().top - _this.options.threshold / 2 - _this.options.barOffset;
    4116 
    4117         // requestAnimationFrame is disabled for this plugin currently
    4118         // Foundation.Move(_this.options.animationDuration, $body, function(){
    4119           $body.stop(true).animate({
    4120             scrollTop: scrollPos
    4121           }, opts);
    4122         });
    4123       // });
     4307        var arrival   = this.getAttribute('href');
     4308        _this.scrollToLoc(arrival);
     4309    });
     4310  };
     4311  /**
     4312   * Function to scroll to a given location on the page.
     4313   * @param {String} loc - a properly formatted jQuery id selector.
     4314   * @example '#foo'
     4315   * @function
     4316   */
     4317  Magellan.prototype.scrollToLoc = function(loc){
     4318    var scrollPos = $(loc).offset().top - this.options.threshold / 2 - this.options.barOffset;
     4319
     4320    $(document.body).stop(true).animate({
     4321        scrollTop: scrollPos
     4322      },
     4323      {
     4324        duration: this.options.animationDuration,
     4325        easiing: this.options.animationEasing
     4326     });
    41244327  };
    41254328  /**
     
    42014404 * OffCanvas module.
    42024405 * @module foundation.offcanvas
     4406 * @requires foundation.util.mediaQuery
    42034407 * @requires foundation.util.triggers
    42044408 * @requires foundation.util.motion
     
    42234427  this._events();
    42244428
    4225   Foundation.registerPlugin(this);
     4429  Foundation.registerPlugin(this, 'OffCanvas');
    42264430}
    42274431
     
    42554459  // isSticky: false,
    42564460  /**
    4257    * Allow the offcanvas to remain open for certain breakpoints. Can be used with `isSticky`.
     4461   * Allow the offcanvas to remain open for certain breakpoints.
    42584462   * @option
    42594463   * @example false
     
    42784482   * @example reveal-for-large
    42794483   */
    4280   revealClass: 'reveal-for-'
     4484  revealClass: 'reveal-for-',
     4485  /**
     4486   * Triggers optional focus trapping when opening an offcanvas. Sets tabindex of [data-off-canvas-content] to -1 for accessibility purposes.
     4487   * @option
     4488   * @example true
     4489   */
     4490  trapFocus: false
    42814491};
    42824492
     
    43274537 */
    43284538OffCanvas.prototype._events = function() {
    4329   this.$element.on({
     4539  this.$element.off('.zf.trigger .zf.offcanvas').on({
    43304540    'open.zf.trigger': this.open.bind(this),
    43314541    'close.zf.trigger': this.close.bind(this),
     
    43344544  });
    43354545
    4336   if (this.$exiter.length) {
    4337     var _this = this;
     4546  if (this.options.closeOnClick && this.$exiter.length) {
    43384547    this.$exiter.on({'click.zf.offcanvas': this.close.bind(this)});
    43394548  }
     
    43664575  var $closer = this.$element.find('[data-close]');
    43674576  if(isRevealed){
     4577    this.close();
     4578    this.isRevealed = true;
    43684579    // if(!this.options.forceTop){
    43694580    //   var scrollPos = parseInt(window.pageYOffset);
     
    43714582    // }
    43724583    // if(this.options.isSticky){ this._stick(); }
     4584    this.$element.off('open.zf.trigger toggle.zf.trigger');
    43734585    if($closer.length){ $closer.hide(); }
    43744586  }else{
     4587    this.isRevealed = false;
    43754588    // if(this.options.isSticky || !this.options.forceTop){
    43764589    //   this.$element[0].style.transform = '';
    43774590    //   $(window).off('scroll.zf.offcanvas');
    43784591    // }
     4592    this.$element.on({
     4593      'open.zf.trigger': this.open.bind(this),
     4594      'toggle.zf.trigger': this.toggle.bind(this)
     4595    });
    43794596    if($closer.length){
    43804597      $closer.show();
     
    43914608 */
    43924609OffCanvas.prototype.open = function(event, trigger) {
    4393   if (this.$element.hasClass('is-open')){ return; }
     4610  if (this.$element.hasClass('is-open') || this.isRevealed){ return; }
    43944611  var _this = this,
    43954612      $body = $(document.body);
     
    44134630    _this.$element
    44144631      .addClass('is-open')
    4415       .attr('aria-hidden', 'false')
    4416       .trigger('opened.zf.offcanvas');
    44174632
    44184633    // if(_this.options.isSticky){
     
    44204635    // }
    44214636  });
     4637  this.$element.attr('aria-hidden', 'false')
     4638      .trigger('opened.zf.offcanvas');
     4639
     4640  if(this.options.closeOnClick){
     4641    this.$exiter.addClass('is-visible');
     4642  }
    44224643  if(trigger){
    44234644    this.$lastTrigger = trigger.attr('aria-expanded', 'true');
     
    44284649    });
    44294650  }
     4651  if(this.options.trapFocus){
     4652    $('[data-off-canvas-content]').attr('tabindex', '-1');
     4653    this._trapFocus();
     4654  }
     4655};
     4656/**
     4657 * Traps focus within the offcanvas on open.
     4658 * @private
     4659 */
     4660OffCanvas.prototype._trapFocus = function(){
     4661  var focusable = Foundation.Keyboard.findFocusable(this.$element),
     4662      first = focusable.eq(0),
     4663      last = focusable.eq(-1);
     4664
     4665  focusable.off('.zf.offcanvas').on('keydown.zf.offcanvas', function(e){
     4666    if(e.which === 9 || e.keycode === 9){
     4667      if(e.target === last[0] && !e.shiftKey){
     4668        e.preventDefault();
     4669        first.focus();
     4670      }
     4671      if(e.target === first[0] && e.shiftKey){
     4672        e.preventDefault();
     4673        last.focus();
     4674      }
     4675    }
     4676  });
    44304677};
    44314678/**
     
    44514698 * Closes the off-canvas menu.
    44524699 * @function
     4700 * @param {Function} cb - optional cb to fire after closure.
    44534701 * @fires OffCanvas#closed
    44544702 */
    4455 OffCanvas.prototype.close = function() {
    4456   if(!this.$element.hasClass('is-open')){ return; }
     4703OffCanvas.prototype.close = function(cb) {
     4704  if(!this.$element.hasClass('is-open') || this.isRevealed){ return; }
    44574705
    44584706  var _this = this;
    44594707
    4460    Foundation.Move(this.options.transitionTime, this.$element, function(){
    4461     $('[data-off-canvas-wrapper]').removeClass('is-off-canvas-open is-open-'+_this.options.position);
    4462 
    4463     _this.$element.removeClass('is-open');
     4708  //  Foundation.Move(this.options.transitionTime, this.$element, function(){
     4709  $('[data-off-canvas-wrapper]').removeClass('is-off-canvas-open is-open-' + _this.options.position);
     4710  _this.$element.removeClass('is-open');
    44644711    // Foundation._reflow();
    4465   });
     4712  // });
    44664713  this.$element.attr('aria-hidden', 'true')
    44674714    /**
     
    44764723  //   }, this.options.transitionTime);
    44774724  // }
     4725  if(this.options.closeOnClick){
     4726    this.$exiter.removeClass('is-visible');
     4727  }
    44784728
    44794729  this.$lastTrigger.attr('aria-expanded', 'false');
     4730  if(this.options.trapFocus){
     4731    $('[data-off-canvas-content]').removeAttr('tabindex');
     4732  }
     4733
    44804734};
    44814735
     
    45134767 */
    45144768OffCanvas.prototype.destroy = function(){
    4515   //TODO make this...
     4769  this.close();
     4770  this.$element.off('.zf.trigger .zf.offcanvas');
     4771  this.$exiter.off('.zf.offcanvas');
     4772
     4773  Foundation.unregisterPlugin(this);
    45164774};
    45174775
     
    45214779
    45224780/**
    4523  * Orbit module.
    4524  * @module foundation.orbit
    4525  * @requires foundation.util.keyboard
    4526  * @requires foundation.util.motion
    4527  * @requires foundation.util.timerAndImageLoader
    4528  * @requires foundation.util.touch
    4529  */
     4781* Orbit module.
     4782* @module foundation.orbit
     4783* @requires foundation.util.keyboard
     4784* @requires foundation.util.motion
     4785* @requires foundation.util.timerAndImageLoader
     4786* @requires foundation.util.touch
     4787*/
    45304788!function($, Foundation){
    45314789  'use strict';
    45324790  /**
    4533    * Creates a new instance of an orbit carousel.
    4534    * @class
    4535    * @param {jQuery} element - jQuery object to make into an Orbit Carousel.
    4536    * @param {Object} options - Overrides to the default plugin settings.
    4537    */
     4791  * Creates a new instance of an orbit carousel.
     4792  * @class
     4793  * @param {jQuery} element - jQuery object to make into an Orbit Carousel.
     4794  * @param {Object} options - Overrides to the default plugin settings.
     4795  */
    45384796  function Orbit(element, options){
    45394797    this.$element = element;
     
    45424800    this._init();
    45434801
    4544     Foundation.registerPlugin(this);
     4802    Foundation.registerPlugin(this, 'Orbit');
    45454803    Foundation.Keyboard.register('Orbit', {
    4546         'ltr': {
    4547           'ARROW_RIGHT': 'next',
    4548           'ARROW_LEFT': 'previous'
    4549         },
    4550         'rtl': {
    4551           'ARROW_LEFT': 'next',
    4552           'ARROW_RIGHT': 'previous'
    4553         }
     4804      'ltr': {
     4805        'ARROW_RIGHT': 'next',
     4806        'ARROW_LEFT': 'previous'
     4807      },
     4808      'rtl': {
     4809        'ARROW_LEFT': 'next',
     4810        'ARROW_RIGHT': 'previous'
     4811      }
    45544812    });
    45554813  }
    45564814  Orbit.defaults = {
    45574815    /**
    4558      * Tells the JS to loadBullets.
    4559      * @option
    4560      * @example true
    4561      */
     4816    * Tells the JS to loadBullets.
     4817    * @option
     4818    * @example true
     4819    */
    45624820    bullets: true,
    45634821    /**
    4564      * Tells the JS to apply event listeners to nav buttons
    4565      * @option
    4566      * @example true
    4567      */
     4822    * Tells the JS to apply event listeners to nav buttons
     4823    * @option
     4824    * @example true
     4825    */
    45684826    navButtons: true,
    45694827    /**
    4570      * motion-ui animation class to apply
    4571      * @option
    4572      * @example 'slide-in-right'
    4573      */
     4828    * motion-ui animation class to apply
     4829    * @option
     4830    * @example 'slide-in-right'
     4831    */
    45744832    animInFromRight: 'slide-in-right',
    45754833    /**
    4576      * motion-ui animation class to apply
    4577      * @option
    4578      * @example 'slide-out-right'
    4579      */
     4834    * motion-ui animation class to apply
     4835    * @option
     4836    * @example 'slide-out-right'
     4837    */
    45804838    animOutToRight: 'slide-out-right',
    45814839    /**
    4582      * motion-ui animation class to apply
    4583      * @option
    4584      * @example 'slide-in-left'
    4585      *
    4586      */
     4840    * motion-ui animation class to apply
     4841    * @option
     4842    * @example 'slide-in-left'
     4843    *
     4844    */
    45874845    animInFromLeft: 'slide-in-left',
    45884846    /**
    4589      * motion-ui animation class to apply
    4590      * @option
    4591      * @example 'slide-out-left'
    4592      */
     4847    * motion-ui animation class to apply
     4848    * @option
     4849    * @example 'slide-out-left'
     4850    */
    45934851    animOutToLeft: 'slide-out-left',
    45944852    /**
    4595      * Allows Orbit to automatically animate on page load.
    4596      * @option
    4597      * @example true
    4598      */
     4853    * Allows Orbit to automatically animate on page load.
     4854    * @option
     4855    * @example true
     4856    */
    45994857    autoPlay: true,
    46004858    /**
    4601      * Amount of time, in ms, between slide transitions
    4602      * @option
    4603      * @example 5000
    4604      */
     4859    * Amount of time, in ms, between slide transitions
     4860    * @option
     4861    * @example 5000
     4862    */
    46054863    timerDelay: 5000,
    46064864    /**
    4607      * Allows Orbit to infinitely loop through the slides
    4608      * @option
    4609      * @example true
    4610      */
     4865    * Allows Orbit to infinitely loop through the slides
     4866    * @option
     4867    * @example true
     4868    */
    46114869    infiniteWrap: true,
    46124870    /**
    4613      * Allows the Orbit slides to bind to swipe events for mobile, requires an additional util library
    4614      * @option
    4615      * @example true
    4616      */
     4871    * Allows the Orbit slides to bind to swipe events for mobile, requires an additional util library
     4872    * @option
     4873    * @example true
     4874    */
    46174875    swipe: true,
    46184876    /**
    4619      * Allows the timing function to pause animation on hover.
    4620      * @option
    4621      * @example true
    4622      */
     4877    * Allows the timing function to pause animation on hover.
     4878    * @option
     4879    * @example true
     4880    */
    46234881    pauseOnHover: true,
    46244882    /**
    4625      * Allows Orbit to bind keyboard events to the slider, to animate frames with arrow keys
    4626      * @option
    4627      * @example true
    4628      */
     4883    * Allows Orbit to bind keyboard events to the slider, to animate frames with arrow keys
     4884    * @option
     4885    * @example true
     4886    */
    46294887    accessible: true,
    46304888    /**
    4631      * Class applied to the container of Orbit
    4632      * @option
    4633      * @example 'orbit-container'
    4634      */
     4889    * Class applied to the container of Orbit
     4890    * @option
     4891    * @example 'orbit-container'
     4892    */
    46354893    containerClass: 'orbit-container',
    46364894    /**
    4637      * Class applied to individual slides.
    4638      * @option
    4639      * @example 'orbit-slide'
    4640      */
     4895    * Class applied to individual slides.
     4896    * @option
     4897    * @example 'orbit-slide'
     4898    */
    46414899    slideClass: 'orbit-slide',
    46424900    /**
    4643      * Class applied to the bullet container. You're welcome.
    4644      * @option
    4645      * @example 'orbit-bullets'
    4646      */
     4901    * Class applied to the bullet container. You're welcome.
     4902    * @option
     4903    * @example 'orbit-bullets'
     4904    */
    46474905    boxOfBullets: 'orbit-bullets',
    46484906    /**
    4649      * Class applied to the `next` navigation button.
    4650      * @option
    4651      * @example 'orbit-next'
    4652      */
     4907    * Class applied to the `next` navigation button.
     4908    * @option
     4909    * @example 'orbit-next'
     4910    */
    46534911    nextClass: 'orbit-next',
    46544912    /**
    4655      * Class applied to the `previous` navigation button.
    4656      * @option
    4657      * @example 'orbit-previous'
    4658      */
     4913    * Class applied to the `previous` navigation button.
     4914    * @option
     4915    * @example 'orbit-previous'
     4916    */
    46594917    prevClass: 'orbit-previous',
    46604918    /**
    4661      * Boolean to flag the js to use motion ui classes or not. Default to true for backwards compatability.
    4662      * @option
    4663      * @example true
    4664      */
     4919    * Boolean to flag the js to use motion ui classes or not. Default to true for backwards compatability.
     4920    * @option
     4921    * @example true
     4922    */
    46654923    useMUI: true
    46664924  };
    46674925  /**
    4668    * Initializes the plugin by creating jQuery collections, setting attributes, and starting the animation.
    4669    * @function
    4670    * @private
    4671    */
     4926  * Initializes the plugin by creating jQuery collections, setting attributes, and starting the animation.
     4927  * @function
     4928  * @private
     4929  */
    46724930  Orbit.prototype._init = function(){
    46734931    this.$wrapper = this.$element.find('.' + this.options.containerClass);
    46744932    this.$slides = this.$element.find('.' + this.options.slideClass);
    46754933    var $images = this.$element.find('img'),
    4676         initActive = this.$slides.filter('.is-active');
     4934    initActive = this.$slides.filter('.is-active');
    46774935
    46784936    if(!initActive.length){
     
    46944952    this._events();
    46954953
    4696     if(this.options.autoPlay){
     4954    if(this.options.autoPlay && this.$slides.length > 1){
    46974955      this.geoSync();
    46984956    }
     
    47024960  };
    47034961  /**
    4704    * Creates a jQuery collection of bullets, if they are being used.
    4705    * @function
    4706    * @private
    4707    */
     4962  * Creates a jQuery collection of bullets, if they are being used.
     4963  * @function
     4964  * @private
     4965  */
    47084966  Orbit.prototype._loadBullets = function(){
    47094967    this.$bullets = this.$element.find('.' + this.options.boxOfBullets).find('button');
    47104968  };
    47114969  /**
    4712    * Sets a `timer` object on the orbit, and starts the counter for the next slide.
    4713    * @function
    4714    */
     4970  * Sets a `timer` object on the orbit, and starts the counter for the next slide.
     4971  * @function
     4972  */
    47154973  Orbit.prototype.geoSync = function(){
    47164974    var _this = this;
    47174975    this.timer = new Foundation.Timer(
    4718                       this.$element,
    4719                       {duration: this.options.timerDelay,
    4720                        infinite: false},
    4721                       function(){
    4722                         _this.changeSlide(true);
    4723                       });
    4724     this.timer.start();
    4725   };
    4726   /**
    4727    * Sets wrapper and slide heights for the orbit.
    4728    * @function
    4729    * @private
    4730    */
    4731   Orbit.prototype._prepareForOrbit = function(){
    4732     var _this = this;
    4733     this._setWrapperHeight(function(max){
    4734       _this._setSlideHeight(max);
    4735     });
    4736   };
    4737   /**
    4738    * Calulates the height of each slide in the collection, and uses the tallest one for the wrapper height.
    4739    * @function
    4740    * @private
    4741    * @param {Function} cb - a callback function to fire when complete.
    4742    */
    4743   Orbit.prototype._setWrapperHeight = function(cb){//rewrite this to `for` loop
    4744     var max = 0, temp, counter = 0;
    4745 
    4746     this.$slides.each(function(){
    4747       temp = this.getBoundingClientRect().height;
    4748       $(this).attr('data-slide', counter);
    4749 
    4750       if(counter){//if not the first slide, set css position and display property
    4751         $(this).css({'position': 'relative', 'display': 'none'});
    4752       }
    4753       max = temp > max ? temp : max;
    4754       counter++;
    4755     });
    4756 
    4757     if(counter === this.$slides.length){
    4758       this.$wrapper.css({'height': max});//only change the wrapper height property once.
    4759       cb(max);//fire callback with max height dimension.
    4760     }
    4761   };
    4762   /**
    4763    * Sets the max-height of each slide.
    4764    * @function
    4765    * @private
    4766    */
    4767   Orbit.prototype._setSlideHeight = function(height){
    4768     this.$slides.each(function(){
    4769       $(this).css('max-height', height);
    4770     });
    4771   };
    4772   /**
    4773    * Adds event listeners to basically everything within the element.
    4774    * @function
    4775    * @private
    4776    */
    4777   Orbit.prototype._events = function(){
    4778     var _this = this;
    4779 
    4780     //***************************************
    4781     //**Now using custom event - thanks to:**
    4782     //**      Yohai Ararat of Toronto      **
    4783     //***************************************
    4784     if(this.options.swipe){
    4785       this.$slides.off('swipeleft.zf.orbit swiperight.zf.orbit')
    4786       .on('swipeleft.zf.orbit', function(e){
    4787         e.preventDefault();
    4788         _this.changeSlide(true);
    4789       }).on('swiperight.zf.orbit', function(e){
    4790         e.preventDefault();
    4791         _this.changeSlide(false);
    4792       });
    4793     }
    4794     //***************************************
    4795 
    4796     if(this.options.autoPlay){
    4797       this.$slides.on('click.zf.orbit', function(){
    4798         _this.$element.data('clickedOn', _this.$element.data('clickedOn') ? false : true);
    4799         _this.timer[_this.$element.data('clickedOn') ? 'pause' : 'start']();
    4800       });
    4801       if(this.options.pauseOnHover){
    4802         this.$element.on('mouseenter.zf.orbit', function(){
    4803           _this.timer.pause();
    4804         }).on('mouseleave.zf.orbit', function(){
    4805           if(!_this.$element.data('clickedOn')){
    4806             _this.timer.start();
     4976      this.$element,
     4977      {duration: this.options.timerDelay,
     4978        infinite: false},
     4979        function(){
     4980          _this.changeSlide(true);
     4981        });
     4982        this.timer.start();
     4983      };
     4984      /**
     4985      * Sets wrapper and slide heights for the orbit.
     4986      * @function
     4987      * @private
     4988      */
     4989      Orbit.prototype._prepareForOrbit = function(){
     4990        var _this = this;
     4991        this._setWrapperHeight(function(max){
     4992          _this._setSlideHeight(max);
     4993        });
     4994      };
     4995      /**
     4996      * Calulates the height of each slide in the collection, and uses the tallest one for the wrapper height.
     4997      * @function
     4998      * @private
     4999      * @param {Function} cb - a callback function to fire when complete.
     5000      */
     5001      Orbit.prototype._setWrapperHeight = function(cb){//rewrite this to `for` loop
     5002        var max = 0, temp, counter = 0;
     5003
     5004        this.$slides.each(function(){
     5005          temp = this.getBoundingClientRect().height;
     5006          $(this).attr('data-slide', counter);
     5007
     5008          if(counter){//if not the first slide, set css position and display property
     5009            $(this).css({'position': 'relative', 'display': 'none'});
    48075010          }
     5011          max = temp > max ? temp : max;
     5012          counter++;
    48085013        });
    4809       }
    4810     }
    4811 
    4812     if(this.options.navButtons){
    4813       var $controls = this.$element.find('.' + this.options.nextClass + ', .' + this.options.prevClass);
    4814       $controls.attr('tabindex', 0)
    4815         //also need to handle enter/return and spacebar key presses
    4816                .on('click.zf.orbit touchend.zf.orbit', function(){
    4817                  _this.changeSlide($(this).hasClass(_this.options.nextClass));
    4818                });
    4819     }
    4820 
    4821     if(this.options.bullets){
    4822       this.$bullets.on('click.zf.orbit touchend.zf.orbit', function(){
    4823         if(/is-active/g.test(this.className)){ return false; }//if this is active, kick out of function.
    4824         var idx = $(this).data('slide'),
    4825             ltr = idx > _this.$slides.filter('.is-active').data('slide'),
    4826             $slide = _this.$slides.eq(idx);
    4827 
    4828         _this.changeSlide(ltr, $slide, idx);
    4829       });
    4830     }
    4831 
    4832     this.$wrapper.add(this.$bullets).on('keydown.zf.orbit', function(e){
    4833       // handle keyboard event with keyboard util
    4834       Foundation.Keyboard.handleKey(e, 'Orbit', {
    4835         next: function() {
    4836           _this.changeSlide(true);
    4837         },
    4838         previous: function() {
    4839           _this.changeSlide(false);
    4840         },
    4841         handled: function() { // if bullet is focused, make sure focus moves
    4842           if ($(e.target).is(_this.$bullets)) {
    4843             _this.$bullets.filter('.is-active').focus();
     5014
     5015        if(counter === this.$slides.length){
     5016          this.$wrapper.css({'height': max});//only change the wrapper height property once.
     5017          cb(max);//fire callback with max height dimension.
     5018        }
     5019      };
     5020      /**
     5021      * Sets the max-height of each slide.
     5022      * @function
     5023      * @private
     5024      */
     5025      Orbit.prototype._setSlideHeight = function(height){
     5026        this.$slides.each(function(){
     5027          $(this).css('max-height', height);
     5028        });
     5029      };
     5030      /**
     5031      * Adds event listeners to basically everything within the element.
     5032      * @function
     5033      * @private
     5034      */
     5035      Orbit.prototype._events = function(){
     5036        var _this = this;
     5037
     5038        //***************************************
     5039        //**Now using custom event - thanks to:**
     5040        //**      Yohai Ararat of Toronto      **
     5041        //***************************************
     5042        if(this.$slides.length > 1){
     5043
     5044          if(this.options.swipe){
     5045            this.$slides.off('swipeleft.zf.orbit swiperight.zf.orbit')
     5046            .on('swipeleft.zf.orbit', function(e){
     5047              e.preventDefault();
     5048              _this.changeSlide(true);
     5049            }).on('swiperight.zf.orbit', function(e){
     5050              e.preventDefault();
     5051              _this.changeSlide(false);
     5052            });
    48445053          }
     5054          //***************************************
     5055
     5056          if(this.options.autoPlay){
     5057            this.$slides.on('click.zf.orbit', function(){
     5058              _this.$element.data('clickedOn', _this.$element.data('clickedOn') ? false : true);
     5059              _this.timer[_this.$element.data('clickedOn') ? 'pause' : 'start']();
     5060            });
     5061            if(this.options.pauseOnHover){
     5062              this.$element.on('mouseenter.zf.orbit', function(){
     5063                _this.timer.pause();
     5064              }).on('mouseleave.zf.orbit', function(){
     5065                if(!_this.$element.data('clickedOn')){
     5066                  _this.timer.start();
     5067                }
     5068              });
     5069            }
     5070          }
     5071
     5072          if(this.options.navButtons){
     5073            var $controls = this.$element.find('.' + this.options.nextClass + ', .' + this.options.prevClass);
     5074            $controls.attr('tabindex', 0)
     5075            //also need to handle enter/return and spacebar key presses
     5076            .on('click.zf.orbit touchend.zf.orbit', function(){
     5077              _this.changeSlide($(this).hasClass(_this.options.nextClass));
     5078            });
     5079          }
     5080
     5081          if(this.options.bullets){
     5082            this.$bullets.on('click.zf.orbit touchend.zf.orbit', function(){
     5083              if(/is-active/g.test(this.className)){ return false; }//if this is active, kick out of function.
     5084              var idx = $(this).data('slide'),
     5085              ltr = idx > _this.$slides.filter('.is-active').data('slide'),
     5086              $slide = _this.$slides.eq(idx);
     5087
     5088              _this.changeSlide(ltr, $slide, idx);
     5089            });
     5090          }
     5091
     5092          this.$wrapper.add(this.$bullets).on('keydown.zf.orbit', function(e){
     5093            // handle keyboard event with keyboard util
     5094            Foundation.Keyboard.handleKey(e, 'Orbit', {
     5095              next: function() {
     5096                _this.changeSlide(true);
     5097              },
     5098              previous: function() {
     5099                _this.changeSlide(false);
     5100              },
     5101              handled: function() { // if bullet is focused, make sure focus moves
     5102                if ($(e.target).is(_this.$bullets)) {
     5103                  _this.$bullets.filter('.is-active').focus();
     5104                }
     5105              }
     5106            });
     5107          });
    48455108        }
    4846       });
    4847     });
    4848   };
    4849   /**
    4850    * Changes the current slide to a new one.
    4851    * @function
    4852    * @param {Boolean} isLTR - flag if the slide should move left to right.
    4853    * @param {jQuery} chosenSlide - the jQuery element of the slide to show next, if one is selected.
    4854    * @param {Number} idx - the index of the new slide in its collection, if one chosen.
    4855    * @fires Orbit#slidechange
    4856    */
    4857   Orbit.prototype.changeSlide = function(isLTR, chosenSlide, idx){
    4858     var $curSlide = this.$slides.filter('.is-active').eq(0);
    4859 
    4860     if(/mui/g.test($curSlide[0].className)){ return false; }//if the slide is currently animating, kick out of the function
    4861 
    4862     var $firstSlide = this.$slides.first(),
     5109      };
     5110      /**
     5111      * Changes the current slide to a new one.
     5112      * @function
     5113      * @param {Boolean} isLTR - flag if the slide should move left to right.
     5114      * @param {jQuery} chosenSlide - the jQuery element of the slide to show next, if one is selected.
     5115      * @param {Number} idx - the index of the new slide in its collection, if one chosen.
     5116      * @fires Orbit#slidechange
     5117      */
     5118      Orbit.prototype.changeSlide = function(isLTR, chosenSlide, idx){
     5119        var $curSlide = this.$slides.filter('.is-active').eq(0);
     5120
     5121        if(/mui/g.test($curSlide[0].className)){ return false; }//if the slide is currently animating, kick out of the function
     5122
     5123        var $firstSlide = this.$slides.first(),
    48635124        $lastSlide = this.$slides.last(),
    48645125        dirIn = isLTR ? 'Right' : 'Left',
     
    48675128        $newSlide;
    48685129
    4869     if(!chosenSlide){//most of the time, this will be auto played or clicked from the navButtons.
    4870       $newSlide = isLTR ? //if wrapping enabled, check to see if there is a `next` or `prev` sibling, if not, select the first or last slide to fill in. if wrapping not enabled, attempt to select `next` or `prev`, if there's nothing there, the function will kick out on next step. CRAZY NESTED TERNARIES!!!!!
    4871                     (this.options.infiniteWrap ? $curSlide.next('.' + this.options.slideClass).length ? $curSlide.next('.' + this.options.slideClass) : $firstSlide : $curSlide.next('.' + this.options.slideClass))//pick next slide if moving left to right
    4872                     :
    4873                     (this.options.infiniteWrap ? $curSlide.prev('.' + this.options.slideClass).length ? $curSlide.prev('.' + this.options.slideClass) : $lastSlide : $curSlide.prev('.' + this.options.slideClass));//pick prev slide if moving right to left
    4874     }else{
    4875       $newSlide = chosenSlide;
    4876     }
    4877     if($newSlide.length){
    4878       if(this.options.bullets){
    4879         idx = idx || this.$slides.index($newSlide);//grab index to update bullets
    4880         this._updateBullets(idx);
    4881       }
    4882       if(this.options.useMUI){
    4883 
    4884         Foundation.Motion.animateIn(
    4885           $newSlide.addClass('is-active').css({'position': 'absolute', 'top': 0}),
    4886           this.options['animInFrom' + dirIn],
    4887           function(){
    4888             $newSlide.css({'position': 'relative', 'display': 'block'})
    4889                      .attr('aria-live', 'polite');
    4890           });
    4891 
    4892         Foundation.Motion.animateOut(
    4893           $curSlide.removeClass('is-active'),
    4894           this.options['animOutTo' + dirOut],
    4895           function(){
    4896             $curSlide.removeAttr('aria-live');
    4897             if(_this.options.autoPlay){
    4898               _this.timer.restart();
     5130        if(!chosenSlide){//most of the time, this will be auto played or clicked from the navButtons.
     5131          $newSlide = isLTR ? //if wrapping enabled, check to see if there is a `next` or `prev` sibling, if not, select the first or last slide to fill in. if wrapping not enabled, attempt to select `next` or `prev`, if there's nothing there, the function will kick out on next step. CRAZY NESTED TERNARIES!!!!!
     5132          (this.options.infiniteWrap ? $curSlide.next('.' + this.options.slideClass).length ? $curSlide.next('.' + this.options.slideClass) : $firstSlide : $curSlide.next('.' + this.options.slideClass))//pick next slide if moving left to right
     5133          :
     5134          (this.options.infiniteWrap ? $curSlide.prev('.' + this.options.slideClass).length ? $curSlide.prev('.' + this.options.slideClass) : $lastSlide : $curSlide.prev('.' + this.options.slideClass));//pick prev slide if moving right to left
     5135        }else{
     5136          $newSlide = chosenSlide;
     5137        }
     5138        if($newSlide.length){
     5139          if(this.options.bullets){
     5140            idx = idx || this.$slides.index($newSlide);//grab index to update bullets
     5141            this._updateBullets(idx);
     5142          }
     5143          if(this.options.useMUI){
     5144
     5145            Foundation.Motion.animateIn(
     5146              $newSlide.addClass('is-active').css({'position': 'absolute', 'top': 0}),
     5147              this.options['animInFrom' + dirIn],
     5148              function(){
     5149                $newSlide.css({'position': 'relative', 'display': 'block'})
     5150                .attr('aria-live', 'polite');
     5151              });
     5152
     5153              Foundation.Motion.animateOut(
     5154                $curSlide.removeClass('is-active'),
     5155                this.options['animOutTo' + dirOut],
     5156                function(){
     5157                  $curSlide.removeAttr('aria-live');
     5158                  if(_this.options.autoPlay && !_this.timer.isPaused){
     5159                    _this.timer.restart();
     5160                  }
     5161                  //do stuff?
     5162                });
     5163              }else{
     5164                $curSlide.removeClass('is-active is-in').removeAttr('aria-live').hide();
     5165                $newSlide.addClass('is-active is-in').attr('aria-live', 'polite').show();
     5166                if(this.options.autoPlay && !this.timer.isPaused){
     5167                  this.timer.restart();
     5168                }
     5169              }
     5170              /**
     5171              * Triggers when the slide has finished animating in.
     5172              * @event Orbit#slidechange
     5173              */
     5174              this.$element.trigger('slidechange.zf.orbit', [$newSlide]);
    48995175            }
    4900             //do stuff?
    4901           });
    4902       }else{
    4903         $curSlide.removeClass('is-active is-in').removeAttr('aria-live').hide();
    4904         $newSlide.addClass('is-active is-in').attr('aria-live', 'polite').show();
    4905         if(this.options.autoPlay){
    4906           this.timer.restart();
    4907         }
    4908       }
    4909       /**
    4910        * Triggers when the slide has finished animating in.
    4911        * @event Orbit#slidechange
    4912        */
    4913       this.$element.trigger('slidechange.zf.orbit', [$newSlide]);
    4914     }
    4915   };
    4916   /**
    4917    * Updates the active state of the bullets, if displayed.
    4918    * @function
    4919    * @private
    4920    * @param {Number} idx - the index of the current slide.
    4921    */
    4922   Orbit.prototype._updateBullets = function(idx){
    4923     var $oldBullet = this.$element.find('.' + this.options.boxOfBullets)
    4924                                   .find('.is-active').removeClass('is-active').blur(),
    4925         span = $oldBullet.find('span:last').detach(),
    4926         $newBullet = this.$bullets.eq(idx).addClass('is-active').append(span);
    4927   };
    4928   /**
    4929    * Destroys the carousel and hides the element.
    4930    * @function
    4931    */
    4932   Orbit.prototype.destroy = function(){
    4933     delete this.timer;
    4934     this.$element.off('.zf.orbit').find('*').off('.zf.orbit').end().hide();
    4935     Foundation.unregisterPlugin(this);
    4936   };
    4937 
    4938   Foundation.plugin(Orbit, 'Orbit');
    4939 
    4940 }(jQuery, window.Foundation);
     5176          };
     5177          /**
     5178          * Updates the active state of the bullets, if displayed.
     5179          * @function
     5180          * @private
     5181          * @param {Number} idx - the index of the current slide.
     5182          */
     5183          Orbit.prototype._updateBullets = function(idx){
     5184            var $oldBullet = this.$element.find('.' + this.options.boxOfBullets)
     5185            .find('.is-active').removeClass('is-active').blur(),
     5186            span = $oldBullet.find('span:last').detach(),
     5187            $newBullet = this.$bullets.eq(idx).addClass('is-active').append(span);
     5188          };
     5189          /**
     5190          * Destroys the carousel and hides the element.
     5191          * @function
     5192          */
     5193          Orbit.prototype.destroy = function(){
     5194            this.$element.off('.zf.orbit').find('*').off('.zf.orbit').end().hide();
     5195            Foundation.unregisterPlugin(this);
     5196          };
     5197
     5198          Foundation.plugin(Orbit, 'Orbit');
     5199
     5200        }(jQuery, window.Foundation);
    49415201
    49425202/**
     
    49685228  };
    49695229
    4970   // [PH] Media queries
    4971   var phMedia = {
    4972     small: '(min-width: 0px)',
    4973     medium: '(min-width: 640px)'
    4974   };
    4975 
    49765230  /**
    49775231   * Creates a new instance of a responsive menu.
     
    49905244    this._events();
    49915245
    4992     Foundation.registerPlugin(this);
     5246    Foundation.registerPlugin(this, 'ResponsiveMenu');
    49935247  }
    49945248
     
    51095363  this._events();
    51105364
    5111   Foundation.registerPlugin(this);
     5365  Foundation.registerPlugin(this, 'ResponsiveToggle');
    51125366}
    51135367
     
    52175471    this._init();
    52185472
    5219     Foundation.registerPlugin(this);
     5473    Foundation.registerPlugin(this, 'Reveal');
    52205474    Foundation.Keyboard.register('Reveal', {
    52215475      'ENTER': 'open',
     
    53015555    overlay: true,
    53025556    /**
    5303      * Allows the modal to remove and reinject markup on close. Should be true if using video elements w/o using provider's api.
     5557     * Allows the modal to remove and reinject markup on close. Should be true if using video elements w/o using provider's api, otherwise, videos will continue to play in the background.
    53045558     * @option
    53055559     * @example false
    53065560     */
    5307     resetOnClose: false
     5561    resetOnClose: false,
     5562    /**
     5563     * Allows the modal to alter the url on open/close, and allows the use of the `back` button to close modals. ALSO, allows a modal to auto-maniacally open on page load IF the hash === the modal's user-set id.
     5564     * @option
     5565     * @example false
     5566     */
     5567    deepLink: false
    53085568  };
    53095569
     
    53475607
    53485608    this._events();
     5609    if(this.options.deepLink && window.location.hash === ( '#' + this.id)){
     5610      $(window).one('load.zf.reveal', this.open.bind(this));
     5611    }
    53495612  };
    53505613
     
    53985661      this.$overlay.off('.zf.reveal').on('click.zf.reveal', this.close.bind(this));
    53995662    }
     5663    if(this.options.deepLink){
     5664      $(window).on('popstate.zf.reveal:' + this.id, this._handleState.bind(this));
     5665    }
     5666  };
     5667  /**
     5668   * Handles modal methods on back/forward button clicks or any other event that triggers popstate.
     5669   * @private
     5670   */
     5671  Reveal.prototype._handleState = function(e){
     5672    if(window.location.hash === ( '#' + this.id) && !this.isActive){ this.open(); }
     5673    else{ this.close(); }
    54005674  };
    54015675  /**
     
    54455719   */
    54465720  Reveal.prototype.open = function(){
     5721    if(this.options.deepLink){
     5722      var hash = '#' + this.id;
     5723
     5724      if(window.history.pushState){
     5725        window.history.pushState(null, null, hash);
     5726      }else{
     5727        window.location.hash = hash;
     5728      }
     5729    }
     5730
    54475731    var _this = this;
    54485732    this.isActive = true;
     
    55025786    setTimeout(function(){
    55035787      _this._extraHandlers();
    5504       // Foundation.reflow();
    55055788    }, 0);
    55065789  };
     
    55165799    if(!this.options.overlay && this.options.closeOnClick && !this.options.fullScreen){
    55175800      $('body').on('click.zf.reveal', function(e){
    5518         // if()
    5519           _this.close();
     5801        if(e.target === _this.$element[0] || $.contains(_this.$element[0], e.target)){ return; }
     5802        _this.close();
    55205803      });
    55215804    }
     
    55875870      Foundation.Motion.animateOut(this.$element, this.options.animationOut, function(){
    55885871        if(_this.options.overlay){
    5589           Foundation.Motion.animateOut(_this.$overlay, 'fade-out', function(){
    5590           });
    5591         }
     5872          Foundation.Motion.animateOut(_this.$overlay, 'fade-out', finishUp);
     5873        }else{ finishUp(); }
    55925874      });
    55935875    }else{
    55945876      this.$element.hide(_this.options.hideDelay, function(){
    55955877        if(_this.options.overlay){
    5596           _this.$overlay.hide(0, function(){
    5597           });
    5598         }
     5878          _this.$overlay.hide(0, finishUp);
     5879        }else{ finishUp(); }
    55995880      });
    56005881    }
     
    56075888    }
    56085889    this.$element.off('keydown.zf.reveal');
    5609 
    5610     //if the modal changed size, reset it
    5611     if(this.changedSize){
    5612       this.$element.css({
    5613         'height': '',
    5614         'width': ''
    5615       });
    5616     }
    5617 
    5618     $('body').removeClass('is-reveal-open').attr({'aria-hidden': false, 'tabindex': ''});
     5890    function finishUp(){
     5891      //if the modal changed size, reset it
     5892      if(_this.changedSize){
     5893        _this.$element.css({
     5894          'height': '',
     5895          'width': ''
     5896        });
     5897      }
     5898      $('body').removeClass('is-reveal-open').attr({'aria-hidden': false, 'tabindex': ''});
     5899      _this.$element.attr({'aria-hidden': true})
     5900      /**
     5901      * Fires when the modal is done closing.
     5902      * @event Reveal#closed
     5903      */
     5904      .trigger('closed.zf.reveal');
     5905    }
     5906
    56195907
    56205908    /**
     
    56275915
    56285916    this.isActive = false;
    5629     this.$element.attr({'aria-hidden': true})
    5630     /**
    5631      * Fires when the modal is done closing.
    5632      * @event Reveal#closed
    5633      */
    5634                  .trigger('closed.zf.reveal');
     5917     if(_this.options.deepLink){
     5918       if(window.history.replaceState){
     5919         window.history.replaceState("", document.title, window.location.pathname);
     5920       }else{
     5921         window.location.hash = '';
     5922       }
     5923     }
    56355924  };
    56365925  /**
     
    56545943      this.$overlay.hide().off().remove();
    56555944    }
    5656     this.$element.hide();
    5657     this.$anchor.off();
     5945    this.$element.hide().off();
     5946    this.$anchor.off('.zf');
     5947    $(window).off('.zf.reveal:' + this.id);
    56585948
    56595949    Foundation.unregisterPlugin(this);
     
    56955985    this._init();
    56965986
    5697     Foundation.registerPlugin(this);
     5987    Foundation.registerPlugin(this, 'Slider');
    56985988    Foundation.Keyboard.register('Slider', {
    56995989      'ltr': {
     
    58076097     * @example 'disabled'
    58086098     */
    5809     disabledClass: 'disabled'
     6099    disabledClass: 'disabled',
     6100    invertVertical: false
    58106101  };
    58116102  /**
     
    58386129      this.options.doubleSided = true;
    58396130      this.$handle2 = this.handles.eq(1);
    5840       this.$input2 = this.inputs.length ? this.inputs.eq(1) : $('#' + this.$handle2.attr('aria-controls'));
     6131      this.$input2 = this.inputs.length > 1 ? this.inputs.eq(1) : $('#' + this.$handle2.attr('aria-controls'));
    58416132
    58426133      if(!this.inputs[1]){
     
    58476138      this._setHandlePos(this.$handle, this.options.initialStart, true, function(){
    58486139
    5849         _this._setHandlePos(_this.$handle2, _this.options.initialEnd);
     6140        _this._setHandlePos(_this.$handle2, _this.options.initialEnd, true);
    58506141      });
    58516142      // this.$handle.triggerHandler('click.zf.slider');
     
    58706161  //might need to alter that slightly for bars that will have odd number selections.
    58716162    location = parseFloat(location);//on input change events, convert string to number...grumble.
    5872     // prevent slider from running out of bounds
     6163
     6164    // prevent slider from running out of bounds, if value exceeds the limits set through options, override the value to min/max
    58736165    if(location < this.options.start){ location = this.options.start; }
    58746166    else if(location > this.options.end){ location = this.options.end; }
    58756167
    5876     var isDbl = this.options.doubleSided,
    5877         callback = cb || null;
    5878 
    5879     if(isDbl){
     6168    var isDbl = this.options.doubleSided;
     6169
     6170    if(isDbl){ //this block is to prevent 2 handles from crossing eachother. Could/should be improved.
    58806171      if(this.handles.index($hndl) === 0){
    58816172        var h2Val = parseFloat(this.$handle2.attr('aria-valuenow'));
     
    58876178    }
    58886179
     6180    //this is for single-handled vertical sliders, it adjusts the value to account for the slider being "upside-down"
     6181    //for click and drag events, it's weird due to the scale(-1, 1) css property
    58896182    if(this.options.vertical && !noInvert){
    58906183      location = this.options.end - location;
    58916184    }
     6185
    58926186    var _this = this,
    58936187        vert = this.options.vertical,
    58946188        hOrW = vert ? 'height' : 'width',
    58956189        lOrT = vert ? 'top' : 'left',
    5896         halfOfHandle = $hndl[0].getBoundingClientRect()[hOrW] / 2,
     6190        handleDim = $hndl[0].getBoundingClientRect()[hOrW],
    58976191        elemDim = this.$element[0].getBoundingClientRect()[hOrW],
     6192        //percentage of bar min/max value based on click or drag point
    58986193        pctOfBar = percent(location, this.options.end).toFixed(2),
    5899         pxToMove = (elemDim - halfOfHandle) * pctOfBar,
     6194        //number of actual pixels to shift the handle, based on the percentage obtained above
     6195        pxToMove = (elemDim - handleDim) * pctOfBar,
     6196        //percentage of bar to shift the handle
    59006197        movement = (percent(pxToMove, elemDim) * 100).toFixed(this.options.decimal),
    5901         location = location > 0 ? parseFloat(location.toFixed(this.options.decimal)) : 0,
    5902         anim, prog, start = null, css = {};
     6198        //fixing the decimal value for the location number, is passed to other methods as a fixed floating-point value
     6199        location = parseFloat(location.toFixed(this.options.decimal)),
     6200        // declare empty object for css adjustments, only used with 2 handled-sliders
     6201        css = {};
    59036202
    59046203    this._setValues($hndl, location);
    59056204
    5906     if(this.options.doubleSided){//update to calculate based on values set to respective inputs??
     6205    // TODO update to calculate based on values set to respective inputs??
     6206    if(isDbl){
    59076207      var isLeftHndl = this.handles.index($hndl) === 0,
     6208          //empty variable, will be used for min-height/width for fill bar
    59086209          dim,
    5909           idx = this.handles.index($hndl);
    5910 
     6210          //percentage w/h of the handle compared to the slider bar
     6211          handlePct =  ~~(percent(handleDim, elemDim) * 100);
     6212      //if left handle, the math is slightly different than if it's the right handle, and the left/top property needs to be changed for the fill bar
    59116213      if(isLeftHndl){
    5912         css[lOrT] = (pctOfBar > 0 ? pctOfBar * 100 : 0) + '%';//
    5913         dim = /*Math.abs*/((percent(this.$handle2.position()[lOrT] + halfOfHandle, elemDim) - parseFloat(pctOfBar)) * 100).toFixed(this.options.decimal) + '%';
    5914         css['min-' + hOrW] = dim;
    5915         if(cb && typeof cb === 'function'){ cb(); }
     6214        //left or top percentage value to apply to the fill bar.
     6215        css[lOrT] = movement + '%';
     6216        //calculate the new min-height/width for the fill bar.
     6217        dim = parseFloat(this.$handle2[0].style[lOrT]) - movement + handlePct;
     6218        //this callback is necessary to prevent errors and allow the proper placement and initialization of a 2-handled slider
     6219        //plus, it means we don't care if 'dim' isNaN on init, it won't be in the future.
     6220        if(cb && typeof cb === 'function'){ cb(); }//this is only needed for the initialization of 2 handled sliders
    59166221      }else{
    5917         var handleLeft = parseFloat(this.$handle[0].style.left);
    5918         location = (location < 100 ? location : 100) - (!isNaN(handleLeft) ? handleLeft : this.options.end - location);
    5919         css['min-' + hOrW] = location + '%';
     6222        //just caching the value of the left/bottom handle's left/top property
     6223        var handlePos = parseFloat(this.$handle[0].style[lOrT]);
     6224        //calculate the new min-height/width for the fill bar. Use isNaN to prevent false positives for numbers <= 0
     6225        //based on the percentage of movement of the handle being manipulated, less the opposing handle's left/top position, plus the percentage w/h of the handle itself
     6226        dim = movement - (isNaN(handlePos) ? this.options.initialStart : handlePos) + handlePct;
    59206227      }
     6228      // assign the min-height/width to our css object
     6229      css['min-' + hOrW] = dim + '%';
    59216230    }
    59226231
    59236232    this.$element.one('finished.zf.animate', function(){
    5924                     _this.animComplete = true;
    59256233                    /**
    59266234                     * Fires when the handle is done moving.
     
    59296237                    _this.$element.trigger('moved.zf.slider', [$hndl]);
    59306238                });
    5931     var moveTime = _this.$element.data('dragging') ? 1000/60 : _this.options.moveTime;
    5932     /*var move = new */Foundation.Move(moveTime, $hndl, function(){
     6239
     6240    //because we don't know exactly how the handle will be moved, check the amount of time it should take to move.
     6241    var moveTime = this.$element.data('dragging') ? 1000/60 : this.options.moveTime;
     6242
     6243    Foundation.Move(moveTime, $hndl, function(){
     6244      //adjusting the left/top property of the handle, based on the percentage calculated above
    59336245      $hndl.css(lOrT, movement + '%');
     6246
    59346247      if(!_this.options.doubleSided){
     6248        //if single-handled, a simple method to expand the fill bar
    59356249        _this.$fill.css(hOrW, pctOfBar * 100 + '%');
    59366250      }else{
     6251        //otherwise, use the css object we created above
    59376252        _this.$fill.css(css);
    59386253      }
    59396254    });
    5940     // move.do();
     6255
    59416256  };
    59426257  /**
     
    59856300   * @param {jQuery} $handle - the current handle to calculate for, if selected.
    59866301   * @param {Number} val - floating point number for the new value of the slider.
     6302   * TODO clean this up, there's a lot of repeated code between this and the _setHandlePos fn.
    59876303   */
    59886304  Slider.prototype._handleEvent = function(e, $handle, val){
     
    59986314          barDim = this.$element[0].getBoundingClientRect()[param],
    59996315          barOffset = (this.$element.offset()[direction] -  pageXY),
    6000           barXY = barOffset > 0 ? -halfOfHandle : (barOffset - halfOfHandle) < -barDim ? barDim : Math.abs(barOffset),//if the cursor position is less than or greater than the elements bounding coordinates, set coordinates within those bounds
    6001           // eleDim = this.$element[0].getBoundingClientRect()[param],
     6316          //if the cursor position is less than or greater than the elements bounding coordinates, set coordinates within those bounds
     6317          barXY = barOffset > 0 ? -halfOfHandle : (barOffset - halfOfHandle) < -barDim ? barDim : Math.abs(barOffset),
    60026318          offsetPct = percent(barXY, barDim);
    60036319      value = (this.options.end - this.options.start) * offsetPct;
     6320      // turn everything around for RTL, yay math!
     6321      if (Foundation.rtl() && !this.options.vertical) {value = this.options.end - value;}
     6322      //boolean flag for the setHandlePos fn, specifically for vertical sliders
    60046323      hasVal = false;
    60056324
     
    60386357      this.$element.off('click.zf.slider').on('click.zf.slider', function(e){
    60396358        if(_this.$element.data('dragging')){ return false; }
    6040         _this.animComplete = false;
     6359
    60416360        if(_this.options.doubleSided){
    60426361          _this._handleEvent(e);
     
    60496368    if(this.options.draggable){
    60506369      this.handles.addTouch();
    6051       // var curHandle,
    6052       //     timer,
     6370
    60536371      var $body = $('body');
    60546372      $handle
     
    60586376          _this.$fill.addClass('is-dragging');//
    60596377          _this.$element.data('dragging', true);
    6060           _this.animComplete = false;
     6378
    60616379          curHandle = $(e.currentTarget);
    60626380
     
    60646382            e.preventDefault();
    60656383
    6066             // timer = setTimeout(function(){
    60676384            _this._handleEvent(e, curHandle);
    6068             // }, _this.options.dragDelay);
     6385
    60696386          }).on('mouseup.zf.slider', function(e){
    6070             // clearTimeout(timer);
    6071             _this.animComplete = true;
    60726387            _this._handleEvent(e, curHandle);
     6388
    60736389            $handle.removeClass('is-dragging');
    60746390            _this.$fill.removeClass('is-dragging');
    60756391            _this.$element.data('dragging', false);
    6076             // Foundation.reflow(_this.$element, 'slider');
     6392
    60776393            $body.off('mousemove.zf.slider mouseup.zf.slider');
    60786394          });
     
    60806396    }
    60816397    $handle.off('keydown.zf.slider').on('keydown.zf.slider', function(e){
    6082       var idx = _this.options.doubleSided ? _this.handles.index($(this)) : 0,
    6083         oldValue = parseFloat(_this.inputs.eq(idx).val()),
    6084         newValue;
    6085 
    6086       var _$handle = $(this);
     6398      var _$handle = $(this),
     6399          idx = _this.options.doubleSided ? _this.handles.index(_$handle) : 0,
     6400          oldValue = parseFloat(_this.inputs.eq(idx).val()),
     6401          newValue;
     6402
    60876403
    60886404      // handle keyboard event with keyboard util
     
    61786494    this._init();
    61796495
    6180     Foundation.registerPlugin(this);
     6496    Foundation.registerPlugin(this, 'Sticky');
    61816497  }
    61826498  Sticky.defaults = {
     
    61846500     * Customizable container template. Add your own classes for styling and sizing.
    61856501     * @option
    6186      * @example '<div data-s