/*
  Layout utilities — not ZURB Foundation.
  Same class names as Foundation's flex grid so existing templates keep working:
  row/column, small-/medium-/large- spans, block grids (small-up-2), expand/shrink,
  alignment, visibility.

  Breakpoints: small 0 | medium 40em | large 64em
  Gutters: 0.9375rem (15px). Nested rows use negative margins, like Foundation.

  Not included (add if you miss them): offsets (medium-offset-2).
*/

:root {
  --row-width: 75rem;
  --gutter: 0.9375rem;
}

html {
  box-sizing: border-box;
  -webkit-text-size-adjust: 100%;
}

*,
*::before,
*::after {
  box-sizing: inherit;
}

body {
  margin: 0;
}

img {
  display: inline-block;
  max-width: 100%;
  height: auto;
  vertical-align: middle;
}

h1, h2, h3, h4, h5, h6 {
  margin: 0 0 0.5rem;
  line-height: 1.4;
}

p {
  margin-top: 0;
  margin-bottom: 1rem;
}

ul,
ol {
  margin: 0 0 1rem 1.25rem;
  padding: 0;
}

a {
  color: inherit;
  text-decoration: none;
}

a:hover {
  text-decoration: underline;
}

/* --- Grid --- */

.row {
  display: flex;
  flex-flow: row wrap;
  width: 100%;
  max-width: 75rem;
  max-width: var(--row-width, 75rem);
  margin-right: auto;
  margin-left: auto;
}

.row .row {
  max-width: none;
  margin-right: calc(var(--gutter, 0.9375rem) * -1);
  margin-left: calc(var(--gutter, 0.9375rem) * -1);
}

.row.expanded {
  max-width: none;
}

/* Full-bleed wrapper, contained inner grid (footer, colored bands, etc.) */
.row.expanded .row {
  width: 100%;
  max-width: 75rem;
  max-width: var(--row-width, 75rem);
  margin-right: auto;
  margin-left: auto;
}

.row:not(.expanded) .row {
  max-width: none;
}

.column,
.columns {
  flex: 1 1 0px;
  min-width: 0;
  padding-right: 0.9375rem;
  padding-right: var(--gutter, 0.9375rem);
  padding-left: 0.9375rem;
  padding-left: var(--gutter, 0.9375rem);
}

.row.collapse > .column,
.row.collapse > .columns {
  padding-right: 0;
  padding-left: 0;
}

.row .row.collapse {
  margin-right: 0;
  margin-left: 0;
}

.small-1 { flex: 0 0 8.33333%; max-width: 8.33333%; }
.small-2 { flex: 0 0 16.66667%; max-width: 16.66667%; }
.small-3 { flex: 0 0 25%; max-width: 25%; }
.small-4 { flex: 0 0 33.33333%; max-width: 33.33333%; }
.small-5 { flex: 0 0 41.66667%; max-width: 41.66667%; }
.small-6 { flex: 0 0 50%; max-width: 50%; }
.small-7 { flex: 0 0 58.33333%; max-width: 58.33333%; }
.small-8 { flex: 0 0 66.66667%; max-width: 66.66667%; }
.small-9 { flex: 0 0 75%; max-width: 75%; }
.small-10 { flex: 0 0 83.33333%; max-width: 83.33333%; }
.small-11 { flex: 0 0 91.66667%; max-width: 91.66667%; }
.small-12 { flex: 0 0 100%; max-width: 100%; }

@media print, screen and (min-width: 40em) {
  .medium-1 { flex: 0 0 8.33333%; max-width: 8.33333%; }
  .medium-2 { flex: 0 0 16.66667%; max-width: 16.66667%; }
  .medium-3 { flex: 0 0 25%; max-width: 25%; }
  .medium-4 { flex: 0 0 33.33333%; max-width: 33.33333%; }
  .medium-5 { flex: 0 0 41.66667%; max-width: 41.66667%; }
  .medium-6 { flex: 0 0 50%; max-width: 50%; }
  .medium-7 { flex: 0 0 58.33333%; max-width: 58.33333%; }
  .medium-8 { flex: 0 0 66.66667%; max-width: 66.66667%; }
  .medium-9 { flex: 0 0 75%; max-width: 75%; }
  .medium-10 { flex: 0 0 83.33333%; max-width: 83.33333%; }
  .medium-11 { flex: 0 0 91.66667%; max-width: 91.66667%; }
  .medium-12 { flex: 0 0 100%; max-width: 100%; }
  .medium-expand { flex: 1 1 0px; max-width: 100%; }
}

