:root {
    /* Colors */
    --white: #f5f5f5;
    --black: #222222;
    --accent-bright: #74bcc5; /* medium aquamarine */
    --accent-dark: #54696d; /* slate gray */

    /* Font Sizing */
    --vw: 1vw;
    --measure: 60ch;
    font-size: calc(1rem + 1 * var(--vw));
    font-family: 'San Francisco Text', 'Open Sans', sans-serif;
    color: var(--black);

    /* Modular Scale */
    --ratio: 1.25;
    --s-7: calc(var(--s-6) / var(--ratio));
    --s-6: calc(var(--s-5) / var(--ratio));
    --s-5: calc(var(--s-4) / var(--ratio));
    --s-4: calc(var(--s-3) / var(--ratio));
    --s-3: calc(var(--s-2) / var(--ratio));
    --s-2: calc(var(--s-1) / var(--ratio));
    --s-1: calc(var(--s0) / var(--ratio));
    --s0: 1rem;
    --s1: calc(var(--s0) * var(--ratio));
    --s2: calc(var(--s1) * var(--ratio));
    --s3: calc(var(--s2) * var(--ratio));
    --s4: calc(var(--s3) * var(--ratio));
    --s5: calc(var(--s4) * var(--ratio));
    --s6: calc(var(--s5) * var(--ratio));
    --s7: calc(var(--s6) * var(--ratio));
}

@media (min-width: 2000px) {
    :root {
        --vw: 20px;
    }
}

* {
    box-sizing: border-box;
    max-width: var(--measure);
}

html {
    scroll-behavior: smooth; /* Does not work with Safari or Edge */
}

body {
    height: 100vh;
    width: 100vw;
    margin: 0;
    overflow-x: hidden;
    background-color: var(--white);
}

html,
body,
div,
header,
nav,
main,
footer,
section {
    max-width: none;
}

a {
    font-weight: 600;
    color: #3b5e63;
    transition: transform 0.5s;
}

img {
    max-width: 100%;
    margin: auto;
}

body:not(#registration) section:not(#landing):not(#mission) {
    padding-bottom: 1.5em;
    background-color: var(--white);
}

section > header {
    margin: 1.7em auto;
    width: 80vw;
    text-align: center;
    padding: 0.7em;
    border-bottom: solid #ccc;
}
header > h1 {
    margin: 0 auto;
}

/* Navigation Menu */
nav {
    z-index: 10000;
}

nav > .container {
    background-color: var(--white);
    display: flex;
    justify-content: space-evenly;
    overflow: hidden;
    width: 100vw;
    flex-wrap: wrap;
    padding: 0 2em;
}

nav > .container a {
    text-decoration: none;
    color: var(--black);
}

.nav-logo {
    display: flex;
    flex: 1;
    flex-direction: column;
    justify-content: center;
    padding: 0.5em;
}

.nav-logo > a {
    font-weight: bolder;
    width: fit-content;
}

.nav-logo > a > .logo {
    height: 1em;
    filter: invert(1);
    transition: all 0.3s;
}
.nav-logo > a:hover > .logo {
    transform: scale(1.2);
}

.logo {
    display: none;
    filter: invert(1);
    max-height: 1em;
}

.nav-sections {
    display: flex;
    justify-content: space-evenly;
    overflow: hidden;
}

.nav-sections > a:hover {
    transform: translateY(0);
}

.nav-sections > a {
    display: block;
    font-size: var(--s-1);
    text-decoration: none;
    color: var(--black);
    background: inherit;
    transition: all 0.4s ease;
    padding: var(--s-2);
    font-weight: bold;
    flex-grow: 1;
    text-align: center;
}

.nav-sections > a:before,
.nav-sections > a:after {
    position: absolute;
    opacity: 0;
    transition: all 0.3s;
}

.nav-sections > a:before {
    content: '[';
    left: 0px;
    transform: translateX(10px);
}

.nav-sections > a:after {
    content: ']';
    right: 0px;
    transform: translateX(-10px);
}

.nav-sections > a:hover:before,
.nav-sections > a:hover:after {
    opacity: 1;
    transform: translateX(0px);
}

.nav-icon {
    cursor: pointer;
    display: none;
    position: absolute;
    left: 0.7em;
    width: 1em;
}

