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

* {
  margin: 0;
  padding: 0;
}

body {
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
}

img,
picture,
video,
canvas,
svg {
  display: block;
  max-width: 100%;
  height: auto;
}

input,
button,
textarea,
select {
  font: inherit;
}

p,
h1,
h2,
h3,
h4,
h5,
h6 {
  overflow-wrap: break-word;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  text-wrap: balance;
}

ul,
ol {
  list-style: none;
}

a {
  color: currentColor;
}

:root {
  --color-text: #f5f6f6;
  --color-tick: #3b3c3d;
  --color-polyline: #6b6c6d;
  --color-background: #252627;
  --color-accent: #19a8cb;

  --color-hydro: #19a8cb;
  --color-wind: #36b4bd;
  --color-solar: #56beaf;
  --color-biofuels: #74c89f;
  --color-other-renewables: #91d290;
  --color-nuclear: #949596;
  --color-gas: #808182;
  --color-coal: #6a6d6e;
  --color-oil: #545758;

  --font-family: "Asap Condensed", sans-serif;

  --font-size-sm: 0.875rem;
  --font-size-md: 1rem;
  --font-size-lg: 2rem;

  --font-weight-normal: 400;
  --font-weight-bold: 700;
}

[data-energy="oil"] {
  color: var(--color-oil);
}

[data-energy="coal"] {
  color: var(--color-coal);
}

[data-energy="gas"] {
  color: var(--color-gas);
}

[data-energy="nuclear"] {
  color: var(--color-nuclear);
}

[data-energy="other-renewables"] {
  color: var(--color-other-renewables);
}

[data-energy="biofuels"] {
  color: var(--color-biofuels);
}

[data-energy="solar"] {
  color: var(--color-solar);
}

[data-energy="wind"] {
  color: var(--color-wind);
}

[data-energy="hydro"] {
  color: var(--color-hydro);
}

body {
  background-color: var(--color-background);
  color: var(--color-text);
  font-family: var(--font-family);
  font-size: var(--font-size-md);
  font-weight: var(--font-weight-normal);
  line-height: 1.5;
  font-variant-numeric: tabular-nums lining-nums;
  display: grid;
  place-content: center;
  gap: 2rem;
  padding-block: 2rem;
}

main,
footer {
  width: min(100% - 2rem, 75rem);
  margin-inline: auto;
}

main > * + * {
  margin-top: 1rem;
}

svg {
  overflow: visible;
}

text {
  fill: currentColor;
}

.title {
  font-size: var(--font-size-lg);
  font-weight: var(--font-weight-bold);
}

.subtitle {
  font-size: var(--font-size-md);
}

.label__polyline {
  stroke: var(--color-polyline);
}

.label__text {
  font-size: var(--font-size-md);
  font-weight: var(--font-weight-bold);
  stroke: var(--color-background);
  stroke-width: 3px;
  paint-order: stroke;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.axis {
  font-family: var(--font-family);
  font-size: var(--font-size-sm);
}

.axis line {
  stroke: var(--color-tick);
}

.line {
  stroke-width: 2px;
  stroke-linecap: round;
  stroke-linejoin: round;
}

button {
  font: inherit;
  border: 1px solid var(--color-text);
  background-color: transparent;
  color: var(--color-text);
  padding: 0.25em 0.5em;
  border-radius: 0.25em;
  transition: color 0.1s, border-color 0.1s;
}

button:focus-visible {
  outline: 1px solid var(--color-accent);
  outline-offset: 0.25em;
}

button:hover,
button:active {
  border-color: var(--color-accent);
  color: var(--color-accent);
}

svg.offscreen {
  position: absolute;
  left: -9999px;
  width: 0px;
  height: 0px;
}
