
/* /src/components/core/ReactSelect.module.css */
._flattenAdjacentOptionCorners_1obix_1 .rail-select__option {
  border-radius: 8px !important;
  transition:
    border-radius 120ms ease,
    background-color 120ms ease;
}

._flattenAdjacentOptionCorners_1obix_1
  .rail-select__option--is-focused + .rail-select__option--is-selected,
._flattenAdjacentOptionCorners_1obix_1
  .rail-select__option--is-selected + .rail-select__option--is-focused {
  border-top-left-radius: 0 !important;
  border-top-right-radius: 0 !important;
}

._flattenAdjacentOptionCorners_1obix_1
  .rail-select__option--is-focused:has(+ .rail-select__option--is-selected),
._flattenAdjacentOptionCorners_1obix_1
  .rail-select__option--is-selected:has(+ .rail-select__option--is-focused) {
  border-bottom-left-radius: 0 !important;
  border-bottom-right-radius: 0 !important;
}


/* /@fs/app/node_modules/.pnpm/@railway-station+inkwell@file+packages+central-station+lib+inkwell_react-dom@18.2.0_rea_9fe42b1246ae9e6ae04c9eb79a7fe5d5/node_modules/@railway-station/inkwell/src/styles.css */
/* Default Inkwell editor, plugin, and renderer styles.
 *
 * Neutral, theme-aware defaults designed as a sensible baseline that any
 * consumer can drop in and either keep or override. Light by default,
 * dark via `prefers-color-scheme: dark`. No saturated brand colors.
 *
 * Specificity strategy:
 * Visual-chrome defaults (color, background, border, padding, typography)
 * are wrapped in `:where()` so they carry 0,0,0 specificity. Any single-class
 * consumer rule — Tailwind utilities, `classNames` slot styling, `components`
 * overrides on the renderer — wins automatically by specificity tie-break.
 * No `!important`, no descendant scoping, no inline-style hacks needed.
 *
 * Layout-critical rules (position, z-index, structural width/height/overflow,
 * picker flip math) deliberately stay at normal specificity. Consumers should
 * not silently break editor or picker geometry by adding a class — when they
 * want to override layout, they can with descendant or `!important` rules
 * applied intentionally.
 *
 * Import with: `import "@railway-station/inkwell/styles.css";`
 */

/* ── Tokens ──────────────────────────────────────────────────────── */

/* Token definitions sit at 0,0,0 specificity so a consumer rule with even
   a single class on a parent (e.g. `.dark .inkwell-renderer { --inkwell-text: ... }`
   for class-driven theming that does not rely on `prefers-color-scheme`)
   beats them automatically. The OS-level dark-mode block below uses the
   same `:where()` wrapper for the same reason. */
:where(
    .inkwell-editor,
    .inkwell-editor-wrapper,
    .inkwell-renderer,
    .inkwell-plugin-bubble-menu-container,
    .inkwell-plugin-picker-popup
  ) {
  /* Surfaces */
  --inkwell-bg: hsl(0, 0%, 100%);
  --inkwell-bg-elevated: hsl(0, 0%, 100%);
  --inkwell-bg-subtle: hsl(220, 14%, 96%);
  --inkwell-border: hsl(220, 13%, 88%);
  --inkwell-border-strong: hsl(220, 13%, 76%);

  /* Foreground */
  --inkwell-text: hsl(220, 15%, 18%);
  --inkwell-text-muted: hsl(220, 10%, 45%);
  --inkwell-text-dim: hsl(220, 10%, 62%);

  /* Accents (link, focus, selection chip). Restrained blue so the
     defaults read as neutral rather than branded. */
  --inkwell-accent: hsl(217, 91%, 50%);
  --inkwell-accent-soft: hsla(217, 91%, 50%, 0.12);
  --inkwell-danger: hsl(0, 72%, 51%);
  --inkwell-danger-soft: hsla(0, 72%, 51%, 0.14);

  /* Inline code */
  --inkwell-code-bg: hsl(220, 14%, 94%);
  --inkwell-code-fg: hsl(338, 78%, 42%);

  /* Type */
  --inkwell-font-mono:
    "JetBrains Mono", "Fira Code", ui-monospace, SFMono-Regular, Menlo,
    Consolas, monospace;
  --inkwell-radius: 6px;

  /* Typography & spacing. Defined once and consumed by both
     `.inkwell-editor` and `.inkwell-renderer` so the two surfaces stay
     WYSIWYG — what you type matches what renders. Override any token
     on either surface to retune both (or use a per-surface selector
     to retune just one). For chat-composer or compact embeds, set
     `--inkwell-space-paragraph: 0` on the editor surface. */
  --inkwell-font-size: 0.95rem;
  --inkwell-line-height: 1.6;
  --inkwell-heading-weight: 600;
  --inkwell-heading-line-height: 1.3;
  --inkwell-h1-size: 1.75em;
  --inkwell-h2-size: 1.4em;
  --inkwell-h3-size: 1.2em;
  --inkwell-h4-size: 1em;
  --inkwell-h5-size: 0.9em;
  --inkwell-h6-size: 0.8em;
  --inkwell-code-font-size: 0.85em;

  --inkwell-space-paragraph: 0.5em;
  --inkwell-space-heading: 0.75em;
  --inkwell-space-blockquote: 1em;
  --inkwell-space-list: 1em;
  --inkwell-space-list-item: 0.25em;
  --inkwell-list-indent: 1.5em;
  --inkwell-space-code-block: 1em;
  --inkwell-space-image: 1em;
  --inkwell-space-hr: 2em;
}