.nav-icon:after,
.nav-icon:before,
.nav-icon div {
    background-color: var(--black);
    content: '';
    display: block;
    height: 0.1em;
    margin: 0.175em 0;
    transition: all 0.2s ease-in-out;
}

.nav-icon:hover:before {
    transform: translateY(-3px);
}
.nav-icon:hover:after {
    transform: translateY(3px);
}

.nav-icon.close:before {
    transform: translateY(0.25em) rotate(135deg);
}

.nav-icon.close:after {
    transform: translateY(-0.3em) rotate(-135deg);
}

.nav-icon.close div {
    transform: scale(0);
}

/* Landing Page */
#landing {
    padding-bottom: 0;
}

#title-page::before {
    content: '';
    position: absolute;
    z-index: -1;
    border-bottom: 100vh solid var(--white);
    border-left: 32vh solid transparent;
    width: 65vw;
    transform: rotate(180deg);
    left: -30vh;
}

#logo-overlay {
    position: absolute;
    z-index: -1;
    border-bottom: 100vh solid var(--accent-bright);
    border-left: 32vh solid transparent;
    width: 65vw;
    transform: rotate(180deg);
}

#title-page {
    display: flex;
    height: 45vh;
    margin-top: 2.1rem;
    min-height: 10rem;
}

.logo-container {
    color: var(--white);
    text-align: center;
    display: flex;
    flex-direction: column;
    justify-content: center;
    position: absolute;
    height: 45vh;
    width: 65%;
    min-height: 10rem;
    padding: 2rem;
    padding-right: 4em;
}

.logo-container > * {
    margin-left: auto;
    margin-right: auto;
    margin-top: var(--s-1);
    margin-bottom: var(--s-1);
}

.logo-container > img {
    margin: 0 auto;
}

.logo-container > h1 {
    font-size: 8vw;
    display: none;
}

.info-container {
    z-index: -2;
    color: var(--white);
    text-align: right;
    position: absolute;
    background-position: center;
    background: url('../images/info-bg-image.jpg'),
        linear-gradient(
            to bottom,
            rgba(255, 255, 255, 0),
            rgba(255, 255, 255, 0),
            rgba(255, 255, 255, 0),
            rgba(255, 255, 255, 1)
        );
    background-blend-mode: lighten;
    background-repeat: no-repeat;
    background-size: cover;
    background-position: 50% 90%;
    padding-top: var(--s-5);
    padding-bottom: var(--s-5);
    padding-left: var(--s0);
    padding-right: 4%;
    width: 60%;
    right: 0;
    height: 45vh;
    min-height: 10rem;
}

.info-container:before {
    z-index: -1;
    position: absolute;
    content: '';
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    opacity: 0.75;
    background: linear-gradient(to right, #24797c, #1d535b);
}

.info-container > * {
    margin-top: var(--s-2);
    margin-bottom: var(--s1);
}

.info-container h2 {
    font-size: var(--s5);
}

.info-container > div > * {
    max-width: none;
}

.info-container .address {
    font-weight: bold;
    font-size: var(--s-1);
    position: absolute;
    right: 2em;
    bottom: 0;
}

.info-container .address span {
    font-weight: normal;
    /* text alignmet precludes use of mod scale */
    font-size: var(--s-2);
}

.call-to-action {
    color: var(--black);
    background: var(--white);
    padding-top: var(--s-5);
    padding-bottom: var(--s-5);
    padding-left: var(--s3);
    padding-right: var(--s3);

    /* implements a sidebar from every-layout */
    display: flex;
    flex-wrap: wrap;

    /* stretch the button box to match text height */
    align-items: stretch;
}

.call-to-action .slogan {
    flex-basis: 0;
    flex-grow: 999;
}
.call-to-action .largest {
    /* implements a sidebar from every-layout */
    min-width: 15rem;

    text-align: left;
    font-size: var(--s0);

    margin-bottom: var(--s0);
    margin-top: var(--s0);
}

.call-to-action .largest span {
    display: inline-block;
    margin: var(--s-5) auto;
    /* imitation mod scale b/c we need to use em not rem to make media queries easier */
    font-size: calc(var(--ratio) * var(--ratio) * var(--ratio) * 1em);
}

.call-to-action .buttons {
    /* implements a sidebar from every-layout */
    flex-basis: 14rem;
    flex-grow: 1;
    min-width: 13rem;

    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-evenly;
    align-items: stretch;

    /* center the buttons */
    align-content: center;
}

#landing .buttons > span {
    /* allow positioning of label relative to here */
    position: relative;
}

