SPB Git forge

spb/immbot-ai

Public
1commits 1branches 0releases
1.5 MBsize
maindefault branch
19 days agolast push
TypeScript 98.3% CSS 0.9% Shell 0.7%
6.1 KB · 187 lines css
Raw Blame History
1@import "tailwindcss";2@import "katex/dist/katex.min.css";34@custom-variant dark (&:where(.dark, .dark *));56@theme {7  /* Identité Immbot AI — héritée des couleurs institutionnelles UQO, raffinée */8  --color-brand-50: #eef4fb;9  --color-brand-100: #d9e6f5;10  --color-brand-200: #b3cdeb;11  --color-brand-300: #7dabdc;12  --color-brand-400: #4585c9;13  --color-brand-500: #1d64b0;14  --color-brand-600: #0d4f95;15  --color-brand-700: #003e7e;16  --color-brand-800: #063361;17  --color-brand-900: #0a2a4d;18  --color-brand-950: #081c33;1920  --color-gold-300: #eed484;21  --color-gold-400: #dcb94f;22  --color-gold-500: #c6a300;23  --color-gold-600: #a08300;2425  --color-surface-0: #ffffff;26  --color-surface-1: #f7f9fc;27  --color-surface-2: #eef2f7;28  --color-surface-3: #e3e9f1;2930  --font-sans: var(--font-inter), ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;31  --font-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;3233  --radius-xl2: 0.75rem;3435  --animate-fade-up: fade-up 0.35s ease both;36  --animate-fade-in: fade-in 0.25s ease both;37  --animate-pulse-soft: pulse-soft 2s ease-in-out infinite;3839  @keyframes fade-up {40    from { opacity: 0; transform: translateY(8px); }41    to { opacity: 1; transform: translateY(0); }42  }43  @keyframes fade-in {44    from { opacity: 0; }45    to { opacity: 1; }46  }47  @keyframes pulse-soft {48    0%, 100% { opacity: 1; }49    50% { opacity: 0.55; }50  }51}5253:root {54  --bg: #f4f6f9;55  --fg: #0e1a28;56  --muted: #51606f;57  --card: #ffffff;58  --border: #d4dce6;59  --sidebar: #ffffff;60}61.dark {62  --bg: #0b1320;63  --fg: #e7edf5;64  --muted: #94a5ba;65  --card: #101b2c;66  --border: #22314a;67  --sidebar: #0d1626;68}6970html { scroll-behavior: smooth; }71body {72  background: var(--bg);73  color: var(--fg);74  font-family: var(--font-sans);75  -webkit-font-smoothing: antialiased;76  text-rendering: optimizeLegibility;77  font-feature-settings: "cv11", "ss01";78}7980h1, h2, h3, h4 { letter-spacing: -0.02em; }8182/* Empêche le zoom automatique iOS sur les champs (< 16px) sans grossir le rendu desktop */83@media (max-width: 640px) {84  input, select, textarea { font-size: 16px !important; }85}8687/* Utilitaires sémantiques */88.bg-app { background: var(--bg); }89.bg-card { background: var(--card); }90.bg-sidebar { background: var(--sidebar); }91.text-fg { color: var(--fg); }92.text-muted { color: var(--muted); }93.border-app { border-color: var(--border); }9495::selection { background: color-mix(in srgb, var(--color-brand-500) 25%, transparent); }9697/* Scrollbars discrètes */98* { scrollbar-width: thin; scrollbar-color: color-mix(in srgb, var(--muted) 35%, transparent) transparent; }99*::-webkit-scrollbar { width: 8px; height: 8px; }100*::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--muted) 30%, transparent); border-radius: 8px; }101*::-webkit-scrollbar-track { background: transparent; }102103/* Focus accessible */104:focus-visible {105  outline: 2px solid var(--color-brand-500);106  outline-offset: 2px;107  border-radius: 4px;108}109110/* Markdown (réponses du chat, résumés) */111.prose-immbot {112  line-height: 1.65;113  font-size: 0.9375rem;114  overflow-wrap: break-word;115}116.prose-immbot > * + * { margin-top: 0.7em; }117.prose-immbot h1, .prose-immbot h2, .prose-immbot h3, .prose-immbot h4 {118  font-weight: 650; line-height: 1.3; margin-top: 1.2em;119}120.prose-immbot h1 { font-size: 1.2em; }121.prose-immbot h2 { font-size: 1.12em; }122.prose-immbot h3 { font-size: 1.05em; }123.prose-immbot ul { list-style: disc; padding-left: 1.4em; }124.prose-immbot ol { list-style: decimal; padding-left: 1.4em; }125.prose-immbot li + li { margin-top: 0.25em; }126.prose-immbot strong { font-weight: 650; }127.prose-immbot a { color: var(--color-brand-500); text-decoration: underline; text-underline-offset: 2px; }128.prose-immbot code {129  background: color-mix(in srgb, var(--muted) 12%, transparent);130  border-radius: 5px; padding: 0.12em 0.35em; font-family: var(--font-mono); font-size: 0.86em;131}132.prose-immbot pre {133  background: color-mix(in srgb, var(--muted) 10%, transparent);134  border: 1px solid var(--border);135  border-radius: 10px; padding: 0.8em 1em; overflow-x: auto;136}137.prose-immbot pre code { background: none; padding: 0; }138.prose-immbot table {139  width: 100%; border-collapse: collapse; font-size: 0.92em;140  display: block; overflow-x: auto;141}142.prose-immbot th, .prose-immbot td {143  border: 1px solid var(--border); padding: 0.45em 0.7em; text-align: left;144}145.prose-immbot th { background: color-mix(in srgb, var(--muted) 8%, transparent); font-weight: 600; }146.prose-immbot blockquote {147  border-left: 3px solid var(--color-brand-400); padding-left: 0.9em; color: var(--muted);148}149.prose-immbot .katex { font-size: 1.05em; }150.prose-immbot .katex-display { overflow-x: auto; overflow-y: hidden; padding: 0.2em 0; }151152/* Citation inline [S1] */153.citation-chip {154  display: inline-flex; align-items: center; justify-content: center;155  min-width: 1.35rem; height: 1.15rem; padding: 0 0.3rem; margin: 0 0.12rem;156  border-radius: 0.45rem; font-size: 0.68rem; font-weight: 650;157  background: color-mix(in srgb, var(--color-brand-500) 14%, transparent);158  color: var(--color-brand-500);159  border: 1px solid color-mix(in srgb, var(--color-brand-500) 25%, transparent);160  cursor: pointer; vertical-align: baseline; transition: background 0.15s ease;161  user-select: none;162}163.citation-chip:hover { background: color-mix(in srgb, var(--color-brand-500) 26%, transparent); }164.dark .citation-chip { color: var(--color-brand-300); }165166/* Curseur de streaming */167.stream-cursor::after {168  content: "▍"; color: var(--color-brand-400);169  animation: pulse-soft 1s ease-in-out infinite; margin-left: 1px;170}171172/* Skeletons */173.skeleton {174  background: linear-gradient(90deg,175    color-mix(in srgb, var(--muted) 10%, transparent) 25%,176    color-mix(in srgb, var(--muted) 18%, transparent) 50%,177    color-mix(in srgb, var(--muted) 10%, transparent) 75%);178  background-size: 200% 100%;179  animation: skeleton-slide 1.4s ease-in-out infinite;180  border-radius: 8px;181}182@keyframes skeleton-slide { from { background-position: 200% 0; } to { background-position: -200% 0; } }183184@media (prefers-reduced-motion: reduce) {185  *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }186}187