@media print, screen and (min-width: 64em) {
  .large-1 { flex: 0 0 8.33333%; max-width: 8.33333%; }
  .large-2 { flex: 0 0 16.66667%; max-width: 16.66667%; }
  .large-3 { flex: 0 0 25%; max-width: 25%; }
  .large-4 { flex: 0 0 33.33333%; max-width: 33.33333%; }
  .large-5 { flex: 0 0 41.66667%; max-width: 41.66667%; }
  .large-6 { flex: 0 0 50%; max-width: 50%; }
  .large-7 { flex: 0 0 58.33333%; max-width: 58.33333%; }
  .large-8 { flex: 0 0 66.66667%; max-width: 66.66667%; }
  .large-9 { flex: 0 0 75%; max-width: 75%; }
  .large-10 { flex: 0 0 83.33333%; max-width: 83.33333%; }
  .large-11 { flex: 0 0 91.66667%; max-width: 91.66667%; }
  .large-12 { flex: 0 0 100%; max-width: 100%; }
  .large-expand { flex: 1 1 0px; max-width: 100%; }
}

/* Block grids — N equal columns on the row, children wrap.
   <div class="row small-up-1 medium-up-2 large-up-4">
     <div class="column">…</div>
   </div>
*/
.small-up-1 > .column, .small-up-1 > .columns { flex: 0 0 100%; max-width: 100%; }
.small-up-2 > .column, .small-up-2 > .columns { flex: 0 0 50%; max-width: 50%; }
.small-up-3 > .column, .small-up-3 > .columns { flex: 0 0 33.33333%; max-width: 33.33333%; }
.small-up-4 > .column, .small-up-4 > .columns { flex: 0 0 25%; max-width: 25%; }
.small-up-5 > .column, .small-up-5 > .columns { flex: 0 0 20%; max-width: 20%; }
.small-up-6 > .column, .small-up-6 > .columns { flex: 0 0 16.66667%; max-width: 16.66667%; }
.small-up-7 > .column, .small-up-7 > .columns { flex: 0 0 14.28571%; max-width: 14.28571%; }
.small-up-8 > .column, .small-up-8 > .columns { flex: 0 0 12.5%; max-width: 12.5%; }

@media print, screen and (min-width: 40em) {
  .medium-up-1 > .column, .medium-up-1 > .columns { flex: 0 0 100%; max-width: 100%; }
  .medium-up-2 > .column, .medium-up-2 > .columns { flex: 0 0 50%; max-width: 50%; }
  .medium-up-3 > .column, .medium-up-3 > .columns { flex: 0 0 33.33333%; max-width: 33.33333%; }
  .medium-up-4 > .column, .medium-up-4 > .columns { flex: 0 0 25%; max-width: 25%; }
  .medium-up-5 > .column, .medium-up-5 > .columns { flex: 0 0 20%; max-width: 20%; }
  .medium-up-6 > .column, .medium-up-6 > .columns { flex: 0 0 16.66667%; max-width: 16.66667%; }
  .medium-up-7 > .column, .medium-up-7 > .columns { flex: 0 0 14.28571%; max-width: 14.28571%; }
  .medium-up-8 > .column, .medium-up-8 > .columns { flex: 0 0 12.5%; max-width: 12.5%; }
}

