:root { --bg: #f7f5ef; --bg-grad-a: #f5efe2; --bg-grad-b: #eaf6f4; --header-bg: #fffcf5; --nav-bg: #f5f0e4; --panel: #fffdfa; --line: #ddd6c6; --ink: #1f2a36; --ink-soft: #4a5a6b; --accent: #0f766e; --accent-soft: #d2f0ec; --shadow: rgba(0, 0, 0, 0.08); } body[data-theme="dark"] { --bg: #0f1720; --bg-grad-a: #131d29; --bg-grad-b: #0b1320; --header-bg: #141e2a; --nav-bg: #121a25; --panel: #17202a; --line: #2d3a47; --ink: #e8f0f7; --ink-soft: #afbfce; --accent: #4fd1c5; --accent-soft: #1d3b40; --shadow: rgba(0, 0, 0, 0.38); } * { box-sizing: border-box; } html, body { min-height: 100%; } body { margin: 0; font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, sans-serif; color: var(--ink); background: linear-gradient(135deg, var(--bg-grad-a) 0%, var(--bg) 45%, var(--bg-grad-b) 100%); } header { padding: 1rem; border-bottom: 1px solid var(--line); background: var(--header-bg); position: sticky; top: 0; z-index: 2; display: flex; align-items: center; justify-content: space-between; } header h1 { margin: 0; font-size: 1.1rem; letter-spacing: 0.01em; } #theme-toggle { border: 1px solid var(--line); border-radius: 999px; background: var(--panel); color: var(--ink); padding: 0.35rem 0.7rem; font-size: 0.85rem; cursor: pointer; } #theme-toggle:hover { border-color: var(--accent); } .layout { display: grid; grid-template-columns: minmax(200px, 300px) 1fr minmax(220px, 300px); height: calc(100vh - 57px); overflow: hidden; } nav { border-right: 1px solid var(--line); background: var(--nav-bg); padding: 0.75rem; display: flex; flex-direction: column; min-height: 0; overflow: hidden; } #file-list { display: grid; gap: 0.5rem; align-content: start; grid-auto-rows: max-content; flex: 1; min-height: 0; min-width: 0; overflow-y: auto; overflow-x: hidden; scrollbar-gutter: stable; } .search-wrap { display: grid; gap: 0.35rem; margin-bottom: 0.8rem; } .shuffle-btn { width: 100%; margin: 0; border: 1px solid var(--line); border-radius: 0.45rem; background: var(--panel); color: var(--ink); padding: 0.45rem 0.55rem; font-size: 0.86rem; cursor: pointer; } .shuffle-btn:hover { border-color: var(--accent); } .nav-actions { display: grid; gap: 0.5rem; margin: 0 0 0.8rem; } .search-label { font-size: 0.8rem; color: var(--ink-soft); } .search-input { width: 100%; border: 1px solid var(--line); border-radius: 0.45rem; background: var(--panel); color: var(--ink); padding: 0.45rem 0.55rem; font-size: 0.92rem; } .search-input:focus { outline: 2px solid color-mix(in srgb, var(--accent) 50%, transparent); outline-offset: 1px; } .file-link { display: block; width: 100%; max-width: 100%; min-width: 0; margin-bottom: 0.5rem; padding: 0.6rem 0.7rem; border: 1px solid var(--line); border-radius: 0.5rem; color: var(--ink-soft); text-decoration: none; background: var(--panel); } .file-title { display: block; font-weight: 600; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .file-path { display: block; font-size: 0.78rem; margin-top: 0.1rem; color: var(--ink-soft); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .file-link:hover { border-color: var(--accent); color: var(--ink); } .file-link.active { border-color: var(--accent); background: var(--accent-soft); color: var(--ink); font-weight: 600; } main { padding: 1.2rem; overflow: auto; } .backlinks-pane { border-left: 1px solid var(--line); background: var(--nav-bg); padding: 0.75rem; overflow: auto; } .backlinks-pane h3 { margin: 0 0 0.7rem; font-size: 0.92rem; color: var(--ink-soft); } .backlinks-list { display: grid; gap: 0.5rem; } .backlink-item { display: block; padding: 0.55rem 0.65rem; border: 1px solid var(--line); border-radius: 0.5rem; background: var(--panel); text-decoration: none; } .backlink-item:hover { border-color: var(--accent); } .backlinks-empty { margin: 0; padding: 0.45rem 0.2rem; color: var(--ink-soft); } main h2 { margin-top: 0; font-size: 1.05rem; color: var(--ink-soft); } .toolbar { margin: 0 0 0.8rem; } .mode-link { display: inline-block; padding: 0.35rem 0.65rem; border: 1px solid var(--line); border-radius: 999px; background: var(--panel); color: var(--ink); text-decoration: none; font-size: 0.85rem; } .mode-link:hover { border-color: var(--accent); } .status { margin: 0 0 0.8rem; padding: 0.55rem 0.65rem; border: 1px solid var(--line); border-radius: 0.5rem; background: var(--panel); } .status-success { border-color: var(--accent); } .status-error { border-color: #c84a52; } .editor-form { display: grid; gap: 0.7rem; } .editor-box { width: 100%; min-height: 58vh; resize: vertical; padding: 0.8rem; border: 1px solid var(--line); border-radius: 0.75rem; background: var(--panel); color: var(--ink); font: 500 0.96rem/1.5 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; } .submit-btn { justify-self: start; border: 1px solid var(--accent); border-radius: 0.55rem; background: var(--accent); color: #ffffff; padding: 0.5rem 0.95rem; font-weight: 600; cursor: pointer; } .submit-btn:hover { filter: brightness(1.08); } .org-content { background: var(--panel); border: 1px solid var(--line); border-radius: 0.75rem; padding: 1rem; line-height: 1.5; box-shadow: 0 8px 20px var(--shadow); } .org-content h2, .org-content h3, .org-content h4, .org-content h5, .org-content h6 { margin: 1.1rem 0 0.4rem; color: var(--accent); } .org-content p { margin: 0.35rem 0; } .org-link { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; } .org-link:hover { filter: brightness(1.12); } .spacer { height: 0.5rem; } @media (max-width: 800px) { .layout { grid-template-columns: 1fr; height: auto; min-height: calc(100vh - 57px); overflow: visible; } nav { border-right: none; border-bottom: 1px solid var(--line); display: flex; } #file-list { max-height: calc((5 * 4.25rem) + (4 * 0.5rem)); overflow-y: auto; overflow-x: hidden; } .backlinks-pane { border-left: none; border-top: 1px solid var(--line); } .file-link { margin-bottom: 0; } .editor-box { min-height: 48vh; } }