/* document level stuff */
  html {
    box-sizing: border-box;
    font-size: calc(112.5% + 0.5vw);
  }

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

  * {
    margin: 0;
    padding: 0;
  }

  body, html {
    width: 100%;
    height: 100%;
  }

  body {
    color: #000;
    /*background: #FCFBF0;*/
    line-height: 1;
  }


  body {
    font-family: "Avenir", -apple-system, BlinkMacSystemFont, 
      "Segoe UI", "Roboto", "Oxygen", 
      "Ubuntu", "Cantarell", "Fira Sans", 
      "Droid Sans", "Helvetica Neue", sans-serif;
  }

/* content container */
  main {
    width: 100vw;
    height: 100vh;
    overflow-y: auto;
    scroll-snap-type: y mandatory;
  }

/* basic tags */
  a {
    text-decoration: none;
    color: #00f;
  }

  h1 {
    font-size: 10vh; /*3em;*/
    padding-bottom: 1.5rem;
  }

  h2 {
    font-size: 7vh;/*1.75em;*/
    margin-top: 2.1rem; /* 1.5 baselines */
    /*margin: 0.25em 0;*/
  }

  h3 {
    font-size: 4vh; /*1.25em;*/
    margin-top: 0.7rem; /* 0.5 baselines */
    /*margin: 0.25em 0;*/
  }

  h1, h2, h3 {
    font-weight: normal;
  }

  p {
    font-size: 2em;
    margin: 1.05rem; /* 0.75 baselines  */
  }

  ul {
    list-style-position: inside;
    font-size: 5vh;
    margin: 2vh 0;
  }

  ul ul {
    padding-left: 3vw;
  }

  iframe {
    border: none;
  }

  ins {
    color: green;
    text-decoration: none;
  }

  tt {
    font-weight: bold;
  }

/* slide base */
  section {
    width: 100vw;
    height: 100vh;
    padding: 4vw;
    scroll-snap-align: center;
  }

/* slide styles */
  section.intro {
    display: flex;
    flex-flow: column;
    justify-content: center;
    font-size: 1.5em;
  }

  section.splash {
    font-size: 1.25em;
    display: flex;
    flex-flow: column;
    justify-content: center;
  }

  section.megabig {
    font-size: 2em;
  }

  section.warning {
    background: #ff0;
    border: 1vw solid red;
  }

  /* crop image as needed to fit into exact center of viewport */
  section.background-image {
    /*background: url(images/bg.jpg) no-repeat center center fixed;*/
    background-repeat: no-repeat;
    background-position: 50% 50%;
    background-attachment: fixed;
    -webkit-background-size: cover;
    -o-background-size: cover;
    background-size: cover;
  }

  /* don't crop image to center - basically makes sure vertical fits */
  section.background-image-contain {
    background-attachment: fixed;
    background-repeat: no-repeat;
    background-position: center center;
    -webkit-background-size: contain;
    -o-background-size: contain;
    background-size: contain;
  }

  /* center any content both vertically and horizontally */
  section.absolute-centered {
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    -moz-box-pack: center;
  }

  /* treating any text over a background image */
  /* FIXME */
  section.background-image > * {
    background: rgba(255, 255, 255, 0.7);
    color: #000;
    text-shadow: 1px 1px 0px #fff;
    padding: 0.1rem;
  }

/* two-column sections */
  section.two-columns {
    display: flex;
    flex-flow: row;
  }

  section.two-columns > * {
    flex-grow: 1;
    width: 50%;
  }

  section.two-columns > div {
    display: flex;
  }

  section.two-columns > div > * {
    width: 100%;
    height: 100%;
  }

/* two-row sections */
  section.two-rows {
    display: flex;
    flex-flow: column;
  }

  section.two-rows > * {
    flex-grow: 1;
    height: 50%;
  }

  section.two-rows > div {
    display: flex;
  }

  section.two-rows > div > * {
    width: 100%;
    height: 100%;
  }

/* fullscreen demos (needed anymore?) */
  section.fullscreen-demo {
    display: flex;
    background: #000;
    padding: 0;
    margin: 0;
  }

  section.fullscreen-demo > div {
    width: 100%;
    height: 100%;
  }

  section.fullscreen-demo > div iframe {
    width: 100%;
    height: 100%;
  }

/* Prism code formatting overrides */
  /* Not interested in Prism's stylistic choices with regards to code blocks */
  pre[class*="language-"] {
    margin: 0;
    border-radius: 0;
  }

/* fragments */
  .fragment {
    opacity: 0.02;
    transition: opacity 0.2s ease-in;
  }

  .fragment.visible {
    opacity: 1;
  }

/* printing */
  @media print {
    @page {
      /* UNSUPPORTED on Firefox: https://developer.mozilla.org/en-US/docs/Web/CSS/@page/size */
      /*
      size: landscape;
      */
    }
    body {
      height: auto;
      width: auto;
    }
    section {
      visibility: visible;
      position: relative;
      display: block;
      /*
      break-before: always;
      page-break-before: always;
      page-break-inside: avoid;
      */
      height: 600px;
      width: auto;
    }
    html, body, main, section, div {
      float: none !important;
      position: relative !important;
      display: inline;
      box-sizing: content-box !important;
    }
  }