#landing .buttons > a,
#landing .buttons > span input,
#landing .buttons > span label {
    min-width: 9rem;
    white-space: nowrap;
    font-family: inherit;
    font-size: var(--s0);
    padding: var(--s-5) var(--s-2);
    font-weight: bold;
    display: inline-block;
    background: none;
    color: var(--accent-dark);
    border: solid 1px var(--accent-dark);
    transition: all 0.8s ease-in-out;
    text-align: center;
    text-decoration: none;
    flex-grow: 0;
    margin: var(--s-5) var(--s-6);
    line-height: 1;
    /* hack to make <a> same size as <input>, it ends up looking very close to the same */
    height: 1.72rem;
}

#landing .buttons > a:hover,
#landing .buttons > span input:hover {
    cursor: pointer;
    background-image: url('../images/gradient-small.jpg');
    border: solid 1px transparent;
    background-size: cover;
    color: var(--white);
}

#landing .buttons > span input:focus {
    cursor: pointer;
    background-image: url('../images/gradient-small.jpg');
    border: solid 1px transparent;
    background-size: cover;
    color: var(--white);
}

#landing .buttons > span input:not(:focus)::placeholder,
#landing .buttons > span input:not(:focus) {
    color: transparent;
}

#landing .buttons > span input:hover:not(:focus) + label {
    color: var(--white);
}

#landing .buttons > span input {
    border-radius: 0;
    width: 6em;
}

#landing .buttons > span input:focus,
#landing .buttons > span label:focus {
    outline: none;
}

#landing .buttons > span label {
    border: none;
    display: inline-block;

    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;

    position: absolute;
    top: 0;
    left: 0;
    pointer-events: none;
}

.email-input-field + label {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
}

.email-input-field:focus + label {
    -webkit-transform: translate3d(0, -65%, 0);
    transform: translate3d(0, -65%, 0);
    font-size: var(--s-2) !important;
    width: 0px !important;
    min-width: 0px !important;
    padding-left: 0px !important;
}

.email-input-field:focus + label .check {
    bottom: 0.1em;
}

.check {
    position: relative;
    display: inline-block;
    transform: rotate(45deg);
    height: 0.8em;
    width: 0.45em;
    border-bottom: 0.2em solid;
    border-right: 0.2em solid;
    margin-left: 0.2em;
    bottom: 0px;
}
.lds-ring {
    display: inline-block;
    position: relative;
    height: 0.8em;
    width: 0.8em;
}
.lds-ring div {
    box-sizing: border-box;
    display: block;
    position: absolute;
    width: 0.6375em;
    height: 0.6375em;
    margin: 0.075em;
    border: 0.075em solid;
    border-radius: 50%;
    animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
    border-color: var(--accent-dark) transparent transparent transparent;
    transition: border-color 0.4s ease;
}
#landing .buttons > span input:hover:not(:focus) + label .lds-ring div {
    border-color: var(--white) transparent transparent transparent;
}
.lds-ring div:nth-child(1) {
    animation-delay: -0.45s;
}
.lds-ring div:nth-child(2) {
    animation-delay: -0.3s;
}
.lds-ring div:nth-child(3) {
    animation-delay: -0.15s;
}
@keyframes lds-ring {
    0% {
        transform: rotate(0deg);
    }
    100% {
        transform: rotate(360deg);
    }
}

/* Mission */
#mission {
    background: url('../images/mission_background.jpg'); /*This images is the background*/
    background-size: cover;
    background-position: center;
    min-height: 20rem;
    width: 100vw;
    text-align: center;
    position: relative;
    padding: 0;
}
#mission .overlay {
    background: linear-gradient(
        to right,
        rgba(36, 121, 124, 0.75),
        rgba(29, 83, 91, 0.75)
    );
    color: white;
    align-items: center;
    display: flex;
    flex-flow: column;
    width: 100vw;
    min-height: 20rem;
    padding: 5%;
}
#mission > div {
    display: flex;
    flex-direction: column;
    justify-content: center;
}
#mission header > h1 {
    text-transform: uppercase;
    font-size: var(--s3);
    max-width: none;
}
#mission .description {
    font-weight: 100;
    font-size: var(--s-1);
    margin-top: 2%;
    max-width: none;
}
#mission .bottom-text {
    font-size: var(--s0);
    font-weight: 500;
    line-height: 1.3em;
    margin-top: 8%;
    max-width: 70%;
    display: inline-block;
}

