@tailwind base;
@tailwind components;
@tailwind utilities;

/* Custom Variables */
:root {
  --white: #fff;
  --black: #000;
  --gray-20: #ececf1;
  --gray-50: #f7f7f8;
  --gray-100: #ececec;
  --gray-200: #e3e3e3;
  --gray-300: #cdcdcd;
  --gray-400: #999696;
  --gray-500: #595959;
  --gray-600: #424242;
  --gray-700: #2f2f2f;
  --gray-800: #212121;
  --gray-850: #171717;
  --gray-900: #0d0d0d;
  --green-50: #ecfdf5;
  --green-100: #d1fae5;
  --green-200: #a7f3d0;
  --green-300: #6ee7b7;
  --green-400: #34d399;
  --green-500: #10b981;
  --green-600: #059669;
  --green-700: #047857;
  --green-800: #065f46;
  --green-900: #064e3b;
  --green-950: #022c22;
  --gizmo-gray-500: #999;
  --gizmo-gray-600: #666;
  --gizmo-gray-950: #0f0f0f;
  --font-size-xs: 0.75rem;
  --font-size-sm: 0.875rem;
  --font-size-base: 1rem;
  --font-size-lg: 1.125rem;
  --font-size-xl: 1.25rem;
}
html {
  --text-primary: var(--gray-800);
  --text-secondary: var(--gray-600);
  --text-secondary-alt: var(--gray-500);
  --text-tertiary: var(--gray-500);
  --ring-primary: var(--gray-500);
  --header-primary: var(--white);
  --header-hover: var(--gray-50);
  --header-button-hover: var(--gray-50);
  --surface-active: var(--gray-100);
  --surface-hover: var(--gray-200);
  --surface-primary: var(--white);
  --surface-primary-alt: var(--gray-50);
  --surface-primary-contrast: var(--gray-100);
  --surface-secondary: var(--gray-50);
  --surface-secondary-alt: var(--gray-300);
  --surface-tertiary: var(--gray-100);
  --surface-tertiary-alt: var(--white);
  --surface-dialog: var(--white);
  --surface-submit: var(--green-500);
  --border-light: var(--gray-200);
  --border-medium-alt: var(--gray-300);
  --border-medium: var(--gray-300);
  --border-heavy: var(--gray-400);
  --border-xheavy: var(--gray-500);
  /* These are test styles */

  --background: 0 0% 100%;
  --foreground: 0 0% 3.9%;
  --card: 0 0% 100%;
  --card-foreground: 0 0% 3.9%;
  --primary: 0 0% 9%;
  --primary-foreground: 0 0% 98%;
  --secondary: 0 0% 96.1%;
  --secondary-foreground: 0 0% 9%;
  --muted: 0 0% 96.1%;
  --muted-foreground: 0 0% 45.1%;
  --accent: 0 0% 96.1%;
  --accent-foreground: 0 0% 9%;
  --destructive: 0 84.2% 60.2%;
  --destructive-foreground: 0 0% 98%;
  --border: 0 0% 89.8%;
  --input: 0 0% 89.8%;
  --ring: 0 0% 3.9%;
  --radius: 0.5rem;
  --chart-1: 12 76% 61%;
  --chart-2: 173 58% 39%;
  --chart-3: 197 37% 24%;
  --chart-4: 43 74% 66%;
  --chart-5: 27 87% 67%;
  --switch-unchecked: 0 0% 58%;
}
.dark {
  --text-primary: var(--gray-100);
  --text-secondary: var(--gray-300);
  --text-secondary-alt: var(--gray-400);
  --text-tertiary: var(--gray-500);
  --header-primary: var(--gray-700);
  --header-hover: var(--gray-600);
  --header-button-hover: var(--gray-700);
  --surface-active: var(--gray-500);
  --surface-hover: var(--gray-600);
  --surface-primary: var(--gray-900);
  --surface-primary-alt: var(--gray-850);
  --surface-primary-contrast: var(--gray-850);
  --surface-secondary: var(--gray-800);
  --surface-secondary-alt: var(--gray-800);
  --surface-tertiary: var(--gray-700);
  --surface-tertiary-alt: var(--gray-700);
  --surface-dialog: var(--gray-850);
  --surface-submit: var(--green-600);
  --border-light: var(--gray-700);
  --border-medium-alt: var(--gray-600);
  --border-medium: var(--gray-600);
  --border-heavy: var(--gray-500);
  --border-xheavy: var(--gray-400);
  /* These are test styles */

  --background: 0 0% 7%;
  --foreground: 0 0% 98%;
  --card: 0 0% 3.9%;
  --card-foreground: 0 0% 98%;
  --primary: 0 0% 98%;
  --primary-foreground: 0 0% 9%;
  --secondary: 0 0% 14.9%;
  --secondary-foreground: 0 0% 98%;
  --muted: 0 0% 14.9%;
  --muted-foreground: 0 0% 63.9%;
  --accent: 0 0% 14.9%;
  --accent-foreground: 0 0% 98%;
  --destructive: 0 62.8% 40.6%;
  --destructive-foreground: 0 0% 98%;
  --border: 0 0% 14.9%;
  --input: 0 0% 14.9%;
  --ring: 0 0% 83.1%;
  --chart-1: 220 70% 50%;
  --chart-2: 160 60% 45%;
  --chart-3: 30 80% 55%;
  --chart-4: 280 65% 60%;
  --chart-5: 340 75% 55%;
  --switch-unchecked: 0 0% 40%;
}
.gizmo {
  --text-primary: var(--gizmo-gray-950);
  --text-secondary: var(--gizmo-gray-600);
  --text-tertiary: var(--gizmo-gray-500);
  --surface-primary: var(--white);
  --surface-secondary: var(--gray-50);
  --surface-tertiary: var(--gray-100);
  --border-light: rgba(0, 0, 0, 0.1);
  --border-medium: rgba(0, 0, 0, 0.15);
  --border-heavy: rgba(0, 0, 0, 0.2);
  --border-xheavy: rgba(0, 0, 0, 0.25);
}
.gizmo.dark {
  --text-primary: var(--gray-100);
  --text-secondary: var(--gray-300);
  --text-tertiary: var(--gizmo-gray-500);
  --surface-primary: var(--gray-900);
  --surface-secondary: var(--gray-800);
  --surface-tertiary: var(--gray-700);
  --border-light: rgba(217, 217, 227, 0.1);
  --border-medium: rgba(217, 217, 227, 0.15);
  --border-heavy: rgba(217, 217, 227, 0.2);
  --border-xheavy: rgba(217, 217, 227, 0.25);
}

.text-token-text-primary {
  color: #171717;
  color: var(--text-primary);
}
.text-token-text-secondary {
  color: #565869;
  color: var(--text-secondary);
}
.text-token-text-tertiary {
  color: #8e8ea0;
  color: var(--text-tertiary);
}

.icon-xs {
  stroke-width: 1.5;
  height: 0.75rem;
  width: 0.75rem;
}
.icon-sm {
  stroke-width: 2;
  height: 1rem;
  width: 1rem;
}
.icon-md,
.icon-md-heavy {
  stroke-width: 1.5;
  height: 1.125rem;
  width: 1.125rem;
}
.icon-md-heavy {
  stroke-width: 2.5;
}
.icon-lg {
  stroke-width: 1.5;
  height: 1.5rem;
  width: 1.5rem;
}
.icon-xl {
  stroke-width: 1.5;
  height: 1.75rem;
  width: 1.75rem;
}
.icon-2xl {
  stroke-width: 1.5;
  height: 2rem;
  width: 2rem;
}
.icon-cover {
  stroke-width: 1.5;
  height: 234px;
  width: 234px;
}

.border-token-border-heavy {
  border-color: #c5c5d2;
  border-color: var(--border-heavy);
}

.border-token-border-light {
  border-color: #ececf1;
  border-color: var(--border-light);
}

.border-token-border-medium {
  border-color: #d9d9e3;
  border-color: var(--border-medium);
}

.border-token-surface-primary {
  border-color: #fff;
  border-color: var(--surface-primary);
}

.border-token-surface-secondary {
  border-color: var(--surface-secondary);
}

.border-token-surface-tertiary {
  border-color: #ececf1;
  border-color: var(--surface-tertiary);
}

