/*
  @mixin theme($property, $key, $inlineExtra:null, $postExtra:null)
  Assigns a property a theme value for each defined theme.
Example usage:
    .mySelector {
      padding: 6px;
      @include theme(background-color, backgroundLight);
      @include theme(border, borderDark, 1px solid);
    }
sass generated equivalent:
    .mySelector {
      padding: 6px;
      :global(.light) & {
        border: 1px solid color(woodsmoke);
        border: 1px solid var(--theme-light-borderDark, color(woodsmoke));
      }
      :global(.light) & {
        background-color: color(alabaster);
        background-color: var(--theme-light-backgroundLight, color(alabaster));
      }
      :global(.dark) & {
        border: 1px solid color(alabaster);
        border: 1px solid var(--theme-dark-borderDark, color(alabaster));
      }
      :global(.dark) & {
        background-color: color(woodsmoke);
        background-color: var(--theme-dark-backgroundLight, color(woodsmoke));
      }
    }
browser output:
    .mySelector {
      padding: 6px;
    }
    .light .mySelector {
      border: 1px solid #141519;
      border: 1px solid var(--theme-light-borderDark, #141519);
    }
    .light .mySelector {
      background-color: #FCFCFC;
      background-color: var(--theme-light-backgroundLight, #FCFCFC);
    }
    .dark .mySelector {
      border: 1px solid #FCFCFC;
      border: 1px solid var(--theme-dark-borderDark, #FCFCFC);
    }
    .dark .mySelector {
      background-color: #141519;
      background-color: var(--theme-dark-backgroundLight, #141519);
    }
*/
/*
  @mixin generateThemeMappings(themeName: string, themeMap: map)
  helper function for generating list of theme variables and adding to existing map.
  This will add a new theme to the themes array and the theme color list.
*/
/*
  @mixin generateThemeVariables
  Auto-generates the entire list of theme variables for use in var() statements.
  Really should only be called in the html selector at the app root.
*/
/** this section generates a theme map for each theme **/
/** end theme generation **/
#main-page-loading {
  width: 100%;
  height: 100%;
  text-align: center;
}
#main-page-loading .sk-flow {
  margin: 40vh auto auto auto;
}
#main-page-loading.hidden {
  display: none;
}

#main-container {
  width: 100%;
  height: 100vh;
  display: flex;
  flex-direction: column;
}
#main-container.hidden {
  display: none;
}

#main-menu {
  position: fixed;
  width: 190px;
  height: 100%;
  overflow: hidden;
  transition: width 0.2s ease-out, height 0.2s ease-out;
}
.theme-light #main-menu {
  background-color: var(--theme-theme-light-primary, #124e78);
}

.theme-dark #main-menu {
  background-color: var(--theme-theme-dark-primary, #1985a1);
}

.theme-light #main-menu {
  color: var(--theme-theme-light-textLight, #FFFFFF);
}

.theme-dark #main-menu {
  color: var(--theme-theme-dark-textLight, #FFFFFF);
}

.theme-light #main-menu {
  box-shadow: 4px 10px 10px 0px var(--theme-theme-light-shadow, rgba(0, 0, 0, 0.3));
}

.theme-dark #main-menu {
  box-shadow: 4px 10px 10px 0px var(--theme-theme-dark-shadow, rgba(0, 0, 0, 0.3));
}

#main-menu.hidden {
  width: 0px;
  height: 0px;
}
#main-menu ul {
  list-style: none;
  padding: 0;
}
#main-menu ul li {
  padding: 16px;
  font-size: 1.1em;
  font-weight: bold;
  letter-spacing: 0.04em;
  cursor: pointer;
}
.theme-light #main-menu ul li:hover {
  background-color: var(--theme-theme-light-menuHeighlight, rgba(0, 0, 0, 0.15));
}

.theme-dark #main-menu ul li:hover {
  background-color: var(--theme-theme-dark-menuHeighlight, rgba(255, 255, 255, 0.15));
}

#main-page {
  height: calc(100% - 70px);
  display: flex;
}
#main-page #main-content-loading {
  width: 100%;
  height: 100%;
  text-align: center;
  margin-top: 40vh;
}

#header-bar {
  flex: 0 0 70px;
  display: flex;
  align-items: center;
  z-index: 99;
}
.theme-light #header-bar {
  background-color: var(--theme-theme-light-primary, #124e78);
}

.theme-dark #header-bar {
  background-color: var(--theme-theme-dark-primary, #1985a1);
}

.theme-light #header-bar {
  color: var(--theme-theme-light-textLight, #FFFFFF);
}

.theme-dark #header-bar {
  color: var(--theme-theme-dark-textLight, #FFFFFF);
}

#header-bar .hamburger {
  flex: 0 0 70px;
  text-align: center;
  cursor: pointer;
}
#header-bar .title {
  flex: 0 0;
}
#header-bar .spacer {
  flex: 1 0;
}
#header-bar .theme-switch {
  flex: 0 0 70px;
  display: flex;
  flex-direction: row;
}
#header-bar .theme-switch button {
  background: none;
  border: none;
  width: 70px;
  aspect-ratio: 1;
  cursor: pointer;
}
.theme-light #header-bar .theme-switch button {
  color: var(--theme-theme-light-textLight, #FFFFFF);
}

.theme-dark #header-bar .theme-switch button {
  color: var(--theme-theme-dark-textLight, #FFFFFF);
}

#main-content {
  flex: 1;
  overflow-y: auto;
}

/*# sourceMappingURL=main.css.map */
