/* AUTO-GENERATED from @group107/design-tokens. Do not edit.
   Regenerate: pnpm --filter @group107/ui generate:chat-theme
   The Hive skin for LibreChat v0.8.7 (v0 CH3); provenance: docs/design/token-provenance.md */

@font-face {
  font-family: "Instrument Sans Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("./hive-fonts/instrument-sans-latin-wght-normal.woff2") format("woff2-variations");
  unicode-range: 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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

@font-face {
  font-family: "Instrument Sans Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("./hive-fonts/instrument-sans-latin-ext-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

@font-face {
  font-family: "Heebo Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("./hive-fonts/heebo-hebrew-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0307-0308,U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F;
}

@font-face {
  font-family: "Inter Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("./hive-fonts/inter-cyrillic-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

@font-face {
  font-family: "Inter Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("./hive-fonts/inter-cyrillic-ext-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

html:root {
  --presentation: #f7f7f9;
  --surface-primary: #ffffff;
  --surface-primary-alt: #ffffff;
  --surface-primary-contrast: #f4f4f6;
  --surface-secondary: #f4f4f6;
  --surface-secondary-alt: #ececf0;
  --surface-tertiary: #ececf0;
  --surface-tertiary-alt: #ffffff;
  --surface-dialog: #ffffff;
  --surface-chat: #ffffff;
  --surface-active: #ececf0;
  --surface-active-alt: #ececf0;
  --surface-hover: #ececf0;
  --surface-hover-alt: #e6e6eb;
  --surface-submit: #6c5ce7;
  --surface-submit-hover: #5a4cc6;
  --header-primary: #ffffff;
  --header-hover: #f4f4f6;
  --header-button-hover: #f4f4f6;
  --text-primary: #16161d;
  --text-secondary: #54545f;
  --text-secondary-alt: #696974;
  --text-tertiary: #696974;
  --border-light: #e6e6eb;
  --border-medium: #d2d2da;
  --border-medium-alt: #d2d2da;
  --border-heavy: #8a8a95;
  --border-xheavy: #696974;
  --ring-primary: #6c5ce7;
  --brand-purple: #6c5ce7;
  --background: 0 0% 100%;
  --foreground: 240 13.7% 10%;
  --card: 0 0% 100%;
  --card-foreground: 240 13.7% 10%;
  --primary: 246.9 74.3% 63.3%;
  --primary-foreground: 0 0% 100%;
  --secondary: 240 11.8% 93.3%;
  --secondary-foreground: 240 13.7% 10%;
  --muted: 240 11.8% 93.3%;
  --muted-foreground: 240 5% 43.3%;
  --accent: 254.3 77.8% 94.7%;
  --accent-foreground: 246.9 51.7% 53.7%;
  --border: 240 11.1% 91.2%;
  --input: 240 9.8% 83.9%;
  --ring: 246.9 74.3% 63.3%;
  --radius: 0.625rem;
}

html.dark {
  --presentation: #111114;
  --surface-primary: #18181c;
  --surface-primary-alt: #18181c;
  --surface-primary-contrast: #1f1f24;
  --surface-secondary: #1f1f24;
  --surface-secondary-alt: #27272d;
  --surface-tertiary: #27272d;
  --surface-tertiary-alt: #18181c;
  --surface-dialog: #18181c;
  --surface-chat: #18181c;
  --surface-active: #27272d;
  --surface-active-alt: #27272d;
  --surface-hover: #27272d;
  --surface-hover-alt: #2a2a31;
  --surface-submit: #8f82f0;
  --surface-submit-hover: #a195f4;
  --header-primary: #18181c;
  --header-hover: #1f1f24;
  --header-button-hover: #1f1f24;
  --text-primary: #ededf1;
  --text-secondary: #a9a9b4;
  --text-secondary-alt: #8e8e99;
  --text-tertiary: #8e8e99;
  --border-light: #2a2a31;
  --border-medium: #3a3a43;
  --border-medium-alt: #3a3a43;
  --border-heavy: #6a6a75;
  --border-xheavy: #8e8e99;
  --ring-primary: #8f82f0;
  --brand-purple: #8f82f0;
  --background: 240 7.7% 10.2%;
  --foreground: 240 12.5% 93.7%;
  --card: 240 7.7% 10.2%;
  --card-foreground: 240 12.5% 93.7%;
  --primary: 247.1 78.6% 72.5%;
  --primary-foreground: 240 13.7% 10%;
  --secondary: 240 7.1% 16.5%;
  --secondary-foreground: 240 12.5% 93.7%;
  --muted: 240 7.1% 16.5%;
  --muted-foreground: 240 5.1% 57.8%;
  --accent: 248.6 32.1% 21.4%;
  --accent-foreground: 247.7 83% 81.6%;
  --border: 240 7.7% 17.8%;
  --input: 240 7.2% 24.5%;
  --ring: 247.1 78.6% 72.5%;
}

html:root,
html .font-sans {
  font-family: "Instrument Sans Variable", "Heebo Variable", "Inter Variable", system-ui, sans-serif;
}

/* The brand mark never mirrors, and Hebrew sets Heebo first: Instrument Sans has no
   Hebrew glyphs, so the stack would reach Heebo anyway; first keeps its metrics. */
html[lang|="he"],
html[lang|="he"] .font-sans {
  font-family: "Heebo Variable", "Instrument Sans Variable", "Heebo Variable", "Inter Variable", system-ui, sans-serif;
}

html :focus-visible {
  outline-color: #6c5ce7;
}

html.dark :focus-visible {
  outline-color: #8f82f0;
}

/* Composer: one focus ring around the whole pill (Figma H01), not the bare textarea. */
html #prompt-textarea:focus-visible {
  outline: none;
}

html .rounded-t-3xl:has(#prompt-textarea:focus-visible) {
  border-color: #6c5ce7;
  box-shadow: 0 0 0 1px #6c5ce7;
}

html.dark .rounded-t-3xl:has(#prompt-textarea:focus-visible) {
  border-color: #8f82f0;
  box-shadow: 0 0 0 1px #8f82f0;
}

/* The sign-in page's links: LibreChat paints them green. */
html a.text-green-600,
html a.text-green-600:hover,
html a.text-green-600:focus {
  color: #5a4cc6;
  text-decoration-color: #5a4cc6;
}

html.dark a.text-green-600,
html.dark a.text-green-600:hover,
html.dark a.text-green-600:focus {
  color: #b3a9f7;
  text-decoration-color: #b3a9f7;
}

/* Hebrew: the greeting is split into one inline-block per letter for its animation,
   and inline-blocks are bidi-neutral, so a Latin name ran backwards ("ztaK anaD").
   Inline letters go back through the bidi algorithm; the greeting does not animate. */
html[dir="rtl"] .split-parent span {
  display: inline !important;
}

/* Not in the Figma chat, and each fails axe upstream: the model picker while there is
   nothing to pick (one spec; hive-ui.js sets data-hive-specs from LibreChat's own
   startup config, and names the picker by its visible text, v0 CH5) and the sidebar
   resize handle (a focusable separator with no aria-valuenow). */
html:not([data-hive-specs]) [data-testid="model-selector-button"],
html[data-hive-specs="0"] [data-testid="model-selector-button"],
html[data-hive-specs="1"] [data-testid="model-selector-button"],
html [role="separator"][aria-orientation="vertical"].cursor-col-resize {
  display: none !important;
}

/* The light/dark switch above the account button (hive-ui.js): the rail's own button
   look, in LibreChat's (Hive-mapped) properties. */
html #hive-theme-toggle {
  position: fixed;
  z-index: 20;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  border: 0;
  border-radius: 0.625rem;
  background: transparent;
  color: var(--text-primary);
  cursor: pointer;
}

html #hive-theme-toggle:hover {
  background: var(--surface-hover);
}

html #hive-theme-toggle:focus-visible {
  outline: 2px solid var(--ring-primary);
  outline-offset: 2px;
}

html #hive-theme-toggle[hidden] {
  display: none;
}
