Index: imaps-frontend/node_modules/@fontsource/roboto/scss/metadata.scss
===================================================================
--- imaps-frontend/node_modules/@fontsource/roboto/scss/metadata.scss	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@fontsource/roboto/scss/metadata.scss	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -0,0 +1,22 @@
+$id: 'roboto' !default;
+$family: 'Roboto' !default;
+$category: sans-serif !default;
+$subsets: (cyrillic, cyrillic-ext, greek, greek-ext, latin, latin-ext, vietnamese) !default;
+$weights: (100, 300, 400, 500, 700, 900) !default;
+$styles: (italic, normal) !default;
+$axes: null !default;
+$defaults: (
+  subset: latin,
+  weight: 400,
+  style: normal,
+  axis: null,
+) !default;
+$unicode: (
+  cyrillic-ext: (U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F),
+  cyrillic: (U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116),
+  greek-ext: (U+1F00-1FFF),
+  greek: (U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF),
+  vietnamese: (U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB),
+  latin-ext: (U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF),
+  latin: (U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD),
+) !default;
Index: imaps-frontend/node_modules/@fontsource/roboto/scss/mixins.scss
===================================================================
--- imaps-frontend/node_modules/@fontsource/roboto/scss/mixins.scss	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@fontsource/roboto/scss/mixins.scss	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -0,0 +1,192 @@
+@use 'sass:list';
+@use 'sass:map';
+@use 'sass:math';
+@use 'sass:meta';
+@use 'sass:string';
+
+@use 'metadata';
+
+$metadata: meta.module-variables(metadata) !default;
+$directory: null !default;
+
+$family: null !default;
+$display: null !default;
+$formats: null !default;
+$subsets: null !default;
+$weights: null !default;
+$styles: null !default;
+$axes: null !default;
+
+// Deprecated
+$displayVar: null !default;
+
+@mixin generator(
+  $metadata: $metadata,
+  $directory: $directory,
+  $family: $family,
+  $display: $display,
+  $formats: $formats,
+  $subsets: $subsets,
+  $weights: $weights,
+  $styles: $styles,
+  $axes: $axes,
+
+  // Deprecated
+  $displayVar: $displayVar
+) {
+
+  @if $displayVar != null {
+    @warn "$displayVar is deprecated due to the limitation of using css variables in @font-face (https://github.com/fontsource/fontsource/issues/726).";
+  }
+
+  $isVariable: map.get($metadata, axes) != null;
+
+  $directory: if(
+    $directory,
+    $directory,
+    '~@fontsource#{if($isVariable, '-variable', '')}/#{map.get($metadata, id)}/files'
+  );
+
+  $family: if($family, $family, map.get($metadata, family) + if($isVariable, ' Variable', ''));
+  $display: if($display, $display, swap);
+  $formats: if(not $formats or $formats == all, if($isVariable, woff2, (woff2, woff)), $formats);
+  $subsets: if(
+    $subsets,
+    if($subsets == all, map.get($metadata, subsets), $subsets),
+    map.get($metadata, subsets)
+  );
+  $weights: if(
+    $weights,
+    if($weights == all, map.get($metadata, weights), $weights),
+    map.get($metadata, defaults, weight)
+  );
+  $styles: if(
+    $styles,
+    if($styles == all, map.get($metadata, styles), $styles),
+    map.get($metadata, defaults, style)
+  );
+  $axes: if(
+    $axes,
+    if($axes == all, full, $axes),
+    if($isVariable, if(map.has-key($metadata, axes, wght), wght, full), null)
+  );
+
+  @each $subset in $subsets {
+    @each $unicodeSubset, $unicodeRange in map.get($metadata, unicode) {
+      // If condition is true, generate faces for the current subset
+      @if (
+      	// If there is no unicode information for the font or
+        ($unicodeSubset == null) or
+        	// If the subset match a unicode subset or
+        	($subset == $unicodeSubset) or
+						(
+							// If $unicodeSubset is a numeric unicode subset
+							// and current subset exists in the list of font subsets but does not match any unicode subset
+							// then generate faces for this numeric unicode subset as it is representing part of the current subset
+							list.index(map.get($metadata, subsets), $subset) and not
+								map.has-key($metadata, unicode, $subset) and not
+									list.index(map.get($metadata, subsets), $unicodeSubset)
+						)
+      ) {
+        @each $weight in if($axes, null, $weights) {
+          @each $axis in $axes {
+            @each $style in $styles {
+              $variant: '#{map.get($metadata, id)}-#{if($unicodeSubset, $unicodeSubset, $subset)}-#{if($axis, $axis, $weight)}-#{$style}';
+
+              $src: ();
+              @each $format in $formats {
+                $src: append(
+                  $src,
+                  url('#{$directory}/#{$variant}.#{$format}')
+                    format('#{$format}#{if($axis, '-variations', '')}'),
+                  comma
+                );
+              }
+
+              @content ((
+                metadata: $metadata,
+                directory: $directory,
+                family: $family,
+                display: $display,
+                formats: $formats,
+                subsets: $subsets,
+                weights: $weights,
+                styles: $styles,
+                axes: $axes,
+
+                variant: $variant,
+                subset: $subset,
+                unicodeSubset: $unicodeSubset,
+                unicodeRange: $unicodeRange,
+                weight: $weight,
+                axis: $axis,
+                style: $style,
+
+                font-family: string.quote($family),
+                font-style: if(
+                  (($axis == full) or ($axis == slnt)) and map.has-key($metadata, axes, slnt),
+                  oblique map.get($metadata, axes, slnt, min) + deg map.get($metadata, axes, slnt, max) + deg,
+                  $style
+                ),
+                font-display: $display,
+                font-weight: if(
+                  (($axis == full) or ($axis == wght)) and map.has-key($metadata, axes, wght),
+                  map.get($metadata, axes, wght, min) map.get($metadata, axes, wght, max),
+                  $weight
+                ),
+                font-stretch: if(
+                  (($axis == full) or ($axis == wdth)) and map.has-key($metadata, axes, wdth),
+                  '#{map.get($metadata, axes, wdth, min)}% #{map.get($metadata, axes, wdth, max)}%',
+                  null
+                ),
+                src: $src,
+                unicode-range: $unicodeRange,
+              ));
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+@mixin faces(
+  $metadata: $metadata,
+  $directory: $directory,
+  $family: $family,
+  $display: $display,
+  $formats: $formats,
+  $subsets: $subsets,
+  $weights: $weights,
+  $styles: $styles,
+  $axes: $axes,
+
+  // Deprecated
+  $displayVar: $displayVar
+) {
+  @include generator(
+      $metadata: $metadata,
+      $directory: $directory,
+      $family: $family,
+      $display: $display,
+      $formats: $formats,
+      $subsets: $subsets,
+      $weights: $weights,
+      $styles: $styles,
+      $axes: $axes,
+
+      $displayVar: $displayVar
+    )
+    using ($props) {
+    /* #{map.get($props, variant)} */
+    @font-face {
+      font-family: map.get($props, font-family);
+      font-style: map.get($props, font-style);
+      font-display: map.get($props, font-display);
+      font-weight: map.get($props, font-weight);
+      font-stretch: map.get($props, font-stretch);
+      unicode-range: map.get($props, unicode-range);
+      src: map.get($props, src);
+    }
+  }
+}