.bg-token-surface-secondary {
  background-color: var(--surface-secondary);
}

@media (max-width: 640px) {
  .no-gradient-sm {
    background: none !important;
  }
}

.ellipsis {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

@font-face {
  font-display: swap;
  font-family: Inter;
  font-style: normal;
  font-weight: 400;
  src: url('$fonts/Inter-Regular.woff2') format('woff2');
  size-adjust: 94%;
}

@font-face {
  font-display: swap;
  font-family: Inter;
  font-style: italic;
  font-weight: 400;
  src: url('$fonts/Inter-Italic.woff2') format('woff2');
  size-adjust: 94%;
}

@font-face {
  font-display: swap;
  font-family: Inter;
  font-style: normal;
  font-weight: 500;
  src: url('$fonts/Inter-SemiBold.woff2') format('woff2');
  size-adjust: 94%;
}

@font-face {
  font-display: swap;
  font-family: Inter;
  font-style: italic;
  font-weight: 500;
  src: url('$fonts/Inter-SemiBoldItalic.woff2') format('woff2');
  size-adjust: 94%;
}

@font-face {
  font-display: swap;
  font-family: Inter;
  font-style: normal;
  font-weight: 600;
  src: url('$fonts/Inter-Bold.woff2') format('woff2');
  size-adjust: 94%;
}

@font-face {
  font-display: swap;
  font-family: Inter;
  font-style: italic;
  font-weight: 600;
  src: url('$fonts/Inter-BoldItalic.woff2') format('woff2');
  size-adjust: 94%;
}

@font-face {
  font-display: swap;
  font-family: Roboto Mono;
  font-style: normal;
  font-weight: 400;
  src: url('$fonts/roboto-mono-latin-400-normal.woff2') format('woff2');
}

@font-face {
  font-display: swap;
  font-family: Roboto Mono;
  font-style: normal;
  font-weight: 700;
  src: url('$fonts/roboto-mono-latin-700-normal.woff2') format('woff2');
}

@font-face {
  font-display: swap;
  font-family: Roboto Mono;
  font-style: italic;
  font-weight: 400;
  src: url('$fonts/roboto-mono-latin-400-italic.woff2') format('woff2');
}

/*

The default ChatGPT fonts, according to OpenAI's brand guidelines, are proprietary and require appropriate font license according to your use case.

They can be purchased here: https://klim.co.nz/buy/soehne/

The fonts in question are (9 total):

> - Söhne (Buch Kursiv, Buch, Halbfett Kursiv, Halbfett, Kraftig Kursiv, Kraftig, Mono Buch Kursiv, Mono Buch, Mono Halbfett)

If you have purchased a license, you can use the commented-out `@font-face` declarations below to include them in your project.

Step 1: Buy whatever license applies to you and allows use of `.woff2` font files (likely web font license).
Step 2: Place them in ./client/public/fonts/ directory.
Step 3: Replace the current `fontFamily` config in ./client/tailwind.config.cjs with the following:

```
    fontFamily: {
      sans: ['Söhne', 'sans-serif'],
      mono: ['Söhne Mono', 'monospace'],
    },
```

Step 4: Uncomment all Söhne font-face declarations below.
Step 5: rebuild frontend code: `npm run frontend` (or rebuild docker).

*/

/* @font-face {
  font-display: swap;
  font-family: Söhne;
  font-style: normal;
  font-weight: 400;
  src: url("$fonts/soehne-buch.woff2") format("woff2")
}

@font-face {
  font-display: swap;
  font-family: Söhne;
  font-style: italic;
  font-weight: 400;
  src: url("$fonts/soehne-buch-kursiv.woff2") format("woff2")
}

@font-face {
  font-display: swap;
  font-family: Söhne;
  font-style: normal;
  font-weight: 500;
  src: url("$fonts/soehne-kraftig.woff2") format("woff2")
}

@font-face {
  font-display: swap;
  font-family: Söhne;
  font-style: italic;
  font-weight: 500;
  src: url("$fonts/soehne-kraftig-kursiv.woff2") format("woff2")
}

@font-face {
  font-display: swap;
  font-family: Söhne;
  font-style: normal;
  font-weight: 600;
  src: url("$fonts/soehne-halbfett.woff2") format("woff2")
}

@font-face {
  font-display: swap;
  font-family: Söhne;
  font-style: italic;
  font-weight: 600;
  src: url("$fonts/soehne-halbfett-kursiv.woff2") format("woff2")
}

@font-face {
  font-display: swap;
  font-family: Söhne Mono;
  font-style: normal;
  font-weight: 400;
  src: url("$fonts/soehne-mono-buch.woff2") format("woff2")
}

@font-face {
  font-display: swap;
  font-family: Söhne Mono;
  font-style: normal;
  font-weight: 700;
  src: url("$fonts/soehne-mono-halbfett.woff2") format("woff2")
}

@font-face {
  font-display: swap;
  font-family: Söhne Mono;
  font-style: italic;
  font-weight: 400;
  src: url("$fonts/soehne-mono-buch-kursiv.woff2") format("woff2")
} */

/* * {
  box-sizing: border-box;
  outline: 1px solid limegreen !important;
} */

/* p small {
  opacity: 0;
  animation: fadeIn 3s ease forwards;
}

@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
} */

/* .LazyLoad {
  opacity: 0;
  transition: all 1s ease-in-out;
} */

select {
  --tw-shadow: 0 0 transparent;
  -webkit-appearance: none;
  appearance: none;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%238e8ea0' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");
  background-position: right 0.5rem center;
  background-repeat: no-repeat;
  background-size: 1.5em 1.5em;
  padding-right: 2.5rem;
  background-color: #fff;
  border-color: #8e8ea0;
  border-radius: 0;
  border-width: 1px;
  font-size: 1rem;
  line-height: 1.5rem;
}

.overflow-y-auto {
  overflow-y: overlay;
}

.overflow-x-auto {
  overflow-x: overlay;
}

.reset-rc-number-input input {
  width: 100%;
  border: none !important;
  background: transparent;
}

.reset-rc-number-input-text-right input {
  text-align: right;
}

.option-buttons {
  pointer-events: none;
  opacity: 0;
  transition: all 0.25s ease-in-out;
}

.option-buttons.full-opacity {
  pointer-events: fill;
  opacity: 1;
}

.option-buttons.show {
  pointer-events: fill;
  opacity: 1;
}

.options-bar {
  pointer-events: none;
  opacity: 0;
  transition: all 0.25s ease-in-out;
}

.options-bar.full-opacity {
  pointer-events: fill;
  opacity: 1;
}

.options-bar.show {
  pointer-events: fill;
  opacity: 0.3;
}

.hidden {
  display: none;
}

.creative-tab {
  /* background: linear-gradient(90deg, #904887 10.79%, #8B257E 87.08%); */
  background: linear-gradient(90deg, #904887 10.79%, #8b257e 87.08%);
}

.fast-tab {
  background: linear-gradient(90deg, #2870ea 10.79%, #1b4aef 87.08%);
}

.balanced-tab {
  background: linear-gradient(90deg, #d7871a 10.79%, #9f6005 87.08%);
}

.precise-tab {
  background: linear-gradient(90deg, #006880 10.79%, #005366 87.08%);
}

p > small {
  opacity: 0;
  animation: fadein 3s forwards;
}

.fade-in {
  animation: fadeInWithOutTranslate 0.3s ease-in-out;
}

@keyframes fadeInWithOutTranslate {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes fadein {
  from {
    opacity: 0;
    transform: translateY(-20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

blockquote,
dd,
dl,
fieldset,
figure,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
p,
pre {
  margin: 0;
}

.scroll-down-enter {
  opacity: 0;
}
/* .scroll-down-appear {
  opacity: 0;
} */

.scroll-down-enter-active {
  opacity: 1;
  transition: opacity 400ms;
}

.scroll-down-exit {
  opacity: 1;
}

.scroll-down-exit-active {
  opacity: 0;
  transition: opacity 400ms;
}

.blink {
  animation: blink 1s linear infinite;
}
@keyframes blink {
  0% {
    opacity: 1;
  }
  50% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

.cursorBlink {
  animation: blink 1s linear infinite;
}
@keyframes blink {
  0% {
    opacity: 1;
  }
  79% {
    opacity: 1;
  }
  80% {
    opacity: 0;
  }
  99% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

.blink2 {
  animation: blink 1500ms linear infinite;
}
@keyframes blink2 {
  0% {
    opacity: 1;
  }
  50% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

.prose {
  color: var(--tw-prose-body);
  max-width: 65ch;
  font-size: var(--markdown-font-size, var(--font-size-base));
  line-height: calc(
    28px * var(--markdown-font-size, var(--font-size-base)) / var(--font-size-base)
  );
}

.prose :where([class~='lead']):not(:where([class~='not-prose'] *)) {
  color: var(--tw-prose-lead);
  font-size: 1.25em;
  line-height: 1.6;
  margin-bottom: 1.2em;
  margin-top: 1.2em;
}
.prose :where(a):not(:where([class~='not-prose'] *)) {
  color: var(--tw-prose-links);
  font-weight: 500;
  text-decoration: underline;
}
.prose :where(strong):not(:where([class~='not-prose'] *)) {
  color: var(--tw-prose-bold);
  font-weight: 600;
}
.prose :where(a strong):not(:where([class~='not-prose'] *)) {
  color: inherit;
}
.prose :where(blockquote strong):not(:where([class~='not-prose'] *)) {
  color: inherit;
}
.prose :where(thead th strong):not(:where([class~='not-prose'] *)) {
  color: inherit;
}
.prose :where(ul > li):not(:where([class~='not-prose'] *))::marker {
  color: var(--tw-prose-bullets);
}
.prose :where(hr):not(:where([class~='not-prose'] *)) {
  border-color: var(--tw-prose-hr);
  border-top-width: 1px;
  margin-bottom: 3em;
  margin-top: 3em;
}
.prose :where(blockquote):not(:where([class~='not-prose'] *)) {
  border-left-color: var(--tw-prose-quote-borders);
  border-left-width: 0.25rem;
  color: var(--tw-prose-quotes);
  font-style: italic;
  font-style: normal;
  font-weight: 500;
  margin-bottom: 1.6em;
  margin-top: 1.6em;
  padding-left: 1em;
  quotes: '\201C''\201D''\2018''\2019';
}
.prose :where(blockquote p:first-of-type):not(:where([class~='not-prose'] *)):before {
  content: open-quote;
}
.prose :where(blockquote p:last-of-type):not(:where([class~='not-prose'] *)):after {
  content: close-quote;
}
.prose :where(h1):not(:where([class~='not-prose'] *)) {
  color: var(--tw-prose-headings);
  font-size: 2.25em;
  font-weight: 800;
  line-height: 1.1111111;
  margin-bottom: 0.8888889em;
  margin-top: 0;
}
.prose :where(h1 strong):not(:where([class~='not-prose'] *)) {
  color: inherit;
  font-weight: 900;
}
.prose :where(h2):not(:where([class~='not-prose'] *)) {
  color: var(--tw-prose-headings);
  font-size: 1.5em;
  font-weight: 700;
  line-height: 1.3333333;
  margin-bottom: 1em;
  margin-top: 2em;
}
.prose :where(h2 strong):not(:where([class~='not-prose'] *)) {
  color: inherit;
  font-weight: 800;
}
.prose :where(h3):not(:where([class~='not-prose'] *)) {
  color: var(--tw-prose-headings);
  font-size: 1.25em;
  font-weight: 600;
  line-height: 1.6;
  margin-bottom: 0.6em;
  margin-top: 1.6em;
}
.prose :where(h3 strong):not(:where([class~='not-prose'] *)) {
  color: inherit;
  font-weight: 700;
}
.prose :where(h4):not(:where([class~='not-prose'] *)) {
  color: var(--tw-prose-headings);
  font-weight: 600;
  line-height: 1.5;
  margin-bottom: 0.5em;
  margin-top: 1.5em;
}
.prose :where(h4 strong):not(:where([class~='not-prose'] *)) {
  color: inherit;
  font-weight: 700;
}
.prose :where(img):not(:where([class~='not-prose'] *)) {
  margin-bottom: 2em;
  margin-top: 2em;
}
.prose :where(figure > *):not(:where([class~='not-prose'] *)) {
  margin-bottom: 0;
  margin-top: 0;
}
.prose :where(figcaption):not(:where([class~='not-prose'] *)) {
  color: var(--tw-prose-captions);
  font-size: 0.875em;
  line-height: 1.4285714;
  margin-top: 0.8571429em;
}
.prose :where(code):not(:where([class~='not-prose'] *)) {
  color: var(--tw-prose-code);
  font-size: 0.875em;
  font-weight: 600;
}
.prose :where(code):not(:where([class~='not-prose'] *)):before {
  content: '`';
}
.prose :where(code):not(:where([class~='not-prose'] *)):after {
  content: '`';
}
.prose :where(a code):not(:where([class~='not-prose'] *)) {
  color: inherit;
}
.prose :where(h1 code):not(:where([class~='not-prose'] *)) {
  color: inherit;
}
.prose :where(h2 code):not(:where([class~='not-prose'] *)) {
  color: inherit;
  font-size: 0.875em;
}
.prose :where(h3 code):not(:where([class~='not-prose'] *)) {
  color: inherit;
  font-size: 0.9em;
}
.prose :where(h4 code):not(:where([class~='not-prose'] *)) {
  color: inherit;
}
.prose :where(blockquote code):not(:where([class~='not-prose'] *)) {
  color: inherit;
}
.prose :where(thead th code):not(:where([class~='not-prose'] *)) {
  color: inherit;
}
.prose :where(pre):not(:where([class~='not-prose'] *)) {
  background-color: transparent;
  border-radius: 0.375rem;
  color: currentColor;
  font-size: 0.875em;
  font-weight: 400;
  line-height: 1.7142857;
  margin: 0;
  overflow-x: auto;
  padding: 0;
}
.prose :where(pre code):not(:where([class~='not-prose'] *)) {
  background-color: transparent;
  border-radius: 0;
  border-width: 0;
  color: inherit;
  font-family: inherit;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
  padding: 0;
}
.prose :where(pre code):not(:where([class~='not-prose'] *)):before {
  content: none;
}
.prose :where(pre code):not(:where([class~='not-prose'] *)):after {
  content: none;
}
.prose :where(table):not(:where([class~='not-prose'] *)) {
  font-size: 0.875em;
  line-height: 1.7142857;
  margin-bottom: 2em;
  margin-top: 2em;
  table-layout: auto;
  text-align: left;
  width: 100%;
}
.prose :where(thead):not(:where([class~='not-prose'] *)) {
  border-bottom-color: var(--tw-prose-th-borders);
  border-bottom-width: 1px;
}
.prose :where(thead th):not(:where([class~='not-prose'] *)) {
  color: var(--tw-prose-headings);
  font-weight: 600;
  padding-bottom: 0.5714286em;
  padding-left: 0.5714286em;
  padding-right: 0.5714286em;
  vertical-align: bottom;
}
.prose :where(tbody tr):not(:where([class~='not-prose'] *)) {
  border-bottom-color: var(--tw-prose-td-borders);
  border-bottom-width: 1px;
}
.prose :where(tbody tr:last-child):not(:where([class~='not-prose'] *)) {
  border-bottom-width: 0;
}
.prose :where(tbody td):not(:where([class~='not-prose'] *)) {
  vertical-align: baseline;
}
.prose :where(tfoot):not(:where([class~='not-prose'] *)) {
  border-top-color: var(--tw-prose-th-borders);
  border-top-width: 1px;
}
.prose :where(tfoot td):not(:where([class~='not-prose'] *)) {
  vertical-align: top;
}
.prose {
  --tw-prose-body: #374151;
  --tw-prose-headings: #111827;
  --tw-prose-lead: #4b5563;
  --tw-prose-links: #111827;
  --tw-prose-bold: #111827;
  --tw-prose-counters: #6b7280;
  --tw-prose-bullets: #d1d5db;
  --tw-prose-hr: #e5e7eb;
  --tw-prose-quotes: #111827;
  --tw-prose-quote-borders: #e5e7eb;
  --tw-prose-captions: #6b7280;
  --tw-prose-code: #111827;
  --tw-prose-pre-code: #e5e7eb;
  --tw-prose-pre-bg: #1f2937;
  --tw-prose-th-borders: #d1d5db;
  --tw-prose-td-borders: #e5e7eb;
  --tw-prose-invert-body: #d1d5db;
  --tw-prose-invert-headings: #fff;
  --tw-prose-invert-lead: #9ca3af;
  --tw-prose-invert-links: #fff;
  --tw-prose-invert-bold: #fff;
  --tw-prose-invert-counters: #9ca3af;
  --tw-prose-invert-bullets: #4b5563;
  --tw-prose-invert-hr: #374151;
  --tw-prose-invert-quotes: #f3f4f6;
  --tw-prose-invert-quote-borders: #374151;
  --tw-prose-invert-captions: #9ca3af;
  --tw-prose-invert-code: #fff;
  --tw-prose-invert-pre-code: #d1d5db;
  --tw-prose-invert-pre-bg: rgba(0, 0, 0, 0.5);
  --tw-prose-invert-th-borders: #4b5563;
  --tw-prose-invert-td-borders: #374151;
  font-size: 1rem;
  line-height: 1.75;
}
.prose :where(p):not(:where([class~='not-prose'] *)) {
  margin-bottom: 1.25em;
  margin-top: 1.25em;
}
.prose :where(video):not(:where([class~='not-prose'] *)) {
  margin-bottom: 2em;
  margin-top: 2em;
}
.prose :where(figure):not(:where([class~='not-prose'] *)) {
  margin-bottom: 2em;
  margin-top: 2em;
}
.prose :where(li):not(:where([class~='not-prose'] *)) {
  margin-bottom: 0.5em;
  margin-top: 0.5em;
}
.prose :where(ul > li):not(:where([class~='not-prose'] *)) {
  padding-left: 0.375em;
}
.prose :where(.prose > ul > li p):not(:where([class~='not-prose'] *)) {
  margin-bottom: 0.75em;
  margin-top: 0.75em;
}
.prose :where(.prose > ul > li > :first-child):not(:where([class~='not-prose'] *)) {
  margin-top: 0;
}
.prose :where(.prose > ul > li > :last-child):not(:where([class~='not-prose'] *)) {
  margin-bottom: 1.25em;
}
.prose :where(hr + *):not(:where([class~='not-prose'] *)) {
  margin-top: 0;
}
.prose :where(h2 + *):not(:where([class~='not-prose'] *)) {
  margin-top: 0;
}
.prose :where(h3 + *):not(:where([class~='not-prose'] *)) {
  margin-top: 0;
}
.prose :where(h4 + *):not(:where([class~='not-prose'] *)) {
  margin-top: 0;
}
.prose :where(thead th:first-child):not(:where([class~='not-prose'] *)) {
  padding-left: 0;
}
.prose :where(thead th:last-child):not(:where([class~='not-prose'] *)) {
  padding-right: 0;
}
.prose :where(tbody td, tfoot td):not(:where([class~='not-prose'] *)) {
  padding: 0.5714286em;
}
.prose :where(tbody td:first-child, tfoot td:first-child):not(:where([class~='not-prose'] *)) {
  padding-left: 0;
}
.prose :where(tbody td:last-child, tfoot td:last-child):not(:where([class~='not-prose'] *)) {
  padding-right: 0;
}
.prose :where(.prose > :first-child):not(:where([class~='not-prose'] *)) {
  margin-top: 0;
}
.prose :where(.prose > :last-child):not(:where([class~='not-prose'] *)) {
  margin-bottom: 0;
}
.prose-sm :where(.prose > ul > li p):not(:where([class~='not-prose'] *)) {
  margin-bottom: 0.5714286em;
  margin-top: 0.5714286em;
}
.prose-sm :where(.prose > ul > li > :first-child):not(:where([class~='not-prose'] *)) {
  margin-top: 1.1428571em;
}
.prose-sm :where(.prose > ul > li > :last-child):not(:where([class~='not-prose'] *)) {
  margin-bottom: 1.1428571em;
}
.prose-sm :where(.prose > :first-child):not(:where([class~='not-prose'] *)) {
  margin-top: 0;
}
.prose-sm :where(.prose > :last-child):not(:where([class~='not-prose'] *)) {
  margin-bottom: 0;
}
.prose-base :where(.prose > ul > li p):not(:where([class~='not-prose'] *)) {
  margin-bottom: 0.75em;
  margin-top: 0.75em;
}
.prose-base :where(.prose > ul > li > :first-child):not(:where([class~='not-prose'] *)) {
  margin-top: 0;
}
.prose-base :where(.prose > ul > li > :last-child):not(:where([class~='not-prose'] *)) {
  margin-bottom: 1.25em;
}
.prose-base :where(.prose > :first-child):not(:where([class~='not-prose'] *)) {
  margin-top: 0;
}
.prose-base :where(.prose > :last-child):not(:where([class~='not-prose'] *)) {
  margin-bottom: 0;
}
.prose-lg :where(.prose > ul > li p):not(:where([class~='not-prose'] *)) {
  margin-bottom: 0.8888889em;
  margin-top: 0.8888889em;
}
.prose-lg :where(.prose > ul > li > :first-child):not(:where([class~='not-prose'] *)) {
  margin-top: 1.3333333em;
}
.prose-lg :where(.prose > ul > li > :last-child):not(:where([class~='not-prose'] *)) {
  margin-bottom: 1.3333333em;
}
.prose-lg :where(.prose > :first-child):not(:where([class~='not-prose'] *)) {
  margin-top: 0;
}
.prose-lg :where(.prose > :last-child):not(:where([class~='not-prose'] *)) {
  margin-bottom: 0;
}
.prose-xl :where(.prose > ul > li p):not(:where([class~='not-prose'] *)) {
  margin-bottom: 0.8em;
  margin-top: 0.8em;
}
.prose-xl :where(.prose > ul > li > :first-child):not(:where([class~='not-prose'] *)) {
  margin-top: 1.2em;
}
.prose-xl :where(.prose > ul > li > :last-child):not(:where([class~='not-prose'] *)) {
  margin-bottom: 1.2em;
}
.prose-xl :where(.prose > :first-child):not(:where([class~='not-prose'] *)) {
  margin-top: 0;
}
.prose-xl :where(.prose > :last-child):not(:where([class~='not-prose'] *)) {
  margin-bottom: 0;
}
.prose-2xl :where(.prose > ul > li p):not(:where([class~='not-prose'] *)) {
  margin-bottom: 0.8333333em;
  margin-top: 0.8333333em;
}
.prose-2xl :where(.prose > ul > li > :first-child):not(:where([class~='not-prose'] *)) {
  margin-top: 1.3333333em;
}
.prose-2xl :where(.prose > ul > li > :last-child):not(:where([class~='not-prose'] *)) {
  margin-bottom: 1.3333333em;
}
.prose-2xl :where(.prose > :first-child):not(:where([class~='not-prose'] *)) {
  margin-top: 0;
}
.prose-2xl :where(.prose > :last-child):not(:where([class~='not-prose'] *)) {
  margin-bottom: 0;
}

code,
pre {
  font-family: Consolas, Söhne Mono, Monaco, Andale Mono, Ubuntu Mono, monospace !important;
}
code[class='language-plaintext'] {
  white-space: pre-line;
}
code.hljs,
code[class*='language-'],
pre[class*='language-'] {
  word-wrap: normal;
  background: none;
  color: #fff;
  -webkit-hyphens: none;
  hyphens: none;
  font-size: 0.85rem;
  line-height: 1.5;
  tab-size: 4;
  text-align: left;
  white-space: pre;
  word-break: normal;
  word-spacing: normal;
}
pre[class*='language-'] {
  border-radius: 0.3em;
  overflow: auto;
}
:not(pre) > code.hljs,
:not(pre) > code[class*='language-'] {
  border-radius: 0.3em;
  padding: 0.1em;
  white-space: normal;
}
.hljs-comment {
  color: hsla(0, 0%, 100%, 0.5);
}
.hljs-meta {
  color: hsla(0, 0%, 100%, 0.6);
}
.hljs-built_in,
.hljs-class .hljs-title {
  color: #e9950c;
}
.hljs-doctag,
.hljs-formula,
.hljs-keyword,
.hljs-literal {
  color: #2e95d3;
}
.hljs-addition,
.hljs-attribute,
.hljs-meta-string,
.hljs-regexp,
.hljs-string {
  color: #00a67d;
}
.hljs-attr,
.hljs-number,
.hljs-selector-attr,
.hljs-selector-class,
.hljs-selector-pseudo,
.hljs-template-variable,
.hljs-type,
.hljs-variable {
  color: #df3079;
}
.hljs-bullet,
.hljs-link,
.hljs-selector-id,
.hljs-symbol,
.hljs-title {
  color: #f22c3d;
}

[role='button'],
button {
  cursor: pointer;
}

.btn {
  align-items: center;
  border-color: transparent;
  border-radius: 0.5rem;
  border-width: 1px;
  cursor: pointer;
  display: inline-flex;
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1.25rem;
  padding: 0.5rem 0.75rem;
  pointer-events: auto;
  transition: all 0.1s ease-in-out;
}
.custom-btn {
  align-items: center;
  border-color: transparent;
  border-radius: 0.25rem;
  border-width: 1px;
  display: inline-flex;
  font-size: 0.875rem;
  line-height: 1.25rem;
  padding: 0.5rem 0.75rem;
  transition: all 0.1s ease-in-out;
}
.btn:focus {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.btn:disabled {
  cursor: not-allowed;
  opacity: 0.5;
}
.btn-primary {
  --tw-bg-opacity: 1;
  --tw-text-opacity: 1;
  background-color: rgba(16, 163, 127, var(--tw-bg-opacity));
  color: rgba(255, 255, 255, var(--tw-text-opacity));
}
.btn-primary:hover {
  --tw-bg-opacity: 1;
  background-color: rgba(26, 127, 100, var(--tw-bg-opacity));
}
.btn-primary:focus {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width)
    var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width))
    var(--tw-ring-color);
  --tw-ring-offset-width: 2px;
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), 0 0 transparent;
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 transparent);
}
.btn-primary.focus-visible {
  --tw-ring-opacity: 1;
  --tw-ring-color: rgba(25, 195, 125, var(--tw-ring-opacity));
}
.btn-primary:focus-visible {
  --tw-ring-opacity: 1;
  --tw-ring-color: rgba(25, 195, 125, var(--tw-ring-opacity));
}
.btn-primary:disabled:hover {
  --tw-bg-opacity: 1;
  background-color: rgba(16, 163, 127, var(--tw-bg-opacity));
}
.btn-secondary {
  --tw-border-opacity: 1;
  --tw-bg-opacity: 1;
  --tw-text-opacity: 1;
  background-color: transparent;
  background-color: rgba(16, 163, 156, var(--tw-bg-opacity));
  color: rgba(255, 255, 255, var(--tw-text-opacity));
}
.btn-secondary:hover {
  --tw-bg-opacity: 1;
  border-color: rgba(0, 0, 0, 0.1);
  color: rgba(64, 65, 79, var(--tw-text-opacity));
  background-color: rgba(236, 236, 241, var(--tw-bg-opacity));
}
.dark .btn-secondary:hover {
  --tw-bg-opacity: 1;
  border-color: rgba(8, 82, 78, var(--tw-border-opacity));
  color: rgba(255, 255, 240, var(--tw-text-opacity));
  background-color: rgba(8, 82, 78, var(--tw-bg-opacity));
}
.btn-neutral {
  --tw-bg-opacity: 1;
  --tw-text-opacity: 1;
  background-color: var(--surface-secondary);
  border-color: rgba(0, 0, 0, 0.1);
  border-width: 1px;
  color: rgba(64, 65, 79, var(--tw-text-opacity));
  font-size: 0.875rem;
  line-height: 1.25rem;
  transition: all 0.1s ease-in-out;
}

.btn-neutral:hover {
  --tw-bg-opacity: 1;
  background-color: rgba(236, 236, 241, var(--tw-bg-opacity));
}

.btn-neutral:focus {
  outline: none;
  box-shadow: 0 0 0 2px var(--ring-primary);
}

.dark .btn-neutral {
  --tw-border-opacity: 1;
  --tw-bg-opacity: 1;
  --tw-text-opacity: 1;
  background-color: transparent;
  border-color: rgba(66, 66, 66, var(--tw-border-opacity));
  color: rgba(255, 255, 240, var(--tw-text-opacity));
}

.dark .btn-neutral:hover {
  --tw-bg-opacity: 1;
  background-color: rgba(66, 66, 66, var(--tw-bg-opacity));
}

.dark .btn-neutral:focus {
  box-shadow: 0 0 0 2px var(--ring-primary);
}
.btn-small {
  padding: 0.25rem 0.5rem;
}

.from-token-surface-secondary {
  --tw-gradient-from: var(--surface-secondary) var(--tw-gradient-from-position);
  --tw-gradient-to: hsla(0, 0%, 100%, 0) var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}

/* Webkit scrollbar */
::-webkit-scrollbar {
  height: 0.1em;
  width: 0.5rem;
}

::-webkit-scrollbar-thumb {
  background-color: rgba(0, 0, 0, 0.1);
  border-radius: 9999px;
}

.dark ::-webkit-scrollbar-thumb {
  background-color: hsla(0, 0%, 100%, 0.1);
}

::-webkit-scrollbar-track {
  background-color: transparent;
  border-radius: 9999px;
}

.scrollbar-transparent::-webkit-scrollbar-thumb {
  background-color: transparent;
}

.dark .scrollbar-transparent::-webkit-scrollbar-thumb {
  background-color: transparent;
}

body,
html {
  height: 100%;
}

.dark body,
.dark html {
  --tw-bg-opacity: 1;
  background-color: rgba(23, 23, 23, var(--tw-bg-opacity));
}

#__next,
#root {
  height: 100%;
}

.markdown {
  max-width: none;
  font-size: var(--markdown-font-size, var(--font-size-base));
  line-height: calc(
    28px * var(--markdown-font-size, var(--font-size-base)) / var(--font-size-base)
  );
}

.markdown h1 {
  font-size: calc(var(--markdown-font-size) * 1.75);
}
.markdown h2 {
  font-size: calc(var(--markdown-font-size) * 1.5);
}

.markdown h2 {
  margin-bottom: 1rem;
  margin-top: 2rem;
}

.markdown h3 {
  font-weight: 600;
  font-size: calc(var(--markdown-font-size) * 1.25);
}

.markdown h3,
.markdown h4 {
  margin-bottom: 0.5rem;
  margin-top: 1rem;
}

.markdown h4 {
  font-weight: 400;
  font-size: calc(var(--markdown-font-size) * 1.1);
}

.markdown h5 {
  font-weight: 600;
  font-size: var(--markdown-font-size);
}

.markdown blockquote {
  --tw-border-opacity: 1;
  border-color: rgba(142, 142, 160, var(--tw-border-opacity));
  border-left-width: 2px;
  line-height: 1rem;
  padding-left: 1rem;
}

.markdown table {
  --tw-border-spacing-x: 0px;
  --tw-border-spacing-y: 0px;
  border-collapse: separate;
  border-spacing: var(--tw-border-spacing-x) var(--tw-border-spacing-y);
  width: 100%;
}

.markdown th {
  background-color: rgba(236, 236, 241, 0.2);
  border-bottom-width: 1px;
  border-left-width: 1px;
  border-top-width: 1px;
  padding: 0.25rem 0.75rem;
}

.markdown th:first-child {
  border-top-left-radius: 0.375rem;
}

.markdown th:last-child {
  border-right-width: 1px;
  border-top-right-radius: 0.375rem;
}

.markdown td {
  border-bottom-width: 1px;
  border-left-width: 1px;
  padding: 0.25rem 0.75rem;
}

.markdown td:last-child {
  border-right-width: 1px;
}

.markdown tbody tr:last-child td:first-child {
  border-bottom-left-radius: 0.375rem;
}

.markdown tbody tr:last-child td:last-child {
  border-bottom-right-radius: 0.375rem;
}

.markdown a {
  text-decoration-line: underline;
  text-underline-offset: 2px;
}

.animate-flash {
  -webkit-animation: flash 2s steps(60, start);
  animation: flash 2s steps(60, start);
}

@-webkit-keyframes flash {
  0% {
    background-color: hsla(0, 0%, 100%, 0.4);
  }
}

@keyframes flash {
  0% {
    background-color: hsla(0, 0%, 100%, 0.4);
  }
}

.truncate {
  overflow: hidden;
  white-space: nowrap;
}

.text-ellipsis,
.truncate {
  text-overflow: ellipsis;
}

.group:hover .group-hover\:visible {
  visibility: visible;
}
.group:hover .group-hover\:from-\[\#2A2B32\] {
  --tw-gradient-from: #2a2b32;
  --tw-gradient-to: rgba(42, 43, 50, 0);
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
.group:hover .group-hover\:text-gray-500 {
  --tw-text-opacity: 1;
  color: rgba(142, 142, 160, var(--tw-text-opacity));
}
.group:hover .group-hover\:text-gray-700 {
  --tw-text-opacity: 1;
  color: rgba(64, 65, 79, var(--tw-text-opacity));
}
.dark .dark\:prose-invert {
  --tw-prose-body: var(--tw-prose-invert-body);
  --tw-prose-headings: var(--tw-prose-invert-headings);
  --tw-prose-lead: var(--tw-prose-invert-lead);
  --tw-prose-links: var(--tw-prose-invert-links);
  --tw-prose-bold: var(--tw-prose-invert-bold);
  --tw-prose-counters: var(--tw-prose-invert-counters);
  --tw-prose-bullets: var(--tw-prose-invert-bullets);
  --tw-prose-hr: var(--tw-prose-invert-hr);
  --tw-prose-quotes: var(--tw-prose-invert-quotes);
  --tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);
  --tw-prose-captions: var(--tw-prose-invert-captions);
  --tw-prose-code: var(--tw-prose-invert-code);
  --tw-prose-pre-code: var(--tw-prose-invert-pre-code);
  --tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);
  --tw-prose-th-borders: var(--tw-prose-invert-th-borders);
  --tw-prose-td-borders: var(--tw-prose-invert-td-borders);
}

@-webkit-keyframes spin {
  to {
    -webkit-transform: rotate(1turn);
    transform: rotate(1turn);
  }
}
@keyframes spin {
  to {
    -webkit-transform: rotate(1turn);
    transform: rotate(1turn);
  }
}
.animate-spin {
  -webkit-animation: spin 1s linear infinite;
  animation: spin 1s linear infinite;
}

.form-input,
.form-multiselect,
.form-select,
.form-textarea {
  --tw-shadow: 0 0 transparent;
  -webkit-appearance: none;
  appearance: none;
  background-color: #fff;
  border-color: #8e8ea0;
  border-radius: 0;
  border-width: 1px;
  font-size: 1rem;
  line-height: 1.5rem;
  padding: 0.5rem 0.75rem;
}
.form-input:focus,
.form-multiselect:focus,
.form-select:focus,
.form-textarea:focus {
  --tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: #2563eb;
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width)
    var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width))
    var(--tw-ring-color);
  border-color: #2563eb;
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.form-input::-webkit-input-placeholder,
.form-textarea::-webkit-input-placeholder {
  color: #8e8ea0;
  opacity: 1;
}
.form-input::placeholder,
.form-textarea::placeholder {
  color: #8e8ea0;
  opacity: 1;
}
.form-input::-webkit-datetime-edit-fields-wrapper {
  padding: 0;
}
.form-input::-webkit-date-and-time-value {
  min-height: 1.5em;
}
.form-input::-webkit-datetime-edit,
.form-input::-webkit-datetime-edit-day-field,
.form-input::-webkit-datetime-edit-hour-field,
.form-input::-webkit-datetime-edit-meridiem-field,
.form-input::-webkit-datetime-edit-millisecond-field,
.form-input::-webkit-datetime-edit-minute-field,
.form-input::-webkit-datetime-edit-month-field,
.form-input::-webkit-datetime-edit-second-field,
.form-input::-webkit-datetime-edit-year-field {
  padding-bottom: 0;
  padding-top: 0;
}

.grow {
  flex-grow: 1;
}

.transform {
  -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y))
    rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
    scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate))
    skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x))
    scaleY(var(--tw-scale-y));
}
body,
html {
  height: 100%;
}
.dark body,
.dark html {
  --tw-bg-opacity: 1;
  background-color: rgba(33, 33, 33, var(--tw-bg-opacity));
}
#__next,
#root {
  height: 100%;
}