#pinnacle-badge {
    max-width: 12em;
    display: block;
    margin: 0 auto;
    margin-top: 5%;
}

/* FAQ */
#faq {
    overflow: auto;
}

.faq-row {
    width: 100%;
    display: flex;
    flex-direction: row;
    justify-content: center;
}
.question {
    margin: 0.5em;
    padding: 0.25em;
    position: relative;
    width: calc(100% - 1em);
    border-left: 0.3em solid #74bdc6;
    text-align: left;
    height: 100%;
    overflow: hidden;
    transition: height 0.3s;
}
.question > summary {
    outline: none;
    cursor: pointer;
    height: inherit;
    max-width: none;
}
.question > summary::-webkit-details-marker {
    display: none;
}
.question[open] summary {
    height: unset;
}
.question > summary > div {
    display: flex;
    justify-content: space-between;
    align-items: center;
    outline: none;
    font-size: var(--s-1);
    line-height: 1.2em;
}
.question > summary > div > h4 {
    flex: 1;
}
.answer {
    margin-top: 1em;
    font-size: var(--s-2);
}
.answer > p {
    line-height: 1.3em;
}

.expand-icon {
    position: relative;
    width: 1.5em;
    height: 1.5em;
    background-color: var(--accent-bright);
    border-radius: 15%;
    padding: 10px;
}

.expand-icon:before,
.expand-icon:after {
    content: '';
    position: absolute;
    background-color: white;
    transition: transform 0.25s ease-out;
}

/* Vertical line */
.expand-icon:before {
    content: '';
    top: 20%;
    left: 50%;
    width: 2px;
    height: 60%;
    margin-left: -1px;
}

/* horizontal line */
.expand-icon:after {
    content: '';
    top: 50%;
    left: 20%;
    width: 60%;
    height: 2px;
    margin-top: -1px;
}

details[open] .expand-icon:before {
    content: '';
    transform: rotate(90deg);
}

details[open] .expand-icon:after {
    content: '';
    transform: rotate(180deg);
}

.faq-wrapper {
    width: 80%;
    margin: auto;
    text-align: center;
    padding: 10px 0;
}

/* Edge-Compliant Details Modifications */
.answer.edge-compliant {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    transition: all 0.4s ease-in-out;
}

.answer.edge-compliant.open {
    max-height: unset;
    opacity: 1;
}

/* Schedule */
#schedule {
    overflow: hidden;
}
#schedule > .schedule-wrapper {
    max-width: 80vw;
    margin: 0 auto;
    min-height: 20rem;
}
#schedule > header > p {
    font-size: 0.7em;
    max-width: none;
    margin-top: 0.2em;
    font-style: italic;
}

/* Clock */
#clock {
    position: relative;
    float: left;
    width: 50%;
    padding-top: 50%;
}
#clock > .saturday,
#clock > .sunday {
    position: absolute;
    width: 100%;
    left: 50%;
    top: 50%;
    transition: transform 0.5s;
}
#clock > .saturday {
    transform: translate(-50%, -50%) scale(1);
}
#clock > .sunday {
    transform: translate(-50%, -50%) scale(0.9);
}
#clock > .content {
    position: absolute;
    text-align: center;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: 50%;
    max-height: 50%;
}
#clock > .content > .day {
    margin: 0;
}
#clock > .content > .time {
    font-size: var(--s2);
    font-weight: 500;
    margin: 10px 0;
}
#clock > .content > .ev-name {
    font-size: 80%;
    font-weight: 500;
    margin: 0;
}
#clock > .content > .location {
    font-size: 80%;
    margin: 0;
    margin-top: 10px;
}
#hour-pointer,
#minute-pointer {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    height: 100%;
    width: 100%;
}
#hour-pointer > span,
#minute-pointer > span {
    width: 5%;
    padding-top: 11%;
    height: 100%;
    margin: 0 auto;
    display: block;
    transition: transform 0.5s;
}
#minute-pointer svg {
    transform: scale(0.5);
}

