@font-face {
  font-family: "FreeMono";
  font-style: normal;
  font-weight: 400;
  src: url(FreeMono.ttf) format("truetype");
}

@font-face {
  font-family: "FreeMonoBold";
  font-style: normal;
  font-weight: 400;
  src: url(FreeMonoBold.ttf) format("truetype");
}

@font-face {
  font-family: "Roboto";
  font-style: normal;
  font-weight: 400;
  src: url(roboto.ttf) format("truetype");
}

/* fallback */
@font-face {
  font-family: 'Material Icons';
  font-style: normal;
  font-weight: 400;
  src: url(MaterialIconsOutlined.woff2) format('woff2');
}

.material-icons {
  font-family: 'Material Icons';
  font-weight: normal;
  font-style: normal;
  font-size: 24px;
  line-height: 1;
  letter-spacing: normal;
  text-transform: none;
  display: inline-block;
  white-space: nowrap;
  word-wrap: normal;
  direction: ltr;
  -webkit-font-feature-settings: 'liga';
  -webkit-font-smoothing: antialiased;
}

html,
body,
.stage--fullscreen {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  border: 0;
}

* {
  font-family: Roboto, Helvetica, Arial, sans-serif;
}

.font-loader-1 {
  font-family: FreeMono;
}

.font-loader-2 {
  font-family: FreeMonoBold;
}

/* The markdown panes: every surface that binds [previewHtml] — the public
   post body, the sharable's HTML view, the home announcement — and the
   editors' previews, plus the reveal deck's sections, which the slides
   editor tags the same way.
   An author's image is an inline-level replaced element that keeps its
   natural width, so one wide export pushes a horizontal scrollbar through
   the reading column; max-width binds it to the paragraph (its containing
   block) and height:auto keeps the ratio while shrinking. The cursor is the
   hint for the click-to-zoom the panes' directive installs. Global because
   the markup is injected at runtime: a component's scoped stylesheet needs
   its own ::ng-deep copy of this rule for each of the eight panes, while
   here the panes' own class is the scope. */
.markdown-body img {
  max-width: 100%;
  height: auto;
  cursor: zoom-in;
}

/* The zoom overlay widgets/preview_html_directive.dart appends to
   document.body when a pane's image is clicked: a dimmed layer filling the
   viewport with the image fitted inside a box 80% of the screen both ways;
   any click or ESC closes it. Here rather than in a component stylesheet
   because the node sits outside every component's DOM, where ngdart's
   emulated scoping (_ngcontent attributes) could never match it. 2000 keeps
   it above the dialogs (~1000) the editor previews live in and below the
   snackbars (9999) and toasts (100000) that must stay visible on top. */
.image-popup {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 2000;
  background: rgba(0, 0, 0, 0.6);
  cursor: zoom-out;
  display: flex;
  align-items: center;
  justify-content: center;
}

.image-popup-box {
  width: 80vw;
  height: 80vh;
  display: flex;
  align-items: center;
  justify-content: center;
}

.image-popup-img {
  max-width: 100%;
  max-height: 100%;
  border-radius: 4px;
}