/*
 * Copyright 2024 The Pigweed Authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

@import url('https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200');

:root {
  font-family: 'Open Sans', Inter, sans-serif;
  line-height: 1.5;
  font-weight: 400;

  color-scheme: light dark;
  color: rgba(255, 255, 255, 0.87);
  background-color: #1a1a1a;

  font-synthesis: none;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.material-symbols-outlined {
  font-variation-settings:
  'FILL' 0,
  'wght' 400,
  'GRAD' 0,
  'opsz' 24
}


a {
  font-weight: 500;
  color: #ff2600;
  text-decoration: inherit;
}

body {
  margin: 0;
  min-height: 100vh;
}

#root{
  width: 100%;
}

h3{
  font-weight: normal;
  line-height: normal;
  margin: 0;
}

.header{
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0rem 1rem;
}

.header-logo{
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0;
}

.header-logo h1{
  font-size: 1.5rem;
  font-weight: normal;
}

.header-logo .logo{
  font-size: 1.7rem;
}

.header-timedate{
  font-size: 1rem;
}

.hero-container{
  display: flex;
  align-items: center;
}

.main-status{
  padding: 0rem 1rem;
}

.main-status .status-subtitle-text{
  font-size: 0.9rem;
  font-weight: 500;
}

.main-status .status-icon-container{
  font-size: 4rem;
  display: flex;
  align-items: center;
  line-height: 4rem;
}

.main-status .status-icon-container .icon{
  font-size: 3.5rem;
}


.MuiGauge-valueText tspan:last-child{
  font-size: 1rem;
  padding-top: 1rem;
}

.MuiGauge-valueText tspan:first-child{
  font-size: 1.5rem;
}


.container {
  align-items: center;
  display: flex;
  flex-direction: column;
  width: 100vw;
}

.cards-container{
  display: flex;
  gap: 2rem;
}

.buttons {
  display: flex;
  justify-content: space-between;
}

.graph-container{
  display: flex;
  gap: 1rem;
}

.graph {
  width: 600px;
  height: 400px;
}

button {
  border-radius: 8px;
  border: 1px solid transparent;
  padding: 0.6em 1.2em;
  font-size: 1em;
  font-weight: 500;
  font-family: inherit;
  background-color: #282a2c;
  cursor: pointer;
  transition: border-color 0.25s;
}

button:hover {
  background-color: #333537;
}

button:focus,
button:focus-visible {
  outline: 4px auto -webkit-focus-ring-color;
}

@media (prefers-color-scheme: light) {
  :root {
    color: #213547;
    background-color: #ffffff;
  }

  h1 {
    color: #b529aa;
  }

  button {
    background-color: #f0f4f9;
  }

  button:hover {
    background-color: #dde3ea;
  }
}
