@tailwind base; @tailwind components; @tailwind utilities; :root { --font-sans: "Inter", system-ui, sans-serif; } html, body { height: 100%; background: #07080c; color: #e6e9f0; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; } ::selection { background: rgba(99, 102, 241, 0.35); color: #fff; } /* refined scrollbars */ * { scrollbar-width: thin; scrollbar-color: #252b3d transparent; } *::-webkit-scrollbar { width: 9px; height: 9px; } *::-webkit-scrollbar-thumb { background: #1c2130; border-radius: 9px; border: 2px solid transparent; background-clip: content-box; } *::-webkit-scrollbar-thumb:hover { background: #323a52; background-clip: content-box; } @layer components { /* frosted glass surface */ .glass { background: rgba(16, 19, 28, 0.7); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.06); } .card { background: linear-gradient(180deg, rgba(22, 26, 38, 0.9), rgba(16, 19, 28, 0.9)); border: 1px solid rgba(255, 255, 255, 0.06); box-shadow: 0 1px 0 0 rgba(255, 255, 255, 0.04) inset, 0 12px 32px -16px rgba(0, 0, 0, 0.8); } /* gradient hairline used under headers */ .hairline { height: 1px; background: linear-gradient( 90deg, transparent, rgba(99, 102, 241, 0.4), rgba(34, 211, 238, 0.25), transparent ); } } /* skeleton shimmer */ .skeleton { position: relative; overflow: hidden; background: #161a26; } .skeleton::after { content: ""; position: absolute; inset: 0; transform: translateX(-100%); background: linear-gradient( 90deg, transparent, rgba(255, 255, 255, 0.06), transparent ); animation: shimmer 1.6s infinite; } @keyframes shimmer { 100% { transform: translateX(100%); } } /* streaming caret */ .caret::after { content: "▋"; margin-left: 1px; color: #818cf8; animation: caret-blink 1s steps(2) infinite; } @keyframes caret-blink { 0%, 100% { opacity: 0; } 50% { opacity: 1; } } /* typing dots */ .typing-dot { animation: blink 1.4s infinite both; } .typing-dot:nth-child(2) { animation-delay: 0.2s; } .typing-dot:nth-child(3) { animation-delay: 0.4s; } @keyframes blink { 0%, 80%, 100% { opacity: 0.2; } 40% { opacity: 1; } } /* ---------------- markdown prose ---------------- */ .prose-chat { font-size: 0.9rem; line-height: 1.65; color: #d6dae6; } .prose-chat > *:first-child { margin-top: 0; } .prose-chat > *:last-child { margin-bottom: 0; } .prose-chat p { margin: 0.5rem 0; } .prose-chat ul, .prose-chat ol { margin: 0.5rem 0; padding-left: 1.25rem; } .prose-chat li { margin: 0.2rem 0; } .prose-chat ul { list-style: disc; } .prose-chat ol { list-style: decimal; } .prose-chat h1, .prose-chat h2, .prose-chat h3 { font-weight: 600; color: #fff; margin: 0.8rem 0 0.4rem; line-height: 1.3; } .prose-chat h1 { font-size: 1.05rem; } .prose-chat h2 { font-size: 1rem; } .prose-chat h3 { font-size: 0.92rem; } .prose-chat code { background: #0b0d14; padding: 0.1rem 0.4rem; border-radius: 5px; font-size: 0.82em; border: 1px solid rgba(255, 255, 255, 0.06); } .prose-chat pre { background: #07080c; border: 1px solid #252b3d; padding: 0.85rem; border-radius: 10px; overflow-x: auto; margin: 0.6rem 0; } .prose-chat pre code { background: transparent; border: 0; padding: 0; } .prose-chat strong { color: #fff; font-weight: 600; } .prose-chat a { color: #a5b4fc; text-decoration: underline; text-underline-offset: 2px; } .prose-chat blockquote { border-left: 3px solid #4f46e5; padding-left: 0.8rem; margin: 0.6rem 0; color: #aeb4c4; } .prose-chat table { border-collapse: collapse; margin: 0.6rem 0; font-size: 0.84em; width: 100%; } .prose-chat th, .prose-chat td { border: 1px solid #252b3d; padding: 0.35rem 0.6rem; text-align: left; } .prose-chat th { background: #10131c; font-weight: 600; color: #c7d2fe; } .prose-chat hr { border: 0; border-top: 1px solid #252b3d; margin: 0.8rem 0; }