@media (prefers-color-scheme: dark) {
  :where(
      .inkwell-editor,
      .inkwell-editor-wrapper,
      .inkwell-renderer,
      .inkwell-plugin-bubble-menu-container,
      .inkwell-plugin-picker-popup
    ) {
    --inkwell-bg: hsl(220, 13%, 10%);
    --inkwell-bg-elevated: hsl(220, 13%, 13%);
    --inkwell-bg-subtle: hsl(220, 13%, 16%);
    --inkwell-border: hsl(220, 13%, 22%);
    --inkwell-border-strong: hsl(220, 13%, 32%);

    --inkwell-text: hsl(220, 14%, 90%);
    --inkwell-text-muted: hsl(220, 10%, 65%);
    --inkwell-text-dim: hsl(220, 8%, 48%);

    --inkwell-accent: hsl(217, 91%, 65%);
    --inkwell-accent-soft: hsla(217, 91%, 65%, 0.16);
    --inkwell-danger: hsl(0, 70%, 65%);
    --inkwell-danger-soft: hsla(0, 70%, 65%, 0.18);

    --inkwell-code-bg: hsl(220, 13%, 18%);
    --inkwell-code-fg: hsl(340, 70%, 75%);
  }
}

/* ── Editor surface ──────────────────────────────────────────────── */

/* Wrapper position is structural — plugin pickers, bubble menus, and the
   character-count overlay all absolutely position against it. Stays at
   normal specificity. */
.inkwell-editor-wrapper {
  position: relative;
}

/* Visual-chrome defaults on the editable surface live inside `:where()`
   so a single-class consumer rule (Tailwind utilities, `classNames.editor`,
   etc.) wins automatically.

   Container size (min-height, max-height, height) is deliberately NOT
   defaulted here. Inkwell sits inside the consumer's layout and the right
   size is a consumer decision: a full-page editor wants `min-height: 60vh`,
   a chat composer wants `min-height: 0`, a panel just wants to fill its
   container. Set it on the editor via `styles.editor`, `classNames.editor`,
   or your own CSS. */
:where(.inkwell-editor) {
  outline: none;
  padding: 1rem 1.25rem;
  border: 1px solid var(--inkwell-border);
  border-radius: var(--inkwell-radius);
  background: var(--inkwell-bg);
  color: var(--inkwell-text);
  line-height: var(--inkwell-line-height);
  font-size: var(--inkwell-font-size);
  transition: border-color 0.15s ease;
}
:where(.inkwell-editor:focus-within) {
  border-color: var(--inkwell-border-strong);
}

/* `position: relative` on paragraphs is structural — Slate decorations and
   inline children position against it.

   Margin stays at `0` here even though the renderer's paragraphs use
   `--inkwell-space-paragraph`. Reason: the editor's content model emits
   one `<p>` per source line, so a blank line in Markdown becomes an
   empty `<p>` node between two paragraphs (a cursor target, kept for
   round-trip fidelity). With a non-zero paragraph margin, those empty
   paragraphs add their own top/bottom margin on top of the real
   paragraphs' margins — visually multiplying the gap and breaking the
   WYSIWYG promise in the other direction (editor looks more airy than
   the renderer). Until the empty-paragraph encoding is reworked, the
   editor opts out of the shared paragraph-spacing token. Consumers
   who want non-zero spacing in the editor can set the margin
   themselves with a higher-specificity rule. */
.inkwell-editor p {
  position: relative;
}
:where(.inkwell-editor p) {
  margin: 0;
}
:where(.inkwell-editor strong) {
  font-weight: 600;
  color: var(--inkwell-text);
}
:where(.inkwell-editor em) {
  font-style: italic;
}
:where(.inkwell-editor del) {
  text-decoration: line-through;
  color: var(--inkwell-text-muted);
}
:where(.inkwell-editor code) {
  background: var(--inkwell-code-bg);
  color: var(--inkwell-code-fg);
  padding: 0.1em 0.35em;
  border-radius: 4px;
  font-family: var(--inkwell-font-mono);
  font-size: var(--inkwell-code-font-size);
}
/* Visible link text — mirrors `.inkwell-renderer a` so the editor stays
   WYSIWYG. Applies to both the label inside `[text](url)` and the entire
   text of a bare URL autolink. */
:where(.inkwell-editor-link) {
  color: var(--inkwell-accent);
  text-decoration: underline;
  text-underline-offset: 2px;
}
/* URL token inside `(...)` of a markdown link. Inherits the dim color
   from the `.inkwell-editor-marker` class it ships alongside; this rule
   exists so consumers have a stable hook to restyle the URL separately
   from generic markers (different color, hover state, etc.) without
   touching every dimmed bracket / asterisk in the editor. Empty by
   design — overriding `text-decoration: underline` etc. is a consumer
   call. */
:where(.inkwell-editor-link-url) {
  text-decoration: none;
}

:where(.inkwell-editor-blockquote) {
  border-left: 3px solid var(--inkwell-border-strong);
  padding-left: 0.85em;
  margin: var(--inkwell-space-blockquote) 0;
  color: var(--inkwell-text-muted);
}

:where(.inkwell-editor-heading) {
  font-weight: var(--inkwell-heading-weight);
  line-height: var(--inkwell-heading-line-height);
  margin: var(--inkwell-space-heading) 0;
  color: var(--inkwell-text);
}
:where(.inkwell-editor-heading-1) {
  font-size: var(--inkwell-h1-size);
}
:where(.inkwell-editor-heading-2) {
  font-size: var(--inkwell-h2-size);
}
:where(.inkwell-editor-heading-3) {
  font-size: var(--inkwell-h3-size);
}
:where(.inkwell-editor-heading-4) {
  font-size: var(--inkwell-h4-size);
}
:where(.inkwell-editor-heading-5) {
  font-size: var(--inkwell-h5-size);
}
:where(.inkwell-editor-heading-6) {
  font-size: var(--inkwell-h6-size);
}

:where(.inkwell-editor-image) {
  margin: var(--inkwell-space-image) 0;
  border-radius: var(--inkwell-radius);
  overflow: hidden;
  border: 1px solid transparent;
  transition:
    border-color 0.15s ease,
    box-shadow 0.15s ease;
}
:where(.inkwell-editor-image[data-selected]) {
  border-color: var(--inkwell-accent);
  box-shadow: 0 0 0 3px var(--inkwell-accent-soft);
}
/* Image fitting stays structural — `max-width: 100%` and `height: auto`
   are the only sensible defaults for keeping aspect ratio inside a
   variable-width editor. Consumers who want a different sizing model
   should opt in with a descendant or higher-specificity rule. */
.inkwell-editor-image img {
  display: block;
  max-width: 100%;
  height: auto;
}

/* Built-in character count. Overlays the top-right corner of the editor
   wrapper so it never shifts content, and sits on a solid surface tint
   so it visually layers above any text that wraps underneath. Only
   rendered once typing reaches 80% of `characterLimit`, since the
   limit is a soft hint — typing past it is allowed; the count then
   turns red and the wrapper picks up `.inkwell-editor-over-limit`,
   which paints a soft red halo on the editor surface so it's visually
   obvious the document is over budget.

   Positioning stays at normal specificity — the overlay only works
   from the top-right corner of the wrapper. Chrome (color, font-weight,
   etc.) lives below in `:where()`. */
.inkwell-editor-character-count {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  z-index: 10;
  pointer-events: none;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}
:where(.inkwell-editor-character-count) {
  padding: 0.1rem 0.4rem;
  font-size: 0.72rem;
  font-variant-numeric: tabular-nums;
  color: var(--inkwell-text-dim);
  background: var(--inkwell-bg);
  border-radius: calc(var(--inkwell-radius) - 2px);
}
:where(.inkwell-editor-character-count-over) {
  color: var(--inkwell-danger);
  font-weight: 500;
}
:where(.inkwell-editor-wrapper.inkwell-editor-over-limit .inkwell-editor) {
  border-color: var(--inkwell-danger-soft);
  box-shadow: 0 0 0 3px var(--inkwell-danger-soft);
}

:where(.inkwell-editor-backtick),
:where(.inkwell-editor-marker) {
  color: var(--inkwell-text-dim);
}
:where(.inkwell-editor .inkwell-editor-code-fence) {
  color: var(--inkwell-text-dim);
}
:where(.inkwell-editor .inkwell-editor-code-line),
:where(.inkwell-editor .inkwell-editor-code-fence),
:where(.inkwell-renderer pre code) {
  font-family: var(--inkwell-font-mono);
  font-size: var(--inkwell-code-font-size);
  line-height: 1.55;
}
/* Wrapping behavior for code lines stays structural — Slate emits one
   contenteditable line per node and depends on `white-space: pre-wrap`
   for correct caret placement. */
.inkwell-editor .inkwell-editor-code-line {
  white-space: pre-wrap;
  word-wrap: break-word;
}

/* ── Bubble menu plugin ──────────────────────────────────────────── */