.markdown {
  max-width: none;
}
.markdown h1,
.markdown h2 {
  font-weight: 600;
}
.markdown h2 {
  margin-bottom: 1rem;
  margin-top: 2rem;
}
.markdown h3 {
  font-weight: 600;
}
.markdown h3,
.markdown h4 {
  margin-bottom: 0.5rem;
  margin-top: 1rem;
}
.markdown h4 {
  font-weight: 400;
}
.markdown h5 {
  font-weight: 600;
}
.markdown blockquote {
  --tw-border-opacity: 1;
  border-color: rgba(142, 142, 160, var(--tw-border-opacity));
  border-left-width: 2px;
  line-height: 1rem;
  padding-left: 1rem;
}
.markdown table {
  --tw-border-spacing-x: 0px;
  --tw-border-spacing-y: 0px;
  border-collapse: separate;
  border-spacing: var(--tw-border-spacing-x) var(--tw-border-spacing-y);
  width: 100%;
}
.markdown th {
  background-color: rgba(236, 236, 241, 0.2);
  border-bottom-width: 1px;
  border-left-width: 1px;
  border-top-width: 1px;
  padding: 0.25rem 0.75rem;
}
.markdown th:first-child {
  border-top-left-radius: 0.375rem;
}
.markdown th:last-child {
  border-right-width: 1px;
  border-top-right-radius: 0.375rem;
}
.markdown td {
  border-bottom-width: 1px;
  border-left-width: 1px;
  padding: 0.25rem 0.75rem;
}
.markdown td:last-child {
  border-right-width: 1px;
}
.markdown tbody tr:last-child td:first-child {
  border-bottom-left-radius: 0.375rem;
}
.markdown tbody tr:last-child td:last-child {
  border-bottom-right-radius: 0.375rem;
}
.markdown a {
  text-decoration-line: underline;
  text-underline-offset: 2px;
}
.conversation-item-time:before {
  content: attr(data-time);
}
.tooltip-label:before {
  content: attr(data-content);
}
button.scroll-convo {
  display: none;
}
@-webkit-keyframes blink {
  to {
    visibility: hidden;
  }
}
@keyframes blink {
  to {
    visibility: hidden;
  }
}
.animate-flash {
  -webkit-animation: flash 2s steps(60, start);
  animation: flash 2s steps(60, start);
}
@-webkit-keyframes flash {
  0% {
    background-color: hsla(0, 0%, 100%, 0.4);
  }
}
@keyframes flash {
  0% {
    background-color: hsla(0, 0%, 100%, 0.4);
  }
}
.hidden-visibility {
  visibility: hidden;
}

