/* Reset and Base Styles */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background-color: #f5f5f5; overflow: hidden; } /* App Container */ .app-container { display: flex; flex-direction: column; height: 100vh; } /* Toolbar */ .toolbar { display: flex; justify-content: space-between; align-items: center; padding: 15px 20px; background-color: #2c3e50; box-shadow: 0 2px 5px rgba(0,0,0,0.1); } .toolbar-left, .toolbar-right { display: flex; gap: 10px; } /* Buttons */ .btn { padding: 8px 16px; border: none; border-radius: 4px; cursor: pointer; font-size: 14px; display: flex; align-items: center; gap: 5px; transition: all 0.3s ease; background-color: #34495e; color: white; } .btn:hover { transform: translateY(-1px); box-shadow: 0 2px 5px rgba(0,0,0,0.2); } .btn-primary { background-color: #3498db; } .btn-primary.active { background-color: #2980b9; } .btn-success { background-color: #27ae60; } .btn-info { background-color: #16a085; } /* Main Content */ .main-content { display: flex; flex: 1; overflow: hidden; } /* Editor Section */ .editor-section { flex: 1; display: flex; flex-direction: column; background-color: white; border-right: 1px solid #ddd; } .editor-mode { display: none; flex-direction: column; height: 100%; } .editor-mode.active { display: flex; } /* Quill Editor */ #quillToolbar { border: 1px solid #ccc; border-bottom: none; } #quillEditor { flex: 1; overflow-y: auto; font-size: 16px; } .ql-container { font-size: 16px; } /* Markdown Editor */ .markdown-toolbar { display: flex; gap: 5px; padding: 10px; background-color: #f8f8f8; border-bottom: 1px solid #ddd; } .markdown-toolbar button { width: 35px; height: 35px; border: 1px solid #ddd; background-color: white; cursor: pointer; font-weight: bold; border-radius: 4px; transition: all 0.2s; } .markdown-toolbar button:hover { background-color: #e8e8e8; } #markdownTextarea { flex: 1; padding: 20px; border: none; font-family: 'Consolas', 'Monaco', monospace; font-size: 14px; line-height: 1.6; resize: none; outline: none; } /* Preview Section */ .preview-section { flex: 1; display: flex; flex-direction: column; background-color: #e8e8e8; overflow: hidden; } .preview-header { display: flex; justify-content: space-between; align-items: center; padding: 15px 20px; background-color: white; border-bottom: 1px solid #ddd; } .preview-header h3 { color: #2c3e50; } .page-info { color: #7f8c8d; font-size: 14px; } .preview-container { flex: 1; overflow-y: auto; padding: 20px; display: flex; flex-direction: column; align-items: center; gap: 20px; } /* Preview Page Styles */ .preview-page { width: 210mm; min-height: 297mm; background: white; box-shadow: 0 0 20px rgba(0,0,0,0.1); padding: 40px; box-sizing: border-box; position: relative; display: flex; flex-direction: column; } .preview-watermark { max-width: 600px; opacity: 0.08; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 1; pointer-events: none; } .preview-header-section { display: flex; align-items: center; margin-bottom: 40px; position: relative; z-index: 10; } .preview-logo { width: 60px; height: 60px; margin-right: 20px; } .preview-company-info { display: flex; flex-direction: column; } .preview-company-name { font-size: 24px; font-weight: bold; color: #2c3e50; margin: 0; letter-spacing: 0.5px; } .preview-content-area { flex: 1; position: relative; z-index: 10; overflow: hidden; } .preview-content-area h1 { font-size: 28px; margin: 20px 0 15px 0; color: #2c3e50; } .preview-content-area h2 { font-size: 22px; margin: 18px 0 12px 0; color: #34495e; } .preview-content-area h3 { font-size: 18px; margin: 15px 0 10px 0; color: #34495e; } .preview-content-area p { margin: 10px 0; line-height: 1.6; } .preview-content-area ul, .preview-content-area ol { margin: 10px 0; padding-left: 25px; } .preview-content-area img { max-width: 100%; height: auto; margin: 10px 0; } .preview-content-area table { width: 100%; border-collapse: collapse; margin: 15px 0; } .preview-content-area th, .preview-content-area td { border: 1px solid #ddd; padding: 8px; text-align: left; } .preview-content-area th { background-color: #f8f8f8; font-weight: bold; } .preview-footer { margin-top: auto; padding-top: 25px; border-top: 1px solid #ecf0f1; position: relative; z-index: 10; } .preview-footer-content { display: flex; justify-content: space-between; align-items: flex-start; } .footer-left, .footer-right { display: flex; flex-direction: column; gap: 8px; } .footer-item { display: flex; align-items: center; font-size: 12px; color: #666; } .footer-icon { width: 14px; height: 14px; margin-right: 8px; fill: #666; } /* Responsive */ @media (max-width: 1400px) { .preview-page { transform: scale(0.8); transform-origin: top center; } } @media (max-width: 1200px) { .preview-page { transform: scale(0.7); } } /* Loading State */ .loading { display: flex; align-items: center; justify-content: center; padding: 20px; color: #666; } .loading::after { content: '.'; animation: dots 1.5s infinite; } @keyframes dots { 0%, 20% { content: '.'; } 40% { content: '..'; } 60%, 100% { content: '...'; } } /* Dropdown */ .dropdown { position: relative; display: inline-block; } .dropdown-toggle::after { content: '▼'; font-size: 10px; margin-left: 5px; } .dropdown-menu { position: absolute; top: 100%; right: 0; background-color: white; border: 1px solid #ddd; border-radius: 4px; box-shadow: 0 2px 5px rgba(0,0,0,0.1); display: none; z-index: 100; min-width: 180px; } .dropdown-menu.show { display: block; } .dropdown-item { display: block; width: 100%; padding: 10px 15px; border: none; background: none; text-align: left; cursor: pointer; font-size: 14px; transition: background-color 0.2s; } .dropdown-item:hover { background-color: #f0f0f0; } /* Export Modal */ .export-modal { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0,0,0,0.5); display: flex; align-items: center; justify-content: center; z-index: 1000; } .export-modal-content { background-color: white; padding: 30px; border-radius: 8px; text-align: center; box-shadow: 0 5px 20px rgba(0,0,0,0.3); } .export-progress { margin-top: 20px; width: 300px; height: 4px; background-color: #ecf0f1; border-radius: 2px; overflow: hidden; } .export-progress-bar { height: 100%; background-color: #3498db; transition: width 0.3s ease; }