* {
  box-sizing: border-box;
}

html {
  --base-color: #fff;
  --dark-color: #2a3443;
  --shade-color: #5e6673;
  --success-color: #f0f8f1;
  --warning-color: #fbeeec;
  --light-background: #f4f5f7;
  --spacing: 16px;
  margin: 0;
  padding: 0;
}

body {
  font-family: -apple-system, BlinkMacSystemFont, 'Roboto', 'Segoe UI',
    Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
    'Segoe UI Symbol';
  margin: 0;
  padding: 0;
  color: var(--dark-color);
  font-size: 18px;
  line-height: 1.5rem;
}

[hidden] {
  display: none;
}

a {
  color: var(--dark-color);
}

a:visited,
a:active {
  color: var(--shade-color);
}

header,
main,
nav,
footer,
.alert {
  padding: var(--spacing);
}

nav {
  height: 3em;
}

nav.fixed {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
}

header {
  background: var(--dark-color);
  color: var(--base-color);
}

header.fixed {
  margin-bottom: 3em;
}

header h1 {
  font-weight: 400;
}

.alert {
  background: var(--warning-color);
}

nav {
  background: var(--shade-color);
}

nav a {
  font-size: 0.8rem;
  padding-right: calc(var(--spacing) / 2);
}

nav a,
nav a:visited,
nav a:active {
  color: var(--base-color);
}

@media all and (min-width: 375px) {
  nav a {
    font-size: 1.1rem;
    padding-right: var(--spacing);
  }
}

main {
  max-width: 700px;
  margin: 0 auto;
}

h2 {
  margin-top: 3em;
  text-transform: uppercase;
  font-weight: 300;
  letter-spacing: 0.0625rem;
}

.speakers {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-around;
  min-height: 185px;
}

.speakers .speaker {
  padding: var(--spacing);
  width: calc(128px + calc(2 * var(--spacing)));
  text-align: center;
}

.schedule {
  margin-top: calc(4 * var(--spacing));
  min-height: 185px;
}

.schedule-item {
  margin-bottom: calc(2 * var(--spacing));
}

.title-and-time {
  display: flex;
  align-items: flex-start;
}

.title-and-time .time {
  font-size: 1.5em;
  font-weight: 600;
  padding-top: 2px;
}

.title-and-speaker {
  flex: 1;
  padding-left: var(--spacing);
}

.title-and-speaker .title {
  font-weight: 600;
  border-bottom: 2px solid var(--dark-color);
  padding-bottom: calc(var(--spacing) / 2);
}

.title-and-speaker .speaker {
  padding-top: calc(var(--spacing) / 2);
  text-transform: uppercase;
  font-size: 0.7em;
}

.schedule-item .description {
  padding: var(--spacing);
  background: var(--light-background);
}
.schedule-item.break .description {
  background: var(--success-color);
}

footer {
  font-size: 0.8em;
  background: var(--light-background);
}

/* Coped from https://projects.lukehaas.me/css-loaders/ */
.loader,
.loader:before,
.loader:after {
  border-radius: 50%;
  width: 2.5em;
  height: 2.5em;
  animation-fill-mode: both;
  animation: load 1.8s infinite ease-in-out;
}
.loader {
  color: var(--shade-color);
  font-size: 10px;
  margin: 80px auto;
  position: relative;
  text-indent: -9999em;
  transform: translateZ(0);
  animation-delay: -0.16s;
}
.loader:before,
.loader:after {
  content: '';
  position: absolute;
  top: 0;
}
.loader:before {
  left: -3.5em;
  animation-delay: -0.32s;
}
.loader:after {
  left: 3.5em;
}

@keyframes load {
  0%,
  80%,
  100% {
    box-shadow: 0 2.5em 0 -1.3em;
  }
  40% {
    box-shadow: 0 2.5em 0 0;
  }
}
