/* Custom styles for BlogWizard Pro */ * { margin: 0; padding: 0; box-sizing: border-box; } html { scroll-behavior: smooth; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; line-height: 1.6; } /* Dark mode transitions */ .dark { color-scheme: dark; } /* Custom scrollbar */ ::-webkit-scrollbar { width: 8px; } ::-webkit-scrollbar-track { background: #f1f1f1; } .dark ::-webkit-scrollbar-track { background: #374151; } ::-webkit-scrollbar-thumb { background: #888; border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: #555; } /* Animation utilities */ @keyframes slideIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .slide-in { animation: slideIn 0.3s ease-out; } /* Glassmorphism effect */ .glass { background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.2); } .dark .glass { background: rgba(0, 0, 0, 0.2); border: 1px solid rgba(255, 255, 255, 0.1); } /* Button hover effects */ .btn-glow { position: relative; overflow: hidden; } .btn-glow::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); transition: left 0.5s; } .btn-glow:hover::before { left: 100%; } /* Input focus effects */ .input-glow:focus { box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1); } /* Toast notification styles */ .toast { position: fixed; bottom: 20px; right: 20px; padding: 12px 20px; background: white; border-radius: 8px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); transform: translateX(400px); transition: transform 0.3s ease-out; z-index: 1000; } .toast.show { transform: translateX(0); } .dark .toast { background: #374151; color: white; } /* Markdown editor styles */ .markdown-editor { font-family: 'Monaco', 'Courier New', monospace; line-height: 1.5; } /* Loading animation */ .loading-dots::after { content: ''; animation: dots 1.5s steps(4, end) infinite; } @keyframes dots { 0%, 20% { content: ''; } 40% { content: '.'; } 60% { content: '..'; } 80%, 100% { content: '...'; } } /* Hover card effect */ .hover-card { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .hover-card:hover { transform: translateY(-4px); box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); } /* Gradient text */ .gradient-text { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Custom checkbox styles */ .custom-checkbox { appearance: none; width: 20px; height: 20px; border: 2px solid #d1d5db; border-radius: 4px; cursor: pointer; position: relative; } .custom-checkbox:checked { background-color: #6366f1; border-color: #6366f1; } .custom-checkbox:checked::after { content: '✓'; position: absolute; color: white; font-size: 14px; top: 50%; left: 50%; transform: translate(-50%, -50%); } /* Custom radio styles */ .custom-radio { appearance: none; width: 20px; height: 20px; border: 2px solid #d1d5db; border-radius: 50%; cursor: pointer; position: relative; } .custom-radio:checked { background-color: #6366f1; border-color: #6366f1; } .custom-radio:checked::after { content: ''; position: absolute; width: 8px; height: 8px; background-color: white; border-radius: 50%; top: 50%; left: 50%; transform: translate(-50%, -50%); } /* Responsive design adjustments */ @media (max-width: 640px) { .container { padding-left: 1rem; padding-right: 1rem; } .grid { gap: 1rem; } } /* Print styles */ @media print { header, footer, button, .no-print { display: none !important; } body { font-size: 12pt; line-height: 1.4; } } /* Multi-step form styles */ .step-indicator { display: flex; flex-direction: column; align-items: center; position: relative; } .step-number { width: 32px; height: 32px; border-radius: 50%; background: #e5e7eb; color: #6b7280; display: flex; align-items: center; justify-content: center; font-weight: bold; transition: all 0.3s ease; margin-bottom: 0.25rem; } .step-indicator.active .step-number { background: #6366f1; color: white; } .step-indicator.completed .step-number { background: #10b981; color: white; } .step-label { font-size: 0.75rem; color: #6b7280; transition: color 0.3s ease; } .step-indicator.active .step-label { color: #6366f1; font-weight: 600; } .step-line { flex: 1; height: 2px; background: #e5e7eb; margin: 0 1rem; margin-top: 1rem; } .dark .step-line { background: #374151; } .step-indicator.completed ~ .step-line { background: #10b981; } /* Markdown editor styles */ .markdown-editor { font-family: 'Monaco', 'Courier New', monospace; line-height: 1.6; tab-size: 4; } .prose { max-width: none; } .prose h1 { @apply text-3xl font-bold mb-4 text-gray-800 dark:text-gray-100; } .prose h2 { @apply text-2xl font-semibold mb-3 text-gray-800 dark:text-gray-100; } .prose h3 { @apply text-xl font-semibold mb-2 text-gray-800 dark:text-gray-100; } .prose p { @apply mb-4 text-gray-700 dark:text-gray-300; } .prose ul, .prose ol { @apply mb-4 pl-6 text-gray-700 dark:text-gray-300; } .prose li { @apply mb-2; } .prose blockquote { @apply border-l-4 border-primary pl-4 italic text-gray-600 dark:text-gray-400 mb-4; } .prose code { @apply bg-gray-100 dark:bg-gray-800 px-1 py-0.5 rounded text-sm text-gray-800 dark:text-gray-200; } .prose a { @apply text-primary hover:text-primary-600 underline; } .prose strong { @apply font-semibold text-gray-800 dark:text-gray-100; } .prose em { @apply italic text-gray-700 dark:text-gray-300; } /* Tooltip styles */ #tooltip { animation: fadeIn 0.2s ease-out; } @keyframes fadeIn { from { opacity: 0; transform: translateX(-50%) translateY(-10px); } to { opacity: 1; transform: translateX(-50%) translateY(0); } } /* Modal styles */ .modal-backdrop { animation: fadeInBackdrop 0.2s ease-out; } @keyframes fadeInBackdrop { from { opacity: 0; } to { opacity: 1; } } /* Responsive adjustments for mobile */ @media (max-width: 640px) { .step-line { display: none; } .step-indicator { flex: 1; } .step-label { font-size: 0.625rem; } .step-number { width: 28px; height: 28px; font-size: 0.75rem; } #helpModal .bg-white { margin: 1rem; max-height: calc(100vh - 2rem); } } /* Rich text editor toolbar */ #editorToolbar button { transition: all 0.2s ease; } #editorToolbar button:hover { transform: translateY(-1px); } #editorToolbar button:active { transform: translateY(0); } /* Preview mode styles */ .preview-mode { @apply bg-gray-50 dark:bg-gray-700 border-gray-300 dark:border-gray-600; } /* Animation for step transitions */ .step-content { animation: slideIn 0.3s ease-out; } @keyframes slideIn { from { opacity: 0; transform: translateX(20px); } to { opacity: 1; transform: translateX(0); } } /* Loading states */ .loading { pointer-events: none; opacity: 0.6; } .loading::after { content: ''; position: absolute; top: 50%; left: 50%; width: 20px; height: 20px; margin: -10px 0 0 -10px; border: 2px solid #f3f3f3; border-top: 2px solid #6366f1; border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Dark mode adjustments for rich text editor */ .dark #editorToolbar { @apply bg-gray-700; } .dark #editorToolbar button { @apply bg-gray-600 text-white hover:bg-gray-500; } /* Template card styles */ .template-card { transform: translateY(0); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .template-card:hover { transform: translateY(-4px); box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1); } /* Image upload styles */ .border-dashed { transition: all 0.3s ease; } .border-dashed:hover { border-color: #6366f1; background-color: rgba(99, 102, 241, 0.05); } .dark .border-dashed:hover { background-color: rgba(99, 102, 241, 0.1); } /* Outline editor styles */ .outline-section { transition: all 0.2s ease; } .outline-section:hover { transform: translateX(2px); } /* Floating toolbar styles */ .floating-toolbar { position: sticky; top: 20px; z-index: 10; background: white; border-radius: 8px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); padding: 8px; display: flex; gap: 4px; } .dark .floating-toolbar { background: #374151; } /* Readability score indicator */ .readability-excellent { color: #10b981; } .readability-good { color: #3b82f6; } .readability-fair { color: #f59e0b; } .readability-poor { color: #ef4444; } /* API key status */ .key-valid { color: #10b981; } .key-invalid { color: #ef4444; } /* Media grid */ .media-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 1rem; } .media-item { position: relative; overflow: hidden; border-radius: 8px; cursor: pointer; } .media-item img { transition: transform 0.3s ease; } .media-item:hover img { transform: scale(1.05); } /* Outline draggable styles */ .drag-handle { cursor: move; color: #6b7280; } .drag-handle:hover { color: #374151; } .dark .drag-handle:hover { color: #9ca3af; } /* Custom scrollbar for outline */ .outline-container::-webkit-scrollbar { width: 4px; } .outline-container::-webkit-scrollbar-track { background: transparent; } .outline-container::-webkit-scrollbar-thumb { background: #d1d5db; border-radius: 2px; } .dark .outline-container::-webkit-scrollbar-thumb { background: #4b5563; } /* Enhanced focus states */ .focus-visible:focus { @apply ring-2 ring-primary ring-offset-2 ring-offset-white dark:ring-offset-gray-800; } /* Scrollbar styles for preview */ #blogPreview::-webkit-scrollbar { width: 6px; } #blogPreview::-webkit-scrollbar-track { background: transparent; } #blogPreview::-webkit-scrollbar-thumb { background: #d1d5db; border-radius: 3px; } .dark #blogPreview::-webkit-scrollbar-thumb { background: #4b5563; } #blogPreview::-webkit-scrollbar-thumb:hover { background: #9ca3af; } .dark #blogPreview::-webkit-scrollbar-thumb:hover { background: #6b7280; }