.app { display: flex; flex-direction: column; height: 100vh; } .topbar { display: flex; align-items: center; gap: 10px; padding: 8px 14px; border-bottom: 1px solid #ddd; background: #fafafa; flex: 0 0 auto; } .topbar .title { font-weight: 600; font-size: 15px; } .topbar .subtitle { color: #777; font-size: 13px; } .topbar .spacer { flex: 1; } .topbar .url-size { color: #777; font-size: 12px; font-variant-numeric: tabular-nums; } .topbar button { font-size: 13px; padding: 4px 12px; border: 1px solid #ccc; border-radius: 5px; background: #fff; cursor: pointer; } .topbar button:hover { background: #f0f0f0; } .topbar button.primary { background: #2563eb; border-color: #2563eb; color: #fff; } .topbar button.primary:hover { background: #1d4ed8; } .panes { display: flex; flex: 1; min-height: 0; } .pane { min-width: 0; overflow: hidden; display: flex; flex-direction: column; } .pane-preview { flex: 1; overflow-y: auto; } .splitter { flex: 0 0 6px; cursor: col-resize; background: #eee; border-left: 1px solid #ddd; border-right: 1px solid #ddd; } .splitter:hover { background: #d5e3fb; } .editor-container { height: 100%; overflow: hidden; } .editor-container .cm-editor { height: 100%; } /* --- rendered markdown --- */ .preview { padding: 18px 28px 60px; max-width: 820px; font-size: 15px; line-height: 1.6; } .preview h1, .preview h2, .preview h3, .preview h4 { line-height: 1.25; margin-top: 1.4em; margin-bottom: 0.5em; } .preview h1:first-child { margin-top: 0.3em; } .preview h1 { font-size: 1.7em; border-bottom: 1px solid #eee; padding-bottom: 0.2em; } .preview h2 { font-size: 1.35em; border-bottom: 1px solid #f0f0f0; padding-bottom: 0.15em; } .preview h3 { font-size: 1.15em; } .preview a { color: #2563eb; } .preview blockquote { margin: 0.8em 0; padding: 0.1em 1em; border-left: 4px solid #ddd; color: #555; } .preview code { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 0.9em; background: #f3f3f3; border-radius: 4px; padding: 0.1em 0.35em; } .preview pre { background: #f8f8f8; border: 1px solid #eee; border-radius: 6px; padding: 12px 14px; overflow-x: auto; line-height: 1.45; } .preview pre code { background: none; padding: 0; font-size: 0.87em; } .code-block { position: relative; } .code-block .copy-button { position: absolute; top: 6px; right: 6px; font-size: 11px; padding: 2px 8px; border: 1px solid #ddd; border-radius: 4px; background: #fff; color: #666; cursor: pointer; opacity: 0; transition: opacity 0.15s; } .code-block:hover .copy-button { opacity: 1; } .code-block .copy-button:hover { background: #f0f0f0; } .preview table { border-collapse: collapse; margin: 0.8em 0; display: block; overflow-x: auto; } .preview th, .preview td { border: 1px solid #ddd; padding: 5px 12px; } .preview th { background: #f7f7f7; } .preview tr:nth-child(2n) { background: #fbfbfb; } .preview img { max-width: 100%; } .preview hr { border: none; border-top: 1px solid #ddd; margin: 1.5em 0; } .preview .katex-display { overflow-x: auto; overflow-y: hidden; padding: 2px 0; } .preview input[type='checkbox'] { margin-right: 0.45em; } .mermaid-diagram { margin: 0.8em 0; overflow-x: auto; } .mermaid-loading { color: #999; font-size: 13px; margin: 0.8em 0; } .mermaid-error { color: #b91c1c; background: #fef2f2; border: 1px solid #fecaca; white-space: pre-wrap; }