.toast-root {
  align-items: center;
  display: flex;
  flex-direction: column;
  height: 0;
  transition: all 0.24s cubic-bezier(0, 0, 0.2, 1);
}

.toast-root[data-state='open'] {
  -webkit-animation: toast-open 0.24s cubic-bezier(0.175, 0.885, 0.32, 1.175) both;
  animation: toast-open 0.24s cubic-bezier(0.175, 0.885, 0.32, 1.175) both;
}
.toast-root[data-state='closed'] {
  -webkit-animation: toast-close 0.12s cubic-bezier(0.4, 0, 1, 1) both;
  animation: toast-close 0.12s cubic-bezier(0.4, 0, 1, 1) both;
}
.toast-root .alert-root {
  box-shadow: 0 0 1px rgba(67, 90, 111, 0.3), 0 5px 8px -4px rgba(67, 90, 111, 0.3);
  flex-shrink: 0;
  pointer-events: all;
}

@-webkit-keyframes toast-open {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-100%);
    transform: translateY(-100%);
  }
  to {
    -webkit-transform: translateY(0);
    transform: translateY(0);
  }
}
@keyframes toast-open {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-100%);
    transform: translateY(-100%);
  }
  to {
    -webkit-transform: translateY(0);
    transform: translateY(0);
  }
}
@-webkit-keyframes toast-close {
  0% {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
@keyframes toast-close {
  0% {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

@-webkit-keyframes pulseSize {
  0%,
  to {
    -webkit-transform: scaleX(1);
    transform: scaleX(1);
  }
  50% {
    -webkit-transform: scale3d(1.25, 1.25, 1);
    transform: scale3d(1.25, 1.25, 1);
  }
}
@keyframes pulseSize {
  0%,
  to {
    -webkit-transform: scaleX(1);
    transform: scaleX(1);
  }
  50% {
    -webkit-transform: scale3d(1.25, 1.25, 1);
    transform: scale3d(1.25, 1.25, 1);
  }
}
.submitting .result-thinking:empty:last-child:after {
  -webkit-font-smoothing: subpixel-antialiased;
  -webkit-animation: pulseSize 1.25s ease-in-out infinite;
  animation: pulseSize 1.25s ease-in-out infinite;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  background-color: #0d0d0d;
  background-color: var(--text-primary);
  border-radius: 50%;
  box-sizing: border-box;
  content: ' ';
  display: block;
  height: 12px;
  position: absolute;
  top: -11px;
  -webkit-transform: translateZ(0);
  transform: translateZ(0);
  -webkit-transform-origin: center;
  transform-origin: center;
  width: 12px;
  will-change: transform;
}

.shadow-stroke {
  position: relative;
}
.shadow-stroke:after {
  --tw-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1);
  --tw-shadow-colored: inset 0 0 0 1px var(--tw-shadow-color);
  border-radius: 9999px;
  bottom: 0;
  content: '';
  left: 0;
  position: absolute;
  right: 0;
  top: 0;
}
.dark .shadow-stroke:after,
.shadow-stroke:after {
  box-shadow: 0 0 transparent, 0 0 transparent, var(--tw-shadow);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 transparent), var(--tw-ring-shadow, 0 0 transparent),
    var(--tw-shadow);
}
.dark .shadow-stroke:after {
  --tw-shadow: inset 0 0 0 1px hsla(0, 0%, 100%, 0.3);
  --tw-shadow-colored: inset 0 0 0 1px var(--tw-shadow-color);
}

.assistant-item {
  position: relative;
}

.assistant-item:after {
  --tw-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.25);
  --tw-shadow-colored: inset 0 0 0 1px var(--tw-shadow-color);
  border-radius: 9999px;
  bottom: 0;
  content: '';
  left: 0;
  position: absolute;
  right: 0;
  top: 0;
  box-shadow: 0 0 transparent, 0 0 transparent, var(--tw-shadow);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 transparent), var(--tw-ring-shadow, 0 0 transparent),
    var(--tw-shadow);
}

.dark .assistant-item:after {
  --tw-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.25);
  --tw-shadow-colored: inset 0 0 0 1px var(--tw-shadow-color);
}

.result-streaming > :not(ol):not(ul):not(pre):last-child:after,
.result-streaming > pre:last-child code:after {
  display: inline-block;
  content: '⬤';
  width: 12px;
  height: 12px;
  font-family: system-ui, Inter, Söhne Circle, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell,
    Noto Sans, sans-serif;
  line-height: normal;
  margin-left: 0.25rem;
  vertical-align: middle;
  font-size: 0.5rem;
}

@supports (selector(:has(*))) {
  .result-streaming > :is(ul, ol):last-child > li:last-child:not(:has(> :is(ul, ol, pre))):after {
    content: '⬤';
    font-family: system-ui, Inter, Söhne Circle, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell,
      Noto Sans, sans-serif;
    line-height: normal;
    margin-left: 0.25rem;
    vertical-align: middle;
    font-size: 0.5rem;
    display: inline-block;
    width: 12px;
    height: 12px;
  }
}

@supports not (selector(:has(*))) {
  .result-streaming > ol:last-child > li:last-child:after,
  .result-streaming > ul:last-child > li:last-child:after {
    content: '⬤';
    font-family: system-ui, Inter, Söhne Circle, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell,
      Noto Sans, sans-serif;
    line-height: normal;
    margin-left: 0.25rem;
    vertical-align: middle;
    font-size: 0.5rem;
    display: inline-block;
    width: 12px;
    height: 12px;
  }

  .result-streaming > ol:last-child > li:last-child > :is(ul, ol, pre) ~ :after,
  .result-streaming > ul:last-child > li:last-child > :is(ul, ol, pre) ~ :after {
    display: none;
  }

  .result-streaming > ol:last-child > li:last-child > pre:last-child code:after,
  .result-streaming > ul:last-child > li:last-child > pre:last-child code:after {
    display: inline-block;
  }
}

/* Remove cursors when streaming is complete */
.result-streaming:not(.submitting) :is(ul, ol) li:after {
  display: none !important;
}

.webkit-dark-styles,
.webkit-dark-styles:focus {
  background-clip: content-box;
  -webkit-box-shadow: 0 0 0 50vh #fff inset;
}

.dark .webkit-dark-styles,
.dark .webkit-dark-styles:focus {
  -webkit-text-fill-color: #fff;
  background-clip: content-box;
  -webkit-box-shadow: 0 0 0 50vh #0d0d0d inset;
}

/* Ordered Listing */
.prose :where(ol[type='A']):not(:where([class~='not-prose'] *)) {
  list-style-type: upper-alpha;
}
.prose :where(ol[type='a']):not(:where([class~='not-prose'] *)) {
  list-style-type: lower-alpha;
}
.prose :where(ol[type='A s']):not(:where([class~='not-prose'] *)) {
  list-style-type: upper-alpha;
}
.prose :where(ol[type='a s']):not(:where([class~='not-prose'] *)) {
  list-style-type: lower-alpha;
}
.prose :where(ol[type='I']):not(:where([class~='not-prose'] *)) {
  list-style-type: upper-roman;
}
.prose :where(ol[type='i']):not(:where([class~='not-prose'] *)) {
  list-style-type: lower-roman;
}
.prose :where(ol[type='I s']):not(:where([class~='not-prose'] *)) {
  list-style-type: upper-roman;
}
.prose :where(ol[type='i s']):not(:where([class~='not-prose'] *)) {
  list-style-type: lower-roman;
}
.prose :where(ol[type='1']):not(:where([class~='not-prose'] *)) {
  list-style-type: decimal;
}
.prose :where(.prose > ol > li > :first-child):not(:where([class~='not-prose'] *)) {
  margin-top: 0;
}
.prose :where(.prose > ol > li > :last-child):not(:where([class~='not-prose'] *)) {
  margin-bottom: 1.25em;
}
.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~='not-prose'] *)) {
  margin-bottom: 0.75em;
  margin-top: 0.75em;
}
.prose-sm :where(.prose > ol > li > :first-child):not(:where([class~='not-prose'] *)) {
  margin-top: 1.1428571em;
}
.prose-sm :where(.prose > ol > li > :last-child):not(:where([class~='not-prose'] *)) {
  margin-bottom: 1.1428571em;
}
.prose-base :where(.prose > ol > li > :first-child):not(:where([class~='not-prose'] *)) {
  margin-top: 0;
}
.prose-base :where(.prose > ol > li > :last-child):not(:where([class~='not-prose'] *)) {
  margin-bottom: 1.25em;
}
.prose-lg :where(.prose > ol > li > :first-child):not(:where([class~='not-prose'] *)) {
  margin-top: 1.3333333em;
}
.prose-lg :where(.prose > ol > li > :last-child):not(:where([class~='not-prose'] *)) {
  margin-bottom: 1.3333333em;
}
.prose-xl :where(.prose > ol > li > :first-child):not(:where([class~='not-prose'] *)) {
  margin-top: 1.2em;
}
.prose-xl :where(.prose > ol > li > :last-child):not(:where([class~='not-prose'] *)) {
  margin-bottom: 1.2em;
}
.prose-2xl :where(.prose > ol > li > :first-child):not(:where([class~='not-prose'] *)) {
  margin-top: 1.3333333em;
}
.prose-2xl :where(.prose > ol > li > :last-child):not(:where([class~='not-prose'] *)) {
  margin-bottom: 1.3333333em;
}

