@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; line-height: 1.6; color: #1e293b; background: #f8fafc; } /* Custom scrollbar styles */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: #f1f5f9; border-radius: 8px; } ::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 8px; } ::-webkit-scrollbar-thumb:hover { background: #94a3b8; } /* Loading animation */ @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .animate-spin { animation: spin 1s linear infinite; } /* Code syntax highlighting in preview */ pre code { font-family: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace; } /* Gradient text utilities */ .gradient-text { background: linear-gradient(135deg, #3b82f6, #8b5cf6); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Glass morphism effect for cards */ .glass-card { background: rgba(255, 255, 255, 0.8); backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.2); } /* Button hover effects */ .btn-gradient { background: linear-gradient(135deg, #3b82f6, #8b5cf6); transition: all 0.3s ease; } .btn-gradient:hover { background: linear-gradient(135deg, #2563eb, #7c3aed); transform: translateY(-1px); box-shadow: 0 8px 25px rgba(59, 130, 246, 0.3); } /* Iframe responsive wrapper */ .iframe-wrapper { position: relative; width: 100%; height: 100%; overflow: hidden; border-radius: 8px; } /* Status indicators */ .status-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; margin-right: 8px; } .status-generating { background: #f59e0b; animation: pulse 2s infinite; } .status-complete { background: #10b981; } .status-error { background: #ef4444; } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } /* File type badges */ .file-badge { display: inline-flex; align-items: center; gap: 4px; padding: 4px 8px; background: #e2e8f0; color: #475569; border-radius: 6px; font-size: 12px; font-weight: 500; } .file-badge.html { background: #fef3c7; color: #92400e; } .file-badge.jsx { background: #dbeafe; color: #1e40af; } .file-badge.css { background: #dcfce7; color: #166534; } .file-badge.js { background: #fef3c7; color: #92400e; } /* Preview loading state */ .preview-loading { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; color: #64748b; } /* Responsive design */ @media (max-width: 768px) { .container { padding: 16px; } .grid.lg\\:grid-cols-2 { grid-template-columns: 1fr; } } /* Toast styling (works with sonner) */ .toast-container { font-family: 'Inter', sans-serif; } /* Code block styling */ .code-block { font-family: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, monospace; font-size: 14px; line-height: 1.5; background: #1e293b; color: #e2e8f0; padding: 16px; border-radius: 8px; overflow-x: auto; } /* Smooth transitions for all interactive elements */ button, .btn, input, textarea, select { transition: all 0.2s ease; } /* Focus states */ input:focus, textarea:focus, select:focus { outline: none; ring: 2px solid #3b82f6; border-color: #3b82f6; } /* Custom selection */ ::selection { background: #3b82f6; color: white; }