@tailwind base; @tailwind components; @tailwind utilities; :root { --foreground-rgb: 0, 0, 0; --background-start-rgb: 255, 255, 255; --background-end-rgb: 255, 255, 255; } @media (prefers-color-scheme: dark) { :root { --foreground-rgb: 255, 255, 255; --background-start-rgb: 30, 30, 30; --background-end-rgb: 30, 30, 30; } } body { color: rgb(var(--foreground-rgb)); background: linear-gradient( to bottom, transparent, rgb(var(--background-end-rgb)) ) rgb(var(--background-start-rgb)); min-height: 100vh; } /* Custom scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 4px; } ::-webkit-scrollbar-thumb { background: #888; border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: #555; } /* Canvas cursor */ .canvas-draw { cursor: crosshair; } .canvas-eraser { cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10' fill='white' stroke='black' stroke-width='2'/%3E%3C/svg%3E") 12 12, auto; } /* Animation for reactions */ @keyframes float-up { 0% { opacity: 1; transform: translateY(0) scale(1); } 100% { opacity: 0; transform: translateY(-100px) scale(1.5); } } .reaction-float { animation: float-up 2s ease-out forwards; } /* Chat message animation */ @keyframes slide-in { from { opacity: 0; transform: translateX(-20px); } to { opacity: 1; transform: translateX(0); } } .chat-message { animation: slide-in 0.3s ease-out; } /* Poll bar animation */ @keyframes grow-bar { from { width: 0; } } .poll-bar { animation: grow-bar 0.5s ease-out; } /* Doubt card highlight */ .doubt-new { animation: pulse 2s infinite; } @keyframes pulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(255, 0, 0, 0.4); } 50% { box-shadow: 0 0 0 10px rgba(255, 0, 0, 0); } } /* Connection status indicator */ .status-connected { background-color: #22c55e; box-shadow: 0 0 8px #22c55e; } .status-disconnected { background-color: #ef4444; box-shadow: 0 0 8px #ef4444; } .status-connecting { background-color: #f59e0b; box-shadow: 0 0 8px #f59e0b; animation: blink 1s infinite; } @keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }