Spaces:
Sleeping
Sleeping
| @tailwind base; | |
| @tailwind components; | |
| @tailwind utilities; | |
| @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Inter:wght@300;400;500;600;700&display=swap'); | |
| :root { | |
| --font-sans: 'Inter', system-ui, sans-serif; | |
| --font-mono: 'JetBrains Mono', monospace; | |
| } | |
| @layer base { | |
| * { | |
| @apply border-zinc-800; | |
| } | |
| body { | |
| @apply bg-zinc-950 text-zinc-100 antialiased; | |
| font-family: var(--font-sans); | |
| } | |
| ::selection { | |
| @apply bg-teal-600/40 text-white; | |
| } | |
| ::-webkit-scrollbar { | |
| @apply w-2 h-2; | |
| } | |
| ::-webkit-scrollbar-track { | |
| @apply bg-transparent; | |
| } | |
| ::-webkit-scrollbar-thumb { | |
| @apply bg-zinc-700 rounded-full; | |
| } | |
| ::-webkit-scrollbar-thumb:hover { | |
| @apply bg-zinc-600; | |
| } | |
| } | |
| @layer utilities { | |
| .animate-in { | |
| animation: animateIn 0.3s ease-out forwards; | |
| } | |
| @keyframes animateIn { | |
| from { | |
| opacity: 0; | |
| transform: translateY(10px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| .typing-indicator span { | |
| @apply inline-block w-2 h-2 bg-teal-500 rounded-full mx-0.5; | |
| animation: typing 1.4s infinite ease-in-out both; | |
| } | |
| .typing-indicator span:nth-child(1) { | |
| animation-delay: -0.32s; | |
| } | |
| .typing-indicator span:nth-child(2) { | |
| animation-delay: -0.16s; | |
| } | |
| .typing-indicator span:nth-child(3) { | |
| animation-delay: 0s; | |
| } | |
| @keyframes typing { | |
| 0%, | |
| 80%, | |
| 100% { | |
| transform: scale(0.8); | |
| opacity: 0.5; | |
| } | |
| 40% { | |
| transform: scale(1); | |
| opacity: 1; | |
| } | |
| } | |
| } | |
| /* Code block wrapper - clean backgrounds */ | |
| .code-block-wrapper pre, | |
| .code-block-wrapper code, | |
| .code-block-wrapper span { | |
| background: transparent ; | |
| background-color: transparent ; | |
| box-shadow: none ; | |
| text-shadow: none ; | |
| } | |
| .code-block-wrapper pre>div { | |
| background: #18181b ; | |
| } | |
| .code-block-wrapper .token { | |
| background: transparent ; | |
| } | |
| .code-block-wrapper pre code span { | |
| display: inline; | |
| padding: 0; | |
| margin: 0; | |
| border: none; | |
| outline: none; | |
| } | |
| /* Markdown styling */ | |
| .markdown-content { | |
| @apply leading-relaxed; | |
| } | |
| .markdown-content h1, | |
| .markdown-content h2, | |
| .markdown-content h3 { | |
| @apply font-semibold text-zinc-100 mt-6 mb-3; | |
| } | |
| .markdown-content h1 { | |
| @apply text-2xl; | |
| } | |
| .markdown-content h2 { | |
| @apply text-xl; | |
| } | |
| .markdown-content h3 { | |
| @apply text-lg; | |
| } | |
| .markdown-content p { | |
| @apply mb-4 text-zinc-300; | |
| } | |
| .markdown-content ul, | |
| .markdown-content ol { | |
| @apply mb-4 pl-6 text-zinc-300; | |
| } | |
| .markdown-content ul { | |
| @apply list-disc; | |
| } | |
| .markdown-content ol { | |
| @apply list-decimal; | |
| } | |
| .markdown-content li { | |
| @apply mb-1; | |
| } | |
| .markdown-content code:not(pre code) { | |
| @apply bg-zinc-800 px-1.5 py-0.5 rounded text-teal-300 text-sm font-mono; | |
| } | |
| .markdown-content pre { | |
| @apply mb-4 !bg-zinc-900 rounded-lg overflow-x-auto; | |
| } | |
| .markdown-content a { | |
| @apply text-teal-400 hover:text-teal-300 underline underline-offset-2; | |
| } | |
| .markdown-content blockquote { | |
| @apply border-l-4 border-teal-600/50 pl-4 italic text-zinc-400 my-4; | |
| } | |
| .markdown-content hr { | |
| @apply border-zinc-800 my-6; | |
| } | |
| .markdown-content table { | |
| @apply w-full border-collapse mb-4; | |
| } | |
| .markdown-content th, | |
| .markdown-content td { | |
| @apply border border-zinc-700 px-3 py-2 text-left; | |
| } | |
| .markdown-content th { | |
| @apply bg-zinc-800 font-medium; | |
| } | |
| /* KaTeX math styling for dark theme */ | |
| .markdown-content .katex { | |
| @apply text-zinc-100; | |
| font-size: 1.1em; | |
| } | |
| .markdown-content .katex-display { | |
| @apply my-4 overflow-x-auto overflow-y-hidden py-2; | |
| } | |
| .markdown-content .katex-display>.katex { | |
| @apply text-zinc-100; | |
| } | |
| /* Inline math styling */ | |
| .markdown-content .math-inline { | |
| @apply text-zinc-100; | |
| } | |
| /* Display/block math styling */ | |
| .markdown-content .math-display { | |
| @apply bg-zinc-800/50 rounded-lg px-4 py-3 my-4; | |
| } | |
| /* KaTeX color overrides for dark theme */ | |
| .katex .mord, | |
| .katex .mbin, | |
| .katex .mrel, | |
| .katex .mopen, | |
| .katex .mclose, | |
| .katex .mpunct, | |
| .katex .minner { | |
| color: inherit; | |
| } | |
| .katex .mathnormal { | |
| color: #93c5fd; | |
| /* blue-300 for variables */ | |
| } | |
| .katex .text { | |
| color: #d4d4d8; | |
| /* zinc-300 */ | |
| } | |
| .katex .mop { | |
| color: #c4b5fd; | |
| /* violet-300 for operators like sum, integral */ | |
| } | |
| .katex .sqrt>.root { | |
| color: #86efac; | |
| /* emerald-300 */ | |
| } | |
| .katex-html { | |
| color: #e4e4e7; | |
| /* zinc-200 */ | |
| } | |
| /* Execution result styling */ | |
| .execution-output { | |
| @apply font-mono text-sm; | |
| } | |
| .execution-output pre { | |
| @apply whitespace-pre-wrap break-words; | |
| } | |
| /* Circuit ASCII art preservation */ | |
| .circuit-output { | |
| @apply font-mono text-xs leading-tight tracking-tight; | |
| font-feature-settings: "liga" 0; | |
| } | |
| /* Pulse animation for loading states */ | |
| @keyframes executePulse { | |
| 0%, | |
| 100% { | |
| opacity: 1; | |
| } | |
| 50% { | |
| opacity: 0.5; | |
| } | |
| } | |
| .execution-loading { | |
| animation: executePulse 1.5s ease-in-out infinite; | |
| } | |
| /* Run button glow effect */ | |
| .run-button-glow { | |
| box-shadow: 0 0 12px rgba(20, 184, 166, 0.3); | |
| } | |
| .run-button-glow:hover { | |
| box-shadow: 0 0 20px rgba(20, 184, 166, 0.5); | |
| } | |
| /* Practice mode styles */ | |
| .practice-layout { | |
| @apply flex h-full; | |
| } | |
| /* Monaco editor container */ | |
| .monaco-container { | |
| @apply h-full w-full; | |
| } | |
| .monaco-container .monaco-editor { | |
| @apply rounded-none; | |
| } | |
| /* Problem panel transition */ | |
| .problem-panel-transition { | |
| transition: width 200ms ease-out; | |
| } | |
| /* Drag handle indicator */ | |
| .drag-handle-active { | |
| @apply bg-teal-500/70; | |
| } | |
| /* Test result animations */ | |
| @keyframes slideIn { | |
| from { | |
| opacity: 0; | |
| transform: translateY(-8px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| .test-result-animate { | |
| animation: slideIn 0.2s ease-out forwards; | |
| } | |
| /* AI Helper chat bubble */ | |
| .ai-bubble { | |
| @apply relative; | |
| } | |
| .ai-bubble::before { | |
| content: ''; | |
| @apply absolute w-2 h-2 bg-zinc-800/80 rotate-45; | |
| left: -4px; | |
| top: 12px; | |
| } | |
| /* Code completion success glow */ | |
| .success-glow { | |
| box-shadow: 0 0 20px rgba(34, 197, 94, 0.3); | |
| } | |
| /* Scrollbar customization for panels */ | |
| .panel-scrollbar::-webkit-scrollbar { | |
| @apply w-1.5; | |
| } | |
| .panel-scrollbar::-webkit-scrollbar-track { | |
| @apply bg-transparent; | |
| } | |
| .panel-scrollbar::-webkit-scrollbar-thumb { | |
| @apply bg-zinc-700/50 rounded-full; | |
| } | |
| .panel-scrollbar::-webkit-scrollbar-thumb:hover { | |
| @apply bg-zinc-600/50; | |
| } | |
| /* Mode toggle active state */ | |
| .mode-toggle-active { | |
| @apply bg-teal-600 text-white shadow-sm; | |
| } | |
| /* Problem card hover effect */ | |
| .problem-card-hover { | |
| @apply hover:border-teal-700/40 hover:bg-zinc-800/80; | |
| } | |
| /* Solved problem indicator */ | |
| .solved-indicator { | |
| @apply text-emerald-500; | |
| } | |
| /* Resize cursor override */ | |
| .resizing-active * { | |
| cursor: col-resize ; | |
| user-select: none ; | |
| } |