@media print, screen and (min-width: 64em) {
  .large-up-1 > .column, .large-up-1 > .columns { flex: 0 0 100%; max-width: 100%; }
  .large-up-2 > .column, .large-up-2 > .columns { flex: 0 0 50%; max-width: 50%; }
  .large-up-3 > .column, .large-up-3 > .columns { flex: 0 0 33.33333%; max-width: 33.33333%; }
  .large-up-4 > .column, .large-up-4 > .columns { flex: 0 0 25%; max-width: 25%; }
  .large-up-5 > .column, .large-up-5 > .columns { flex: 0 0 20%; max-width: 20%; }
  .large-up-6 > .column, .large-up-6 > .columns { flex: 0 0 16.66667%; max-width: 16.66667%; }
  .large-up-7 > .column, .large-up-7 > .columns { flex: 0 0 14.28571%; max-width: 14.28571%; }
  .large-up-8 > .column, .large-up-8 > .columns { flex: 0 0 12.5%; max-width: 12.5%; }
}

.shrink {
  flex: 0 0 auto;
  max-width: 100%;
}

/* --- Alignment --- */

.align-right { justify-content: flex-end; }
.align-center { justify-content: center; }
.align-justify { justify-content: space-between; }
.align-spaced { justify-content: space-around; }
.align-top { align-items: flex-start; }
.align-middle { align-items: center; }
.align-bottom { align-items: flex-end; }
.align-stretch { align-items: stretch; }

.small-order-1 { order: 1; }
.small-order-2 { order: 2; }
.small-order-3 { order: 3; }
.small-order-4 { order: 4; }
.small-order-5 { order: 5; }
.small-order-6 { order: 6; }

@media print, screen and (min-width: 40em) {
  .medium-order-1 { order: 1; }
  .medium-order-2 { order: 2; }
  .medium-order-3 { order: 3; }
  .medium-order-4 { order: 4; }
  .medium-order-5 { order: 5; }
  .medium-order-6 { order: 6; }
}

@media print, screen and (min-width: 64em) {
  .large-order-1 { order: 1; }
  .large-order-2 { order: 2; }
  .large-order-3 { order: 3; }
  .large-order-4 { order: 4; }
  .large-order-5 { order: 5; }
  .large-order-6 { order: 6; }
}

/* --- Visibility --- */

.hide { display: none !important; }

@media screen and (max-width: 39.9375em) {
  .hide-for-small-only { display: none !important; }
  .show-for-medium { display: none !important; }
  .show-for-medium-only { display: none !important; }
  .show-for-large { display: none !important; }
}

@media print, screen and (min-width: 40em) {
  .hide-for-medium { display: none !important; }
  .show-for-small-only { display: none !important; }
}

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .hide-for-medium-only { display: none !important; }
  .show-for-large { display: none !important; }
}

@media print, screen and (min-width: 64em) {
  .hide-for-large { display: none !important; }
  .show-for-small-only { display: none !important; }
  .show-for-medium-only { display: none !important; }
}

@media screen and (max-width: 63.9375em) {
  .show-for-large { display: none !important; }
}

.show-for-sr {
  position: absolute !important;
  width: 1px;
  height: 1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* --- Text / floats / lists --- */

.text-left { text-align: left; }
.text-right { text-align: right; }
.text-center { text-align: center; }
.text-justify { text-align: justify; }

@media print, screen and (min-width: 40em) {
  .medium-text-left { text-align: left; }
  .medium-text-right { text-align: right; }
  .medium-text-center { text-align: center; }
}

@media print, screen and (min-width: 64em) {
  .large-text-left { text-align: left; }
  .large-text-right { text-align: right; }
  .large-text-center { text-align: center; }
}

.float-left { float: left !important; }
.float-right { float: right !important; }

.clearfix::after {
  content: "";
  display: table;
  clear: both;
}

ul.no-bullet,
ol.no-bullet {
  margin-left: 0;
  list-style: none;
}

/* Structural button — colors live in styles.css */
.button {
  display: inline-block;
  vertical-align: middle;
  margin: 0 0 1rem;
  padding: 0.85em 1em;
  border: 1px solid transparent;
  cursor: pointer;
  font-family: inherit;
  line-height: 1;
  text-align: center;
  text-decoration: none;
  color: var(--color-on-highlight, #fff);
}

.button:hover,
.button:focus {
  text-decoration: none;
  color: var(--color-on-highlight, #fff);
}
