.nc-chat-fab[data-v-db586d35]{touch-action:none;background-color:var(--nc-ai-accent);box-shadow:0 4px 16px -2px rgb(var(--nc-ai-accent-rgb)/40%);transition:transform .15s ease-out,background-color .15s ease-out,box-shadow .15s ease-out}.nc-chat-fab[data-v-db586d35]:hover{background-color:var(--nc-ai-accent-hover);box-shadow:0 12px 30px -6px rgb(var(--nc-ai-accent-rgb)/52%)}.nc-chat-fab-caret[data-v-db586d35]{cursor:pointer;border-left:1px solid #ffffff47;border-top-right-radius:9999px;border-bottom-right-radius:9999px;flex:none;place-items:center;width:2rem;height:2.5rem;padding-right:.25rem;transition:background-color .15s ease-out;display:grid}.nc-chat-fab-caret[data-v-db586d35]:hover{background-color:#ffffff24}.nc-fab-agent-list[data-v-db586d35]{--un-bg-opacity:1;background-color:rgba(var(--rgb-color-base-white), var(--un-bg-opacity));border:1px solid rgba(var(--nc-ai-accent-rgb), .16);width:320px;box-shadow:0 16px 40px -12px rgba(var(--nc-ai-accent-rgb), .24), 0 2px 8px -2px #00000014;border-radius:1rem;flex-direction:column;display:flex;overflow:hidden}.nc-fab-agent-row[data-v-db586d35]{cursor:pointer;align-items:center;gap:.625rem;width:100%;padding:.625rem .75rem;transition:background-color .15s ease-out;display:flex}.nc-fab-agent-row[data-v-db586d35]:hover{--un-bg-opacity:1;background-color:rgba(var(--rgb-color-gray-50), var(--un-bg-opacity))}.nc-fab-agent-row[data-v-db586d35]:active{--un-bg-opacity:1;background-color:rgba(var(--rgb-color-gray-100), var(--un-bg-opacity))}.nc-fab-agent-link[data-v-db586d35]{cursor:pointer;--un-text-opacity:1;color:rgba(var(--rgb-color-gray-700), var(--un-text-opacity));border-radius:.375rem;flex:none;align-items:center;gap:.25rem;margin-right:-.25rem;padding:.125rem .375rem;font-size:12px;font-weight:500;line-height:14px;transition:background-color .15s ease-out,color .15s ease-out;display:flex}.nc-fab-agent-link[data-v-db586d35]:hover{--un-bg-opacity:1;background-color:rgba(var(--rgb-color-gray-100), var(--un-bg-opacity));--un-text-opacity:1;color:rgba(var(--rgb-color-gray-900), var(--un-text-opacity))}.nc-fab-agent-icon[data-v-db586d35]{background-color:rgba(var(--nc-ai-accent-rgb), .1);width:1.75rem;height:1.75rem;color:var(--nc-ai-accent);border-radius:.5rem;flex:none;place-items:center;display:grid}.nc-fab-agent-new[data-v-db586d35]{--un-border-opacity:1;border-top-width:1px;border-color:rgba(var(--rgb-color-gray-100), var(--un-border-opacity));color:var(--nc-ai-accent)}.nc-fab-agent-icon-new[data-v-db586d35]{border:1px dashed rgba(var(--nc-ai-accent-rgb), .5);background-color:#0000}.nc-fab-slide-enter-active[data-v-db586d35]{transition:opacity .3s ease-out,transform .3s ease-out}.nc-fab-slide-leave-active[data-v-db586d35]{transition:opacity .2s ease-out,transform .2s ease-out}.nc-fab-slide-enter-from[data-v-db586d35],.nc-fab-slide-leave-to[data-v-db586d35]{opacity:0;transform:translateY(24px)}@media (prefers-reduced-motion:reduce){.nc-chat-fab[data-v-db586d35]{transition:none}}.ant-dropdown.nc-fab-agents{--un-shadow:0 0 var(--un-shadow-color,#0000)!important;box-shadow:var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow)!important;background-color:#0000!important;border-width:0!important;border-radius:0!important}.ant-dropdown.nc-fab-agents .ant-dropdown-content{--un-shadow:0 0 var(--un-shadow-color,#0000)!important;box-shadow:var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow)!important;background-color:#0000!important;border-width:0!important;padding:0!important}

/* ---------------------------------------------------------------------------
 * Vazirmatn overlay for NocoDB (nbtx eval lab).
 *
 * Appended to every built CSS chunk so it survives per-route code-splitting and
 * needs no proxy. One variable font file covers weights 100-900.
 *
 * NocoDB's grid is CANVAS, so this reaches only the DOM; the JS font literals
 * the grid feeds to ctx.font are patched separately in the Dockerfile.
 *
 * The * rule is blunt because NocoDB (Tailwind + Vuetify) sets font-family on
 * countless elements. Icon fonts, monospace and KaTeX are restored afterwards
 * and win on specificity, not order.
 * ------------------------------------------------------------------------- */

@font-face {
  font-family: 'Vazirmatn';
  src: url('/_nuxt/vazirmatn.woff2') format('woff2-variations');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

:root { --nc-font: 'Vazirmatn', Inter, sans-serif; }

* {
  font-family: 'Vazirmatn', Inter, -apple-system, BlinkMacSystemFont,
               'Segoe UI', Roboto, sans-serif !important;
}

/* Icon fonts must never be re-fonted (higher specificity than *). */
.codicon, [class*="codicon"] { font-family: codicon !important; }
.material-symbols-outlined, .material-symbols, [class*="material-symbols"],
.material-icons {
  font-family: 'Material Symbols', 'Material Symbols Outlined', 'Material Icons' !important;
}
[class*="mdi"], .mdi { font-family: 'Material Design Icons' !important; }

/* Code stays monospace. */
code, pre, kbd, samp, tt,
[class*="mono"], [class*="monospace"],
.cm-editor, .cm-editor *, .cm-content, .cm-content *,
.monaco-editor, .monaco-editor * {
  font-family: 'JetBrainsMono', 'DM Mono', ui-monospace, SFMono-Regular,
               Menlo, Consolas, 'Liberation Mono', monospace !important;
}

/* KaTeX ships metrics-critical faces; overriding them breaks math layout. */
.katex, .katex * { font-family: KaTeX_Main, 'Times New Roman', serif !important; }
.katex .mathdefault, .katex .mathit { font-family: KaTeX_Math, serif !important; }

/* Preserve NocoDB's user-selectable serif/mono doc typography options. */
.nc-doc-font-serif .nc-doc-editor-content.ProseMirror,
.nc-doc-font-serif .nc-doc-editor-content.ProseMirror * {
  font-family: Georgia, 'Times New Roman', Times, serif !important;
}
.nc-doc-font-mono .nc-doc-editor-content.ProseMirror,
.nc-doc-font-mono .nc-doc-editor-content.ProseMirror * {
  font-family: 'JetBrainsMono', ui-monospace, monospace !important;
}

/* Persian reads better with slightly looser leading than Inter's Latin default. */
body { line-height: 1.6; }