/* Schedule Table */
#schedule-table {
    position: relative;
    float: left;
    width: 50%;
    padding-top: 50%;
    font-size: var(--s-1);
}

#schedule-table header {
    color: black;
    text-align: center;
    margin-bottom: 15px;
    cursor: pointer;
}
#schedule-table header > h3 {
    display: inline;
}

#schedule-table > div {
    position: absolute;
    transform: translate(-50%, -50%);
    left: 50%;
    top: 50%;
    color: white;
    width: 80%;
}

#schedule-table > div.sunday {
    display: none;
}

#schedule-table table {
    width: calc(100% + 1px);
    max-width: unset;
}

#schedule-table .container {
    max-height: 15rem;
    border-radius: 10px;
    min-height: 13rem;
    overflow: hidden;
    background-color: var(--accent-dark);
}
#schedule-table .container > div {
    overflow-y: auto;
    overflow-x: hidden;
    height: 100%;
    max-height: 15rem;
    min-height: 13rem;
}
#schedule-table .container > div::-webkit-scrollbar-track {
    background-color: var(--accent-bright);
}
#schedule-table .container > div::-webkit-scrollbar-thumb {
    background-color: var(--accent-dark);
}
#schedule-table tbody {
    width: 100%;
    max-height: calc(15rem - 1em - 20px);
    overflow-y: auto;
    overflow-x: hidden;
}
#schedule-table tbody > tr {
    cursor: pointer;
    transition: transform 0.5s;
}
#schedule-table tbody > tr > * {
    transition: background-color 0.5s;
}
#schedule-table tbody > tr.active {
    transform: scale(1.05);
}
#schedule-table tbody > tr.active > * {
    background-color: #97dde6;
}

#schedule-table th:first-child {
    text-align: left;
}

#schedule-table td:first-child {
    text-align: right;
    white-space: nowrap;
}

#schedule-table th:last-child,
#schedule-table td:last-child {
    text-align: left;
    width: 100%;
}

#schedule-table th,
#schedule-table td {
    padding: 0.5em 1em;
    line-height: 1.2em;
}

#schedule-table th {
    background-color: var(--accent-dark);
}

#schedule-table td {
    background-color: var(--accent-bright);
}

#schedule-table td > span.location {
    margin-top: 10px;
    font-weight: lighter;
    display: none;
}

#schedule-table span.right,
#schedule-table span.left {
    display: inline-block;
    transition: transform 0.5s;
    user-select: none;
    -moz-user-select: none;
    -khtml-user-select: none;
    -webkit-user-select: none;
    -o-user-select: none;
}

#schedule-table span.right {
    float: right;
}
#schedule-table span.right:hover {
    transform: translateX(5px);
}

#schedule-table span.left {
    float: left;
}
#schedule-table span.left:hover {
    transform: translateX(-5px);
}

#schedule-table .saturday span.left,
#schedule-table .sunday span.right {
    transform: none;
    cursor: default;
    color: gray;
}

#sponsors > div > header {
    margin: 1.7em;
    text-align: center;
}

#sponsors > div:not(:first-child) > header {
    margin: 1.7em auto;
    border-bottom: solid #ccc;
    padding: 0.7em;
    width: 80vw;
}

#sponsors > .sponsors-banner {
    background-color: var(--accent-bright);
    color: white;
    text-align: center;
    padding: 10px;
    min-height: 10rem;
}
#sponsors > .sponsors-banner p {
    margin: 0 auto;
    width: 80%;
}

.sponsor-row {
    max-width: 80vw;
    width: 100%;
    display: flex;
    margin: 0 auto;
    flex-wrap: wrap;
    justify-content: space-evenly;
}

.sponsor-row > a {
    display: flex;
    justify-content: center;
    flex: 1 calc(240px + 7 * var(--vw));
}

.sponsor-row > a > img {
    transition: transform 0.5s, filter 0.5s;
}

.sponsor-row > a:hover > img {
    transform: translateY(-2px);
    filter: drop-shadow(0 5px 2px rgba(0, 0, 0, 0.2));
}

.sponsor-row > * > * + * {
    margin-top: 1rem;
}

.sponsor-row > :not(:only-child) {
    padding: 1rem;
}

.sponsor-row > :only-child {
    margin: 2rem auto;
}

#sponsors img {
    max-height: calc(20px + 6 * var(--vw));
}

