/*
 * Copyright (c) Facebook, Inc. and its affiliates.
 */

html .sp-wrapper {
  color-scheme: inherit;

  /* palette */
  --sp-colors-fg-active: #24292e !important;
  --sp-colors-fg-default: #959da5 !important;
  --sp-colors-fg-inactive: #e4e7eb !important;
  --sp-colors-bg-active: #e4e7eb !important;
  --sp-colors-bg-default: #ffffff !important;
  --sp-colors-bg-default-overlay: #ffffff !important;
  --sp-colors-bg-input: #ffffff !important;
  --sp-colors-accent: #c8c8fa !important;
  --sp-colors-bg-error: #ffcdca !important;
  --sp-colors-fg-error: #811e18 !important;
  /* syntax */
  --theme-plain: #24292e;
  --theme-comment: #6a737d;
  --theme-keyword: #d73a49;
  --theme-tag: #22863a;
  --theme-punctuation: #24292e;
  --theme-definition: #6f42c1;
  --theme-property: #005cc5;
  --theme-static: #032f62;
  --theme-string: #032f62;
}
html.dark .sp-wrapper {
  --sp-colors-fg-active: #ffffff !important;
  --sp-colors-fg-default: #999999 !important;
  --sp-colors-fg-inactive: #343434 !important;
  --sp-colors-bg-active: #343434 !important;
  --sp-colors-bg-default: #16181d !important;
  --sp-colors-bg-default-overlay: #16181d !important;
  --sp-colors-bg-input: #242424 !important;
  --sp-colors-accent: #6caedd !important;
  --sp-colors-bg-error: #ffcdca !important;
  --sp-colors-fg-error: #811e18 !important;
  /* syntax */
  --theme-plain: #ffffff;
  --theme-comment: #757575;
  --theme-keyword: #77b7d7;
  --theme-tag: #dfab5c;
  --theme-punctuation: #ffffff;
  --theme-definition: #86d9ca;
  --theme-property: #77b7d7;
  --theme-static: #c64640;
  --theme-string: #977cdc;
}

.sp-tabs,
.sp-tab-button:hover {
  background: none !important;
}

.sp-tabs .sp-tab-button {
  color: #087ea4;
  padding: 0 4px;
}

html.dark .sp-tabs .sp-tab-button {
  color: #149eca;
}

.sp-tabs .sp-tab-button:hover {
  color: #087ea4;
}

html.dark .sp-tabs .sp-tab-button:hover {
  color: #149eca;
}

.sp-tabs .sp-tab-button[data-active='true'] {
  color: #087ea4;
  border-bottom: 2px solid #087ea4;
}

html.dark .sp-tabs .sp-tab-button[data-active='true'] {
  color: #149eca;
  border-bottom: 2px solid #149eca;
}

.sp-stack .sp-code-editor,
.sp-tabs .sp-tabs-scrollable-container {
  overflow: hidden;
}

.sp-code-editor .cm-errorLine {
  background-color: rgba(255, 107, 99, 0.1);
  position: relative;
  padding-right: 2em !important;
  display: inline-block;
  min-width: 100%;
}

.sp-code-editor .cm-errorLine:after {
  position: absolute;
  right: 8px;
  top: 0;
  content: '\26A0';
  font-size: 22px;
  line-height: 20px;
  color: #ff3d3d;
}
.sp-code-editor .cm-tooltip {
  border: 0;
  max-width: 200px;
}
html.dark .sp-code-editor .cm-diagnostic {
  color: var(--sp-colors-bg-default);
}
.sp-code-editor .cm-diagnostic-error {
  @apply border-red-40;
}
.sp-code-editor .cm-diagnostic-warning {
  border-left: 5px solid orange;
}

/*
 * These are manually adjusted to match the final
 * rendered version without any layout shifts.
 * Note this affects both sandboxes and code blocks.
 *
 * There are probably more maintainable ways to do this.
 * However, as long as there are kind people paying close
 * attention to these subtler details, I shall sleep in peace.
 *
 * If you know a better way to keep them from diverging, send a PR.
 */
.sp-cm {
  -webkit-text-size-adjust: none !important;
  padding: 0 !important;
}
.cm-wrap {
  background: transparent !important;
}
.sp-pre-placeholder {
  display: block !important;
  margin-top: 0px !important;
  margin-bottom: 0px !important;
  padding: 18px var(--sp-space-3) !important;
  @apply font-mono !important;
  font-size: 13.6px !important;
  line-height: 24px !important;
  height: 100%;
}
.text-xl .sp-pre-placeholder {
  font-size: 16px !important;
  line-height: 24px !important;
}
.sp-cm .cm-scroller {
  overflow: auto !important;
  padding: 18px 0 !important;
}

.console .sp-cm,
.console .sp-cm .cm-scroller,
.console .sp-cm .cm-line {
  padding: 0px !important;
}