/* Base styles for lists */
.prose ol,
.prose ul,
.markdown ol,
.markdown ul {
  list-style-position: outside;
  margin-top: 1em;
  margin-bottom: 1em;
  padding-left: 3em;
}

.prose li,
.markdown li {
  margin-bottom: 0.5em;
  margin-top: 0.5em;
}

/* Ordered lists */
.prose ol,
.markdown ol {
  list-style-type: decimal;
}

.prose ol > li,
.markdown ol > li {
  position: relative;
  padding-left: 0.375em;
}

.prose ol > li::marker,
.markdown ol > li::marker {
  color: var(--tw-prose-counters);
  font-weight: 400;
}

/* Nested ordered lists */
.prose ol ol,
.markdown ol ol {
  list-style-type: lower-alpha;
}

.prose ol ol ol,
.markdown ol ol ol {
  list-style-type: lower-roman;
}

/* Unordered lists */
.prose ul,
.markdown ul {
  list-style-type: disc;
}

.prose ul > li,
.markdown ul > li {
  padding-left: 0.375em;
}

.prose ul > li::marker,
.markdown ul > li::marker {
  color: var(--tw-prose-bullets);
}

/* Nested unordered lists */
.prose ul ul,
.markdown ul ul {
  list-style-type: circle;
}