.figure-wrapper {
    margin: 0 auto;
    width: 70vw;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-evenly;
    align-items: start;
}
.directors {
    flex-wrap: nowrap;
}
figure {
    text-align: center;
    flex-basis: 15vw;
    flex-grow: 0;
    max-width: 400px;
    margin: 0.5em 0.2em;
}
.directors > figure {
    margin: 0.5rem;
}
.directors {
    width: 60vw;
}
.directors > figure {
    flex-basis: 25vw;
}
.directors figcaption > h4 {
    font-size: var(--s0);
}
figcaption > p {
    margin-top: 0.2em;
    font-size: var(--s-2);
}
.figure-wrapper:not(.directors) figcaption > h4 {
    font-size: var(--s-1);
}
.figure-image {
    border: 0.17em solid var(--accent-dark);
    border-radius: 50%;
    width: 100%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 3%;
    transition: transform 0.5s;
}
.figure-image > img {
    width: 100%;
    border-radius: 50%;
    transition: transform 0.5s;
}
figcaption {
    margin-top: 0.7em;
    transition: transform 0.5s;
}

footer {
    color: #f4f5f6;
    width: 100%;
    background-color: #74bcc5;
}

footer a {
    text-decoration: none;
    color: #f4f5f6;
    font-weight: 400;
}

footer h4 {
    padding-bottom: 10px;
}

#footer-main {
    display: grid;
    grid-template-columns: 35% 30% 35%;
    padding: 40px;
}

#copyright {
    background-color: #54696d;
    text-align: center;
    padding: 20px;
    font-size: 16px;
}

#past-sites {
    text-align: left;
}

.site,
.social {
    margin: 16px 0px;
    position: relative;
    z-index: 1;
}

.site a {
    margin-left: 20px;
}

.footer-logo {
    text-align: center;
    display: flex;
    flex-direction: column;
}

.footer-logo > a {
    display: inline-block;
    padding-top: 20px;
    width: fit-content;
    margin: 0 auto;
}

.footer-logo > a > span {
    border: solid #f4f5f6;
    border-width: 0 0.2em 0.2em 0;
    display: inline-block;
    padding: 16px;
    margin-top: -16px;
    transform: rotate(-135deg);
    -webkit-transform: rotate(-135deg);
    transition: all 0.5s;
}

.footer-logo > a > span:first-child {
    opacity: 0.4;
}

.footer-logo > a > span:nth-child(3) {
    opacity: 0.7;
}

.footer-logo > a > img {
    display: block;
    max-height: 10vh;
    margin-top: 10px;
    transition: all 0.5s;
}

.footer-logo > a:hover > span:first-child {
    transform: rotate(-135deg) translateY(5px) translateX(5px);
}

.footer-logo > a:hover > span:nth-child(3) {
    transform: rotate(-135deg) translateY(10px) translateX(10px);
}

.footer-logo > a:hover > span:nth-child(5) {
    transform: rotate(-135deg) translateY(15px) translateX(15px);
}

.footer-logo > a:hover > img {
    transform: scale(1.25);
}

.site {
    width: 3.5em;
}

#social-media {
    text-align: right;
}

.social a {
    margin-right: 20px;
    display: inline-block;
    width: calc(7em - 20px);
}

.bar {
    display: inline-block;
    width: 10px;
    height: 100%;
    position: absolute;
    top: 0;
    background-color: #54696d;
    -webkit-transition: width 0.5s ease-out;
    transition: width 0.5s ease-out;
    z-index: -1;
}
.social .bar {
    margin-left: -10px;
    right: 0;
}

.site:hover > .bar {
    width: calc(20px + 3.5em);
}
.site > a {
    display: block;
    width: 3.5em;
}
.social:hover > .bar {
    width: 7em;
}

.social {
    transition: 0.5s;
}
.social:hover {
    margin-right: 1em;
}
.social:hover img {
    /* transform: translateY(-50%); */
}
.social-icon > img {
    opacity: 0;
    height: 1.5em;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    transition: opacity 0.5s, transform 0.5s;
}
.social:hover .social-icon > img {
    opacity: 1;
}

::-moz-selection {
    background: none;
}

::selection {
    background-color: var(--accent-bright);
    text-shadow: white 0 0 10px;
    color: white;
}

.easter {
    display: none;
}