.sp-cm .cm-gutters {
  background-color: var(--sp-colors-bg-default);
  z-index: 1;
}
.sp-wrapper {
  width: 100% !important;
}
.sp-wrapper .sp-custom-layout {
  overflow: initial;
  border: 0px solid transparent;
  border-top-left-radius: 0px;
  border-top-right-radius: 0px;
  border-bottom-left-radius: 0.5rem;
  border-bottom-right-radius: 0.5rem;
}
.sp-wrapper .sp-layout-devtools {
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
}
html.dark .sp-layout > :not(:first-child) {
  border-color: #343a46;
}
html.dark .sp-layout {
  background-color: #343a46;
}
html .sp-loading {
  background-color: transparent;
}
html.dark .sp-loading {
  background-color: #23272f;
}

@media (min-width: 768px) {
  .sp-tabs .sp-tab-button {
    margin: 0 12px 0 0;
  }
}

/* Devtools */
.sp-devtools {
  border-bottom-left-radius: 0.5rem;
  border-bottom-right-radius: 0.5rem;
  overflow: hidden;
}
.sp-devtools > div {
  --color-background: var(--sp-colors-bg-default) !important;
  --color-background-inactive: var(--sp-colors-fg-inactive) !important;
  --color-background-selected: #087ea4 !important;
  --color-background-hover: transparent !important;
  --color-modal-background: #ffffffd2 !important;

  --color-tab-selected-border: #087ea4 !important;

  --color-component-name: var(--theme-definition) !important;
  --color-attribute-name: var(--theme-property) !important;
  --color-attribute-value: var(--theme-string) !important;
  --color-attribute-editable-value: var(--theme-property) !important;
  --color-attribute-name-not-editable: var(--sp-colors-fg-default) !important;
  --color-button-background-focus: var(--sp-colors-fg-inactive) !important;

  --color-button-active: #087ea4 !important;
  --color-button-background: transparent !important;
  --color-button: var(--sp-colors-fg-default) !important;
  --color-button-hover: var(--sp-colors-fg-active) !important;

  --color-border: var(--sp-colors-fg-inactive) !important;
  --color-text: rgb(35, 39, 47) !important;
}
html.dark .sp-devtools > div {
  --color-text: var(--sp-colors-fg-default) !important;
  --color-modal-background: #16181de0 !important;
}

.sp-devtools table td {
  border: 1px solid var(--sp-colors-fg-inactive);
}

/* Make focus rings work */
.sp-tab-button {
  transition: none !important;
}
.sp-tab-button:focus {
  outline: revert !important;
}
.sp-tab-button:focus-visible {
  box-shadow: none !important;
}
.sp-cm:focus-visible {
  box-shadow: inset 0 0 0 4px rgba(20, 158, 202, 0.4) !important;
}
.cm-line {
  padding: 0 var(--sp-space-3) !important;
}
.cm-lineNumbers {
  padding-left: var(--sp-space-1) !important;
  padding-right: var(--sp-space-1) !important;
}

/* For iOS: prevent browser zoom when clicking on sandbox. */
@media screen and (max-width: 768px) {
  @supports (-webkit-overflow-scrolling: touch) {
    .cm-content {
      font-size: initial;
    }
    .DocSearch-Input {
      font-size: initial;
    }
  }
}

.sp-cm {
  padding-left: 8px !important;
}
.sp-layout {
  min-height: 216px;
}
.sp-layout > .sp-stack:nth-child(1) {
  /* Force vertical if there isn't enough space. */
  min-width: 431px;
  /* No min height on mobile because we know code in advance. */
  /* Max height is needed to avoid too long files. */
  max-height: 40vh;
}
.sp-layout > .sp-stack:nth-child(2) {
  /* Force vertical if there isn't enough space. */
  min-width: 431px;
  /* Keep preview a fixed size on mobile to avoid jumps. */
  /* This is because we don't know its content in advance. */
  min-height: 40vh;
  max-height: 40vh;
}
.sp-layout.sp-layout-expanded > .sp-stack:nth-child(1) {
  /* Clicking "show more" lets mobile editor go full height. */
  max-height: unset;
  height: auto;
}
.sp-layout.sp-layout-expanded > .sp-stack:nth-child(2) {
  /* Clicking "show more" lets mobile preview go full height. */
  max-height: unset;
  height: auto;
}
@media (min-width: 1280px) {
  .sp-layout > .sp-stack:nth-child(1) {
    /* On desktop, clamp height by pixels instead. */
    height: auto;
    min-height: unset;
    max-height: 406px;
  }
  .sp-layout > .sp-stack:nth-child(2) {
    /* On desktop, clamp height by pixels instead. */
    height: auto;
    min-height: unset;
    max-height: 406px;
  }
  .sp-layout.sp-layout-expanded > .sp-stack:nth-child(1) {
    max-height: unset;
  }
  .sp-layout.sp-layout-expanded > .sp-stack:nth-child(2) {
    max-height: unset;
  }
}

.expandable-callout .sp-stack:nth-child(2) {
  min-width: 431px;
  min-height: 40vh;
  max-height: 40vh;
}