@keyframes inkwell-fade-in {
  from {
    opacity: 0;
    transform: translateY(4px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Container positioning is layout-critical — the bubble menu is JS-
   positioned against the selection. Keep at normal specificity. */
.inkwell-plugin-bubble-menu-container {
  position: absolute;
  z-index: 9999;
}
:where(.inkwell-plugin-bubble-menu-inner) {
  display: flex;
  gap: 2px;
  background: var(--inkwell-bg-elevated);
  border: 1px solid var(--inkwell-border);
  border-radius: var(--inkwell-radius);
  padding: 3px;
  box-shadow: 0 6px 20px hsla(220, 20%, 10%, 0.12);
  animation: inkwell-fade-in 0.12s ease-out;
}
:where(.inkwell-plugin-bubble-menu-btn) {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border: none;
  background: transparent;
  color: var(--inkwell-text-muted);
  border-radius: 4px;
  cursor: pointer;
  transition:
    background 0.1s ease,
    color 0.1s ease;
}
:where(.inkwell-plugin-bubble-menu-btn:hover) {
  background: var(--inkwell-bg-subtle);
  color: var(--inkwell-text);
}
:where(.inkwell-plugin-bubble-menu-btn-active) {
  background: var(--inkwell-bg-subtle);
  color: var(--inkwell-text);
}
:where(.inkwell-plugin-bubble-menu-item-bold) {
  font-weight: 700;
  font-size: 14px;
}
:where(.inkwell-plugin-bubble-menu-item-italic) {
  font-style: italic;
  font-size: 14px;
  font-family: Georgia, "Times New Roman", serif;
}
:where(.inkwell-plugin-bubble-menu-item-strike) {
  text-decoration: line-through;
  font-size: 14px;
}

/* ── Shared plugin picker (snippets, mentions, etc.) ─────────────── */

/* Popup positioning is layout-critical — the picker reads
   `popupEl.offsetParent` for flip math, so it must remain absolutely
   positioned inside the editor wrapper. */
.inkwell-plugin-picker-popup {
  position: absolute;
  z-index: 1001;
}
:where(.inkwell-plugin-picker) {
  background: var(--inkwell-bg-elevated);
  border: 1px solid var(--inkwell-border);
  border-radius: var(--inkwell-radius);
  overflow: hidden;
  min-width: 260px;
  max-width: 320px;
  box-shadow: 0 6px 24px hsla(220, 20%, 10%, 0.14);
}
:where(.inkwell-plugin-picker-search) {
  width: 100%;
  padding: 7px 10px;
  background: var(--inkwell-bg);
  border: none;
  border-bottom: 1px solid var(--inkwell-border);
  color: var(--inkwell-text-muted);
  font-size: 0.85rem;
  outline: none;
}
:where(.inkwell-plugin-picker-search::-moz-placeholder) {
  color: var(--inkwell-text-dim);
}
:where(.inkwell-plugin-picker-search::placeholder) {
  color: var(--inkwell-text-dim);
}
/* List `max-height` is structural — prevents the picker from blowing out
   the viewport with long item lists. Scroll behavior and scrollbar
   styling stay alongside it for a single source of truth. */
.inkwell-plugin-picker-list {
  max-height: 240px;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-color: var(--inkwell-border-strong) transparent;
}
.inkwell-plugin-picker-list::-webkit-scrollbar {
  width: 8px;
}
.inkwell-plugin-picker-list::-webkit-scrollbar-track {
  background: transparent;
}
.inkwell-plugin-picker-list::-webkit-scrollbar-thumb {
  background-color: var(--inkwell-border-strong);
  border-radius: 4px;
  border: 2px solid transparent;
  background-clip: padding-box;
}
.inkwell-plugin-picker-list::-webkit-scrollbar-thumb:hover {
  background-color: var(--inkwell-text-dim);
}
:where(.inkwell-plugin-picker-item) {
  padding: 7px 10px;
  cursor: pointer;
  transition: background 0.1s ease;
}
:where(.inkwell-plugin-picker-item:hover),
:where(.inkwell-plugin-picker-item-active) {
  background: var(--inkwell-bg-subtle);
}
:where(.inkwell-plugin-picker-title) {
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--inkwell-text);
  margin-right: 0.5rem;
}
:where(.inkwell-plugin-picker-subtitle) {
  font-size: 0.75rem;
  color: var(--inkwell-text-muted);
  margin-top: 2px;
}
:where(.inkwell-plugin-picker-preview) {
  font-size: 0.75rem;
  color: var(--inkwell-text-muted);
  margin-top: 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
:where(.inkwell-plugin-picker-empty) {
  padding: 12px;
  text-align: center;
  color: var(--inkwell-text-dim);
  font-size: 0.85rem;
}

:where(.inkwell-plugin-slash-commands-execute) {
  padding: 8px 10px;
  color: var(--inkwell-text);
  font-size: 0.85rem;
  font-weight: 500;
  text-align: center;
}

/* ── Renderer ────────────────────────────────────────────────────── */

/* Every rule below targets a rendered HTML element (`a`, `h1`, `p`, ...)
   that consumers customize through the `components` prop on
   `<InkwellRenderer />` or by adding a class on the rendered element. All
   chrome lives inside `:where()` so those overrides win without
   `!important`. */
:where(.inkwell-renderer) {
  color: var(--inkwell-text);
  line-height: var(--inkwell-line-height);
  font-size: var(--inkwell-font-size);
}
:where(.inkwell-renderer :first-child) {
  margin-top: 0;
}
:where(.inkwell-renderer h1) {
  font-size: var(--inkwell-h1-size);
  font-weight: var(--inkwell-heading-weight);
  line-height: var(--inkwell-heading-line-height);
  margin: var(--inkwell-space-heading) 0;
}
:where(.inkwell-renderer h2) {
  font-size: var(--inkwell-h2-size);
  font-weight: var(--inkwell-heading-weight);
  line-height: var(--inkwell-heading-line-height);
  margin: var(--inkwell-space-heading) 0;
}
:where(.inkwell-renderer h3) {
  font-size: var(--inkwell-h3-size);
  font-weight: var(--inkwell-heading-weight);
  line-height: var(--inkwell-heading-line-height);
  margin: var(--inkwell-space-heading) 0;
}
:where(.inkwell-renderer h4) {
  font-size: var(--inkwell-h4-size);
  font-weight: var(--inkwell-heading-weight);
  line-height: var(--inkwell-heading-line-height);
  margin: var(--inkwell-space-heading) 0;
}
:where(.inkwell-renderer h5) {
  font-size: var(--inkwell-h5-size);
  font-weight: var(--inkwell-heading-weight);
  line-height: var(--inkwell-heading-line-height);
  margin: var(--inkwell-space-heading) 0;
}
:where(.inkwell-renderer h6) {
  font-size: var(--inkwell-h6-size);
  font-weight: var(--inkwell-heading-weight);
  line-height: var(--inkwell-heading-line-height);
  margin: var(--inkwell-space-heading) 0;
}
:where(.inkwell-renderer p) {
  margin: var(--inkwell-space-paragraph) 0;
}
:where(.inkwell-renderer blockquote) {
  border-left: 3px solid var(--inkwell-border-strong);
  padding-left: 0.85em;
  margin: var(--inkwell-space-blockquote) 0;
  color: var(--inkwell-text-muted);
}
:where(.inkwell-renderer ul),
:where(.inkwell-renderer ol) {
  padding-left: var(--inkwell-list-indent);
  margin: var(--inkwell-space-list) 0;
}
:where(.inkwell-renderer ul) {
  list-style: disc;
}
:where(.inkwell-renderer ol) {
  list-style: decimal;
}
:where(.inkwell-renderer li) {
  margin: var(--inkwell-space-list-item) 0;
}
:where(.inkwell-renderer code) {
  background: var(--inkwell-code-bg);
  color: var(--inkwell-code-fg);
  padding: 0.1em 0.35em;
  border-radius: 4px;
  font-family: var(--inkwell-font-mono);
  font-size: var(--inkwell-code-font-size);
}
/* Code-block wrapper position is structural — the copy button absolutely
   positions inside it. */
.inkwell-renderer-code-block {
  position: relative;
}
/* Copy button positioning is layout-critical (top-right inside the code
   block); its chrome lives in `:where()` so consumers can restyle without
   breaking placement. */
.inkwell-renderer-copy-btn {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  z-index: 1;
}
:where(.inkwell-renderer-copy-btn) {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border: 1px solid var(--inkwell-border);
  border-radius: 4px;
  background: var(--inkwell-bg-elevated);
  color: var(--inkwell-text-muted);
  cursor: pointer;
  opacity: 0;
  transition:
    opacity 0.15s ease,
    color 0.15s ease,
    background 0.15s ease;
}
:where(.inkwell-renderer-code-block:hover .inkwell-renderer-copy-btn) {
  opacity: 1;
}
:where(.inkwell-renderer-copy-btn:hover) {
  background: var(--inkwell-bg-subtle);
  color: var(--inkwell-text);
}
:where(.inkwell-renderer pre) {
  margin: var(--inkwell-space-code-block) 0;
  border-radius: var(--inkwell-radius);
  overflow: auto;
  border: 1px solid var(--inkwell-border);
  background: var(--inkwell-bg-subtle);
}
:where(.inkwell-renderer pre code) {
  display: block;
  padding: 0.85em 1em;
  background: transparent;
  color: var(--inkwell-text);
}
:where(.inkwell-renderer a) {
  color: var(--inkwell-accent);
  text-decoration: underline;
  text-underline-offset: 2px;
}
:where(.inkwell-renderer hr) {
  border: none;
  border-top: 1px solid var(--inkwell-border);
  margin: var(--inkwell-space-hr) 0;
}
:where(.inkwell-renderer strong) {
  font-weight: 600;
}
:where(.inkwell-renderer em) {
  font-style: italic;
}
:where(.inkwell-renderer del) {
  text-decoration: line-through;
}
:where(.inkwell-renderer img) {
  max-width: 100%;
  height: auto;
  border-radius: var(--inkwell-radius);
  margin: var(--inkwell-space-image) 0;
}