/* MLH Trust Badge */
#mlh-trust-badge {
    float: left;
    display: flex;
    flex-direction: column;
    justify-content: center;
    height: 100%;
    margin-right: var(--s0);
}

#mlh-trust-badge > a {
    max-width: 100px;
    min-width: 60px;
    position: relative;
}

#mlh-trust-badge img {
    width: 100%;
    filter: drop-shadow(rgba(0, 0, 0, 0.2) 0px 3px 1px);
}

/* Resources Page */
#resources-page {
    display: flex;
    max-height: 100vh;
    flex-direction: column;
}

#resources {
    flex: 1;
    max-width: none;
}
#resources > header {
    text-align: center;
    max-width: none;
    padding: 20px;
}
#resources > header > h1,
#resources > header > p {
    max-width: none;
}
#resources > header > p {
    margin-top: 0.5em;
    font-size: var(--s-2);
}
#resources > section > * {
    text-align: center;
    max-width: none;
}

#software > header > p,
#hardware > header > p {
    max-width: none;
    margin-top: 0.5em;
    font-size: var(--s-2);
}

#resources + footer .footer-logo {
    justify-content: center;
}
#resources + footer .footer-logo > a {
    padding-top: 0;
}
#resources + footer .footer-logo img {
    margin-top: 0;
}

/* Tablet and desktop based breakpoints */
/* Use rem for breakpoints https://zellwk.com/blog/media-query-units/ */
/* Supposed to break around where the buttons move to the side */
@media (min-width: 35em) {
}

/* increaes font size of largest hackathon */
/* @media (min-width: 58em) {
    .call-to-action .largest {
        font-size: var(--s1);
    }
} */

@media only screen and (max-width: 930px) {
    .call-to-action {
        display: block;
    }
    .call-to-action .slogan {
        display: flex;
        justify-content: center;
        padding: 1em 0;
    }
    .call-to-action .buttons {
        width: 100%;
        padding: 0 2em;
    }
}

@media only screen and (max-width: 860px) {
    .faq-row {
        display: block;
    }

    #clock {
        display: none;
    }
    #schedule-table {
        width: 100%;
        padding: 0 1em;
    }
    #schedule-table > div {
        position: relative;
        transform: none;
        width: 100%;
        left: 0;
    }
    #schedule-table .container,
    #schedule-table .container > div {
        max-height: unset;
    }
    #schedule-table tbody > tr {
        cursor: default;
        border-bottom: 1px solid rgba(255, 255, 255, 0.3);
    }
    #schedule-table tbody > tr:hover {
        transform: none;
    }
    #schedule-table tbody > tr.active {
        filter: none;
        transform: none;
    }
    #schedule-table td > span.event-name {
        font-weight: bold;
    }
    #schedule-table td > span.location {
        display: block;
    }

    #schedule-table span.right:hover {
        transform: none;
    }

    #schedule-table span.left:hover {
        transform: none;
    }

    .figure-wrapper:not(.directors) figure {
        display: grid;
        grid-template-columns: 40% 60%;
        flex-basis: 33.5vw;
    }
    .figure-wrapper:not(.directors) figcaption {
        margin: 0;
        display: flex;
        flex-direction: column;
        justify-content: center;
        text-align: left;
        margin-left: 0.5em;
        font-size: var(--s2);
    }
    .figure-wrapper:not(.directors) figcaption > h4 {
        font-size: var(--s0);
    }

    #sponsors img {
        max-width: 50vw;
    }
}

@media only screen and (max-width: 768px) {
    nav {
        font-size: var(--s-1);
    }

    #footer-main {
        padding: 15px 40px;
        font-size: 0.75em;
    }

    .up {
        padding: 6px;
    }

    #copyright {
        font-size: 0.5em;
        padding: 15px;
    }
}

