@import url('https://fonts.googleapis.com/css?family=Roboto:400,400i,700,700i');
@import '~elements-sk/themes/themes';

/*

To style app-sk you can change the values of the CSS variables:


  app-sk {
    --header-background-color: #5ba17f;
    --sidebar-width: 250px;
  }

Note that app-sk will inherit from body so the above variables will
over-ride the defaults regardless of the processing order of the CSS files.

*/

// The mobile breakpoint determines the maximum screen width where a mobile layout should be used.
// The chosen value corresponds to the smallest "small" window size as per
// https://material.io/archive/guidelines/layout/responsive-ui.html.
//
// Note that custom CSS properties cannot be used in media queries (see
// https://stackoverflow.com/questions/40722882/css-native-variables-not-working-in-media-queries),
// so we must define the mobile breakpoint as a Sass variable.
$mobile-breakpoint: 600px;

body {
  --sidebar-width: 200px;
  --sidebar-horiz-padding: 5px;
  --sidebar-background-color: var(--surface-1dp, var(--black));
  --sidebar-border-color: var(--on-surface, var(--black));

  --header-height: 50px;
  --header-background-color: var(--surface, var(--black));
  --header-font-color: var(--primary, var(--white));
  --header-horiz-padding: 16px;
  --header-border-color: var(--primary, var(--white));

  --content-horiz-padding: 5px;
  --content-vert-padding: 0px;

  --footer-height: 0;
}

body {
  margin: 0;
  padding: 0;
  font-family: 'Roboto', sans-serif;
}

app-sk {
  color: var(--on-background, var(--black));
  fill: var(--on-background, var(--black));
  background: var(--background, var(--white));
  display: grid;
  grid-template-columns: var(--sidebar-width) 1fr;
  grid-template-rows: var(--header-height) 1fr var(--footer-height);
}

app-sk > {
  header {
    background: var(--header-background-color);
    padding: 0 var(--header-horiz-padding);
    display: flex;
    flex-flow: row;
    justify-content: space-between;
    align-items: center;
    color: var(--header-font-color);
    fill: var(--header-font-color);
    min-height: 48px;
    border-bottom: solid 1px var(--header-border-color);
    gap: 8px;

    grid-column: 1 / span 2;
    grid-row: 1;

    // Eliminate all margins since spacing is done via gap.
    > * {
      margin: 0;
    }

    h1,
    h2 {
      font-weight: 400;
      font-size: 20px;
    }

    login-sk .email,
    login-sk .logInOut {
      color: var(--header-font-color);
      fill: var(--header-font-color);
    }
  }

  aside {
    border-right: 1px solid var(--sidebar-border-color);
    padding: 0 var(--sidebar-horiz-padding);
    z-index: 2;
    background-color: var(--sidebar-background-color);
    color: var(--secondary);
    fill: var(--secondary);

    min-height: calc(100vh - var(--header-height));

    svg.icon-sk-svg {
      color: var(--on-surface);
      fill: var(--on-surface);
    }

    grid-column: 1;
    grid-row: 2;
  }

  main {
    padding: var(--content-vert-padding) var(--content-horiz-padding);
    grid-row: 2;
  }

  footer {
    grid-area: footer;

    grid-column: 1 / span 2;
    grid-row: 3;
  }

  header > .toggle-button {
    margin: 0;
    padding: 0;
  }

  @media screen and (min-width: $mobile-breakpoint) {
    header > .toggle-button {
      display: none;
    }

    main {
      grid-column: 2;
    }
  }

  @media screen and (max-width: $mobile-breakpoint) {
    header > .toggle-button {
      display: block;
      background-color: transparent;
      border: none;
    }

    /* Hide the sidebar just off screen. Then, when it is toggled on and off,
       the transitions will make it slide between the two states. */
    aside {
      position: relative;
      left: calc(
        -1 * (var(--sidebar-width) + 2 * var(--sidebar-horiz-padding))
      );
      transition: 0.5s;
    }

    aside.shown {
      left: 0;
      transition: 0.5s;
    }

    main {
      grid-column: 1 / span 2;
    }
  }
}

app-sk {
  .spacer {
    flex-grow: 1;
  }
}