.prose ul ul ul,
.markdown ul ul ul {
  list-style-type: square;
}

/* Nested lists */
.prose ol ol,
.prose ul ul,
.prose ul ol,
.prose ol ul,
.markdown ol ol,
.markdown ul ul,
.markdown ul ol,
.markdown ol ul {
  margin-top: 0.75em;
  margin-bottom: 0.75em;
}

.prose > ul > li > *:last-child,
.prose > ol > li > *:last-child,
.markdown > ul > li > *:last-child,
.markdown > ol > li > *:last-child {
  margin-bottom: 1.25em;
}

/* Ensure proper marker color */
.prose li::marker,
.markdown li::marker {
  color: currentColor;
}

/* Keyframes */

@keyframes slideFromLeftToRightAndFade {
  0% {
    opacity: 0;
    transform: translateX(-10%);
  }
  20% {
    opacity: 1;
    transform: translateX(0);
  }
  70% {
    opacity: 1;
    transform: translateX(0);
  }
  75% {
    opacity: 1;
    transform: translateX(10%);
  }
  80% {
    opacity: 0;
    transform: translateX(20%);
  }
  85%,
  100% {
    opacity: 0;
    transform: translateX(30%);
  }
}

.slide-from-left {
  animation: slideFromLeftToRightAndFade 2s ease-in-out infinite;
}

@keyframes slideDownAndFadeOut {
  0% {
    opacity: 1;
    transform: translateY(-10%);
  }
  20% {
    opacity: 1;
    transform: translateY(0);
  }
  70% {
    opacity: 1;
    transform: translateY(0);
  }
  75% {
    opacity: 1;
    transform: translateY(10%);
  }
  80% {
    opacity: 0;
    transform: translateY(20%);
  }
  85%,
  100% {
    opacity: 0;
    transform: translateY(30%);
  }
}

.slide-to-down {
  animation: slideDownAndFadeOut 2s ease-in-out infinite;
}

@keyframes rotateAdjustAndBack {
  0% {
    transform: rotate(-33deg) scale(1);
  }
  5% {
    transform: rotate(67deg) scale(1);
  }
  6%,
  20% {
    transform: rotate(57deg) scale(1);
  }
  22% {
    transform: rotate(65deg) scale(1);
  }
  26%,
  40% {
    transform: rotate(-33deg) scale(1);
  }
  42% {
    transform: rotate(-40deg) scale(1);
  }
  45%,
  75% {
    transform: rotate(30deg) scale(0.7);
  }
  77%,
  85% {
    transform: rotate(57deg) scale(1);
  }
  87% {
    transform: rotate(65deg) scale(1);
  }
  90%,
  100% {
    transform: rotate(-33deg) scale(1);
  }
}

.rotate-adjust-and-back {
  animation: rotateAdjustAndBack 10s ease-in-out infinite;
  transform-origin: 50% 50%;
}

@keyframes moonRise {
  0% {
    transform: translate(4px, 1px) rotate(-45deg);
    opacity: 0;
  }
  10% {
    transform: translate(4px, 1px) rotate(-45deg);
    opacity: 0;
  }
  20% {
    transform: translate(0, 0px) rotate(34deg);
    opacity: 1;
  }
  50% {
    transform: translate(0, 0px) rotate(34deg);
    opacity: 1;
  }
  60%,
  100% {
    transform: translate(0, 0px) rotate(34deg);
    opacity: 1;
  }
}

.moon-rise {
  animation: moonRise 4s ease-in-out infinite;
  transform-origin: 45% 50%;
}

@keyframes moveUp {
  0% {
    transform: translateY(0.5px);
    opacity: 0.8;
  }
  10% {
    transform: translateY(0.5px);
    opacity: 1;
  }
  20% {
    transform: translateY(0px);
    opacity: 1;
  }
  50% {
    transform: translateY(0px);
    opacity: 1;
  }
  60%,
  100% {
    transform: translateY(0px);
    opacity: 1;
  }
}

.move-up {
  animation: moveUp 4s ease-in-out infinite;
}

.message-content {
  font-size: var(--markdown-font-size, var(--font-size-base));
  line-height: 1.75;
}

.message-content pre code {
  font-size: calc(0.85 * var(--markdown-font-size, var(--font-size-base)));
}

.message-content pre {
  font-size: var(--markdown-font-size, var(--font-size-base));
}

.code-analyze-block pre code,
.code-analyze-block .overflow-y-auto code {
  font-size: calc(0.85 * var(--markdown-font-size, var(--font-size-base)));
}

.code-analyze-block pre,
.code-analyze-block .overflow-y-auto {
  font-size: var(--markdown-font-size, var(--font-size-base));
}

.progress-text-wrapper {
  font-size: var(--markdown-font-size, var(--font-size-base));
  line-height: calc(1.25 * var(--markdown-font-size, var(--font-size-base)));
}

.progress-text-content {
  font-size: inherit;
  line-height: inherit;
}

.progress-text-wrapper button {
  font-size: inherit;
  line-height: inherit;
}

.tooltip {
  z-index: 50;
  cursor: pointer;
  border-radius: 0.275rem;
  background-color: var(--surface-primary);
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
  padding-left: 0.5rem;
  padding-right: 0.5rem;
  font-size: 1rem;
  line-height: 1.5rem;
  color: black;
  box-shadow: 0 2px 4px 0 rgb(0 0 0 / 0.25);
}

.tooltip:where(.dark, .dark *) {
  background-color: var(--surface-primary);
  color: white;
  box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.35);
}

:focus {
  outline: none;
}

:focus-visible {
  outline: 2px solid #000;
  outline-offset: 2px;
}

.dark :focus-visible {
  outline: 2px solid #fff;
  outline-offset: 2px;
}

.popover-ui {
  z-index: 1000;
  display: flex;
  max-height: min(var(--popover-available-height, 300px), 300px);
  flex-direction: column;
  overflow: auto;
  overscroll-behavior: contain;
  border-radius: 1rem;
  border-width: 1px;
  border-style: solid;
  border-color: var(--border-light);
  background-color: hsl(var(--background));
  padding: 0.5rem;
  color: var(--text-primary);
  box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
  transform-origin: top;
  opacity: 0;
  transition-property: opacity, scale, translate;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
  scale: 0.95;
  translate: 0 -0.5rem;
  margin-top: 4px;
  margin-right: -2px;
}

.popover-ui:focus-visible,
.popover-ui[data-focus-visible] {
  outline: var(--bg-surface-hover);
  outline-offset: -1px;
}

.popover-ui:where(.dark, .dark *) {
  background-color: hsl(var(--background));
  color: var(--text-secondary);
  box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.25), 0 4px 6px -4px rgb(0 0 0 / 0.1);
}

.select-item {
  display: flex;
  cursor: pointer;
  scroll-margin: 0.5rem;
  align-items: center;
  gap: 0.5rem;
  border-radius: 0.5rem;
  padding: 0.5rem;
  outline: none !important;
}

.select-item[aria-disabled='true'] {
  opacity: 0.5;
}

.select-item[data-active-item] {
  background-color: hsl(var(--accent));
  color: var(--text-primary);
}

.popover-ui[data-enter] {
  opacity: 1;
  scale: 1;
  translate: 0;
}

/** Note: ensure KaTeX can spread across visible space */
.message-content pre:has(> span.katex) {
  overflow: visible !important;
  height: auto !important;
  max-height: none !important;
}