@media only screen and (max-width: 650px) {
    .logo {
        display: inline-block;
    }
    .nav-logo span {
        display: none;
    }

    #title-page {
        height: unset;
        display: block;
    }
    #title-page::before {
        content: unset;
    }
    #logo-overlay {
        display: none;
    }
    .logo-container {
        width: 100%;
        background-color: var(--accent-bright);
        position: relative;
        height: unset;
        min-height: 30vh;
        padding: 2rem;
    }
    .logo-container > h1 {
        display: block;
    }
    .info-container {
        position: relative;
        height: unset;
        width: 100%;
        text-align: center;
        padding-top: var(--s2);
        padding-bottom: var(--s2);
    }
    .info-container .address {
        position: relative;
        right: unset;
        bottom: unset;
    }

    .info-container h3 {
        font-size: var(--s0);
    }
    .info-container h2 {
        font-size: var(--s4);
    }
    .info-container .address {
        font-size: var(--s-2);
    }
    .info-container .address > span {
        font-size: var(--s-3);
    }
    #mlh-trust-badge {
        float: none;
        height: unset;
        margin-right: 0;
    }
    #mlh-trust-badge > a {
        max-width: none;
        margin: 0 auto;
    }
    #mlh-trust-badge img {
        max-width: 80px;
    }
    .call-to-action .slogan {
        display: block;
    }
    .call-to-action .largest {
        text-align: center;
    }
}

@media only screen and (max-width: 580px) {
    nav {
        font-size: unset;
    }

    .nav-logo {
        display: none;
    }

    .call-to-action {
        padding-left: unset;
        padding-right: unset;
        max-width: 90vw;
        margin: 0 auto;
        margin-bottom: 1rem;
        margin-top: 1rem;
    }
    .call-to-action .buttons > a {
        min-width: unset;
        flex-grow: 1;
    }

    .figure-wrapper {
        display: block;
        width: 80vw;
    }
    figure {
        display: grid;
        grid-template-columns: 40% 60%;
        width: 100%;
        margin: 0.5em 0.2em !important;
    }
    .figure-image {
        max-width: 130px;
    }
    figcaption {
        margin: 0;
        display: flex;
        flex-direction: column;
        justify-content: center;
        text-align: left;
        margin-left: 0.5em;
        font-size: var(--s2);
    }

    .footer-logo > a > img {
        max-width: 70%;
    }
}

@media only screen and (max-width: 400px) {
    nav {
        padding: 0;
        overflow: visible;
    }
    .nav-logo {
        display: block;
        flex: none;
        width: 100%;
        background-color: var(--white);
    }
    .nav-logo > a {
        display: block;
        margin: 0 auto;
        width: fit-content;
    }
    .nav-logo .logo {
        display: none;
    }
    .nav-logo span {
        display: block;
        text-align: center;
    }
    .nav-sections {
        width: 100%;
        display: block;
        box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 3px;
        position: absolute;
        background-color: var(--white);
        z-index: -1;
        top: calc(-2em * 4);
        transition: top 0.5s;
    }
    .nav-sections.open {
        top: 2em;
    }
    .nav-sections a {
        border-bottom: solid 2px #eee;
    }
    .nav-sections a:before {
        content: none;
    }
    .nav-sections a:after {
        content: none;
    }
    .nav-sections a:hover {
        background-color: var(--accent-dark);
        color: white;
    }
    .nav-icon {
        display: block;
    }

    #footer-main {
        grid-template-columns: 50% 50%;
        grid-template-rows: 50% 50%;
    }

    .footer-logo {
        grid-column: 1 / 3;
        padding-bottom: 40px;
    }

    #past-sites,
    #social-media {
        grid-row: 2;
    }

    .footer-logo > a > img {
        max-width: unset;
    }
}

@media only screen and (max-width: 300px) {
    .nav-logo .logo {
        display: block;
    }
    .nav-logo span {
        display: none;
    }
    .call-to-action .largest {
        min-width: unset;
    }

    #footer-main {
        display: block;
    }
    #footer-main > * {
        text-align: left;
    }
    .footer-logo {
        display: none;
    }
    .social .bar {
        margin: 0;
        left: 0;
    }

    .social:hover > .bar {
        width: 7em;
    }

    .social {
        transition: 0.5s;
    }
    .social:hover {
        transform: none;
    }
    .social a {
        margin-left: 20px;
    }
    .social-icon > img {
        opacity: 0;
        height: 1.5em;
        position: absolute;
        right: 10%;
        top: 50%;
        transform: translateY(-50%);
        transition: opacity 0.5s;
    }
    .social:hover .social-icon > img {
        opacity: 1;
    }

    .easter {
        display: block;
    }
}

::-webkit-scrollbar {
    width: 7px;
}

::-webkit-scrollbar-track {
    background-color: #ccc;
}

::-webkit-scrollbar-thumb {
    background: var(--accent-bright);
    border-radius: 3.5px;
}
