:root{color-scheme:light;--ink:#17202a;--muted:#6d7884;--line:#dfe4e9;--soft:#f5f7f8;--paper:#fff;--blue:#2b69c9;--teal:#137d77;--danger:#a33b3b;--shadow:0 18px 60px rgba(29,44,58,.09)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#f5f6f7;color:var(--ink);font-family:Inter,"Noto Sans SC","Microsoft YaHei",system-ui,sans-serif}button,input,textarea,select{font:inherit}button{border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink);padding:7px 10px;cursor:pointer}button:hover{border-color:#99a5b2;background:#fafbfc}a{color:inherit;text-decoration:none}.notes-app{height:100vh;display:flex;flex-direction:column;overflow:hidden}.app-header{height:62px;flex:0 0 62px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 25px;gap:18px}.brand{display:flex;align-items:center;gap:11px}.brand-mark{width:30px;height:30px;border:1px solid #bdc9d5;border-radius:8px;display:grid;place-items:center;color:#2469a9;font-size:16px}.brand strong{display:block;font-size:14px;letter-spacing:.03em}.brand small{display:block;margin-top:2px;color:var(--muted);font-size:10px;letter-spacing:.12em;text-transform:uppercase}.app-header nav{display:flex;align-items:center;gap:15px;font-size:12px;color:var(--muted)}.app-header nav a:hover{color:var(--ink)}.workspace{min-height:0;display:flex;flex:1;overflow:hidden}.reader-pane{width:min(1040px,100%);flex:0 0 min(1040px,100%);display:flex;flex-direction:column;border-right:1px solid var(--line);background:#edf0f2}.reader-tools{height:76px;flex:0 0 76px;display:flex;align-items:center;justify-content:space-between;padding:14px 22px;border-bottom:1px solid var(--line);background:#f8f9fa}.eyebrow{display:block;color:#78909f;font-size:10px;line-height:1;letter-spacing:.16em;font-weight:700}.reader-tools h1,.map-head h2{font-size:20px;letter-spacing:-.02em;margin:7px 0 0}.reader-tools select{max-width:280px;border:1px solid var(--line);border-radius:7px;background:#fff;padding:8px 30px 8px 10px;color:var(--ink)}.reader-body{min-height:0;display:flex;flex:1;overflow:hidden}.toc{width:230px;flex:0 0 230px;overflow:auto;padding:19px 12px;background:#f5f7f8;border-right:1px solid var(--line)}.toc-head{display:flex;justify-content:space-between;align-items:center;padding:0 8px 11px;font-size:11px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase}.toc-head button{padding:2px 5px;border:0;background:none;color:var(--muted);font-size:11px}.toc.collapsed{width:0;flex-basis:0;padding:0;overflow:hidden}.toc-list,.toc nav{display:flex;flex-direction:column;gap:1px}.toc a{display:block;padding:6px 8px;border-radius:5px;font-size:12px;line-height:1.4;color:#5c6874}.toc a:hover,.toc a.active{background:#e3edf4;color:#135f8d}.toc a.level-1{font-weight:700;color:#283640;margin-top:7px}.toc a.level-2{padding-left:17px}.toc a.level-3{padding-left:27px}.toc a.level-4,.toc a.level-5,.toc a.level-6{padding-left:37px;font-size:11px}.paper{width:794px;min-width:794px;max-width:794px;overflow:auto;background:var(--paper);padding:46px 62px 78px;box-shadow:var(--shadow)}.paper-meta{font-size:11px;color:#9aa4ad;margin-bottom:21px}.markdown-body{font-family:"Noto Serif SC","Songti SC",STSong,Georgia,serif;color:#27333d;font-size:15px;line-height:1.92}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{font-family:Inter,"Noto Sans SC",sans-serif;color:#15232d;line-height:1.35;scroll-margin-top:22px}.markdown-body h1{font-size:29px;margin:0 0 23px;border-bottom:1px solid var(--line);padding-bottom:14px}.markdown-body h2{font-size:22px;margin:36px 0 13px}.markdown-body h3{font-size:18px;margin:26px 0 9px}.markdown-body h4,.markdown-body h5,.markdown-body h6{font-size:15px;margin:21px 0 7px}.markdown-body p{margin:0 0 13px}.markdown-body ul,.markdown-body ol{margin:0 0 15px;padding-left:25px}.markdown-body li{padding-left:3px}.markdown-body blockquote{border-left:3px solid #c7d4dc;margin:17px 0;padding:3px 17px;color:#66747e;background:#f7fafb}.markdown-body code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;background:#eef2f4;border-radius:4px;padding:2px 5px;font-size:.84em}.markdown-body pre{overflow:auto;border-radius:7px;background:#1f2933;color:#edf3f6;padding:14px 16px;line-height:1.55}.markdown-body pre code{padding:0;background:none;color:inherit}.markdown-body a{color:#1b67a2;text-decoration:underline;text-underline-offset:2px}.markdown-body table{width:100%;border-collapse:collapse;margin:18px 0;font-size:13px;line-height:1.5}.markdown-body th,.markdown-body td{border:1px solid #cfd8de;padding:7px 9px;text-align:left;vertical-align:top}.markdown-body th{background:#f0f4f6;font-family:Inter,"Noto Sans SC",sans-serif}.markdown-body img{max-width:100%}.katex{font-size:1em}.map-pane{min-width:0;flex:1;display:flex;flex-direction:column;background:#fbfcfc}.map-head{height:76px;flex:0 0 76px;display:flex;justify-content:space-between;align-items:center;padding:14px 20px;border-bottom:1px solid var(--line)}.map-actions{display:flex;gap:5px}.map-actions button{font-size:11px;min-width:31px;padding:6px 8px}.map-actions button:first-child,.map-actions button:nth-child(2){font-size:17px;padding:2px 8px}.map-canvas{min-height:0;flex:1;position:relative;overflow:hidden}.map-canvas svg{width:100%;height:100%;display:block}.map-empty{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);font-size:13px}.map-hint{height:34px;flex:0 0 34px;padding:8px 20px;color:#8a969e;font-size:11px;border-top:1px solid var(--line)}.hint-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#4c9d97;margin:0 6px 1px 0}.toast{position:fixed;right:22px;bottom:20px;z-index:20;padding:10px 14px;border-radius:7px;background:#17202a;color:#fff;font-size:12px;opacity:0;transform:translateY(8px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}.muted{color:var(--muted);font-size:12px}.admin-layout{display:flex;min-height:0;flex:1;overflow:hidden}.admin-sidebar{width:260px;flex:0 0 260px;overflow:auto;padding:19px 14px;border-right:1px solid var(--line);background:#f8f9fa}.side-title{display:flex;align-items:center;justify-content:space-between;padding:0 4px 13px;font-size:12px;font-weight:700;letter-spacing:.1em}.icon-button{font-size:17px;padding:0 7px;line-height:24px}.admin-list{display:flex;flex-direction:column;gap:6px}.admin-item{display:block;width:100%;text-align:left;padding:10px 11px;border-radius:7px;border:1px solid transparent;background:transparent}.admin-item:hover{background:#eef2f4}.admin-item.active{border-color:#b8c9d4;background:#fff;box-shadow:inset 3px 0 #2d758a}.admin-item strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px}.admin-item small{display:block;margin-top:4px;color:var(--muted);font-size:10px}.admin-editor{min-width:0;flex:1;overflow:auto;padding:26px clamp(18px,3vw,46px) 50px}.empty-state{height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;color:var(--muted);font-size:13px}.empty-state strong{font-size:17px;color:var(--ink)}.edit-top{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:17px}.title-input{display:block;width:min(680px,50vw);border:0;border-bottom:1px solid #9eabb5;background:transparent;color:var(--ink);font:600 25px/1.35 Inter,"Noto Sans SC",sans-serif;padding:7px 0;outline:0}.status-line{font-size:11px;color:var(--muted);margin-top:8px}.edit-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.dark-button{background:#1d2a33;color:#fff;border-color:#1d2a33}.accent-button{background:#197c75;color:#fff;border-color:#197c75}.danger-button{color:var(--danger)}.editor-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;min-height:580px}.source-pane,.preview-pane{display:flex;flex-direction:column;min-width:0;border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden}.source-pane>label,.preview-head{display:flex;justify-content:space-between;align-items:center;padding:10px 13px;border-bottom:1px solid var(--line);font-size:11px;color:var(--muted);letter-spacing:.08em}.source-pane textarea{flex:1;width:100%;resize:none;border:0;outline:0;padding:16px;background:#fbfcfc;color:#23323d;font:13px/1.7 ui-monospace,SFMono-Regular,Consolas,monospace}.preview-pane .markdown-body{overflow:auto;padding:17px 22px;font-size:14px}.map-settings{margin-top:13px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:15px;display:grid;grid-template-columns:1fr auto;gap:11px;align-items:center}.map-settings strong{display:block;margin-top:6px;font-size:13px}.map-settings p{margin:6px 0 0;color:var(--muted);font-size:11px}.map-mode{display:flex;gap:13px;font-size:12px;white-space:nowrap}.map-input{grid-column:1/-1;width:100%;height:130px;resize:vertical;border:1px solid var(--line);border-radius:6px;padding:10px;font:12px/1.6 ui-monospace,SFMono-Regular,Consolas,monospace}.modal{position:fixed;inset:0;z-index:30;display:grid;place-items:center;background:rgba(232,236,239,.82);backdrop-filter:blur(5px);padding:20px}.modal.hidden{display:none}.login-box{width:min(380px,100%);padding:29px;border:1px solid var(--line);border-radius:10px;background:#fff;box-shadow:var(--shadow)}.login-box h1{font:600 23px/1.3 Inter,"Noto Sans SC",sans-serif;margin:14px 0 8px}.login-box p{font-size:12px;color:var(--muted);margin:0 0 18px}.login-box input{width:100%;padding:11px;border:1px solid var(--line);border-radius:6px;outline:0}.login-box button{width:100%;margin-top:12px}.error{min-height:16px;color:var(--danger);font-size:11px;margin-top:6px}@media(max-width:1150px){.reader-pane{width:calc(100vw - 360px);flex-basis:calc(100vw - 360px)}.toc{width:190px;flex-basis:190px}.paper{width:680px;min-width:680px;max-width:680px;padding-left:42px;padding-right:42px}}@media(max-width:900px){.workspace{overflow:auto;display:block}.reader-pane{width:100%;height:75vh;border-right:0;border-bottom:1px solid var(--line)}.map-pane{height:58vh}.paper{width:794px;max-width:none}.admin-layout{overflow:auto}.admin-sidebar{width:220px;flex-basis:220px}.edit-top{align-items:flex-start;flex-direction:column}.title-input{width:100%}.edit-actions{justify-content:flex-start}.editor-grid{grid-template-columns:1fr;min-height:800px}.preview-pane{min-height:360px}}@media(max-width:620px){.app-header{padding:0 14px}.app-header nav{gap:9px;font-size:11px}.brand small{display:none}.reader-tools{padding:12px 14px}.reader-tools select{max-width:150px}.toc{width:170px;flex-basis:170px}.paper{padding-left:28px;padding-right:28px}.admin-sidebar{width:175px;flex-basis:175px}.admin-editor{padding:18px 13px 35px}.map-settings{grid-template-columns:1fr}.map-mode{grid-column:1;white-space:normal}}
/* Obsidian-style multi-pane workspace */
.workspace{--toc-width:230px;--reader-width:min(1040px,100%)}
.reader-pane{width:var(--reader-width);flex-basis:var(--reader-width)}
.workspace.toc-collapsed{--toc-width:0px}.workspace.toc-collapsed .toc{padding:0;overflow:hidden}.workspace.toc-collapsed .toc-head{display:none}
.reader-body{display:grid;grid-template-columns:var(--toc-width) 8px minmax(0,1fr)}
.reader-body .toc{width:auto;min-width:0;flex-basis:auto;grid-column:1}
.reader-body .resize-handle[data-resize="toc"]{grid-column:2}
.reader-body .paper{grid-column:3;width:auto;min-width:0;max-width:none}
.resize-handle{position:relative;z-index:4;background:transparent;touch-action:none;cursor:col-resize}
.resize-handle:hover,.resize-handle:focus{background:#c8dce1;outline:0}
.resize-handle:after{content:"";position:absolute;inset:0 -3px}
.is-resizing{cursor:col-resize!important;user-select:none}
.map-pane{min-width:0}
.workspace>.resize-handle[data-resize="reader"]{flex:0 0 8px}
.outline-group{min-width:0}.outline-row{display:flex;align-items:center;min-height:28px;gap:2px}.outline-toggle,.pane-icon{border:0;background:transparent;color:#82919a;width:22px;height:24px;padding:0;cursor:pointer}.outline-toggle[hidden]{visibility:hidden}.outline-link{border:0;background:transparent;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;padding:5px 6px;border-radius:5px;color:#566571;font-size:12px;flex:1;cursor:pointer}.outline-link:hover,.outline-link.active{background:#e3edf4;color:#135f8d}.outline-children{margin-left:12px;padding-left:4px;border-left:1px solid #dce4e8}.toc .pane-title,.pane-title{display:flex;justify-content:space-between;align-items:center;padding:0 8px 9px;color:var(--muted);font-size:11px;letter-spacing:.1em;text-transform:uppercase}.admin-editor{display:flex;flex-direction:column}.editor-toolbar{display:flex;align-items:center;gap:10px;padding:0 0 12px}.editor-tabs{display:flex;gap:3px}.editor-tab{border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--muted);padding:7px 12px;font-size:12px}.editor-tab.active{border-color:#197c75;color:var(--ink);font-weight:700}.editor-help{margin-left:auto;color:var(--muted);font-size:11px}.editor-workspace{--outline-width:220px;--admin-map-width:360px;min-height:620px;flex:1;display:grid;grid-template-columns:var(--outline-width) 8px minmax(330px,1fr) 8px var(--admin-map-width);border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff}.outline-pane{grid-column:1;overflow:auto;padding:14px 9px;background:#f8fafb;border-right:1px solid var(--line)}.editor-workspace>.resize-handle[data-resize=outline]{grid-column:2}.editor-center{grid-column:3;min-width:0;display:flex;flex-direction:column}.editor-center .source-pane,.editor-center .preview-pane{border:0;border-radius:0;min-height:0;flex:1}.editor-center .preview-pane{display:none}.editor-workspace.preview-mode .source-pane{display:none}.editor-workspace.preview-mode .preview-pane{display:flex}.editor-workspace>.resize-handle[data-resize=map]{grid-column:4}.admin-map-pane{grid-column:5;min-width:0;display:flex;flex-direction:column;border-left:1px solid var(--line)}.map-head.compact{height:54px;flex-basis:54px;padding:10px 12px}.map-head.compact strong{display:block;margin-top:5px;font-size:13px}.admin-map-pane .map-canvas{min-height:0;flex:1}.admin-map-pane .map-hint{height:32px;flex-basis:32px;padding:8px 12px}.editor-workspace.outline-collapsed{--outline-width:0px}.editor-workspace.outline-collapsed .outline-pane{padding:0;overflow:hidden;border:0}.editor-workspace.outline-collapsed>.resize-handle[data-resize=outline]{background:#eef2f4}.admin-map-pane svg{width:100%;height:100%}
@media(max-width:900px){.reader-body{display:flex}.reader-body .resize-handle{display:none}.editor-workspace{display:flex;flex-direction:column;min-height:900px}.outline-pane{height:180px;flex:none}.editor-center{min-height:520px}.admin-map-pane{height:380px;flex:none;border-top:1px solid var(--line)}}
.cm-editor{flex:1;min-height:0;font:13px/1.7 ui-monospace,SFMono-Regular,Consolas,monospace;background:#fbfcfc}.cm-editor .cm-scroller{overflow:auto;padding:14px 16px}.cm-editor .cm-content{min-height:100%}.cm-editor .cm-gutters{background:#f1f4f5;border:0;color:#9aa6ae}.cm-editor.cm-focused{outline:0}.editor-center .source-pane>label{flex:0 0 auto}
/* Keep all panes within the viewport and their scroll areas independent. */
[hidden]{display:none!important}
.wiki-link{color:#227d83;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px}.wiki-missing{color:#9b6d6d;border-bottom:1px dashed currentColor}.backlinks{margin-top:42px;padding-top:18px;border-top:1px solid var(--line);font-family:Inter,"Noto Sans SC",sans-serif}.backlinks h3{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 10px}.backlinks .outline-link{display:block;width:100%;margin:2px 0}
.admin-sidebar{width:170px;flex-basis:170px}.admin-editor{padding:18px 16px;overflow:auto}#editPanel:not([hidden]){display:flex;flex-direction:column;flex:1;min-height:0}.edit-top{margin-bottom:10px}.title-input{width:min(440px,30vw);font-size:22px}.editor-workspace{--outline-width:180px;--admin-map-width:32%;height:calc(100vh - 310px);min-height:380px;flex:1 0 380px;grid-template-columns:minmax(48px,var(--outline-width)) 8px minmax(0,1fr) 8px minmax(240px,var(--admin-map-width))}.editor-center{overflow:hidden}.editor-center .markdown-body{flex:1}.outline-pane{min-width:0}.editor-workspace.outline-collapsed{grid-template-columns:48px 8px minmax(0,1fr) 8px minmax(240px,var(--admin-map-width))}.editor-workspace.outline-collapsed .outline-pane{padding:14px 4px}.editor-workspace.outline-collapsed .pane-title{padding:0}.editor-workspace.outline-collapsed .pane-title>span,.editor-workspace.outline-collapsed .outline-list{display:none}.map-settings{padding:9px 12px;margin-top:10px}.map-settings p{margin-top:3px}.map-input{height:90px}.reader-pane{min-width:0;flex:0 1 var(--reader-width)}.paper{padding:35px clamp(18px,3vw,52px)}.map-pane{flex:1 0 300px}.workspace.toc-collapsed .reader-body{grid-template-columns:60px 8px minmax(0,1fr)}.workspace.toc-collapsed .toc-head{display:flex;padding:10px 0}.workspace.toc-collapsed .toc-head>span,.workspace.toc-collapsed #tocList{display:none}.workspace.toc-collapsed .toc{width:auto;overflow:visible}.map-head{flex-wrap:wrap;height:auto;min-height:76px}.cm-editor{overflow:hidden}.cm-editor .cm-scroller{min-height:0}.reader-tools h1{font-size:18px}.editor-toolbar>span{font-size:11px;color:var(--muted)}
@media(max-width:1200px) and (min-width:901px){.admin-sidebar{width:140px;flex-basis:140px}.editor-workspace{--outline-width:150px;--admin-map-width:260px}.edit-top{align-items:flex-start;flex-direction:column;gap:8px}.title-input{width:100%}.editor-help{display:none}.workspace{--reader-width:65%}.reader-body{grid-template-columns:minmax(120px,var(--toc-width)) 8px minmax(0,1fr)}.workspace{--toc-width:160px}}
@media(max-width:900px){.workspace{display:block;overflow:auto}.reader-pane{width:100%;height:75vh}.reader-body{display:grid;grid-template-columns:150px 0 minmax(0,1fr)}.reader-body .paper{flex:1;width:auto;min-width:0}.map-pane{height:55vh;min-height:320px}.workspace>.resize-handle{display:none}.admin-layout{display:block;overflow:auto}.admin-sidebar{width:100%;height:auto;max-height:160px;border-bottom:1px solid var(--line)}.admin-list{flex-direction:row;overflow:auto}.admin-item{min-width:160px}.admin-editor{display:block}.editor-workspace{height:auto;display:flex;min-height:900px}.editor-workspace .resize-handle{display:none}.editor-center{height:500px;min-height:500px;flex:none}.outline-pane{height:150px}.editor-workspace.outline-collapsed .outline-pane{height:44px}.admin-map-pane{height:380px}.title-input{width:100%}.editor-help{display:none}.workspace.toc-collapsed .reader-body{grid-template-columns:60px 0 minmax(0,1fr)}}
.admin-backlinks{flex:0 0 auto;margin:0;padding:12px 22px;max-height:140px;overflow:auto}
.notes-app:not(.admin-app){height:100dvh}
.admin-layout-full{height:100dvh;min-height:0}
.admin-layout-full .admin-editor{padding-top:26px}
@media(max-width:900px){.admin-layout-full{height:auto;min-height:100dvh}}
.sidebar-logout{margin-top:18px;font-size:11px;color:var(--muted);background:transparent}
/* Directory and scroll-contained reading workspace. */
.note-directory{overflow:auto;max-width:960px;width:100%;margin:0 auto;padding:44px 28px}.note-directory nav{display:flex;justify-content:space-between;color:var(--muted);font-size:13px}.note-directory h1{margin-top:44px;font-size:28px}.note-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-top:28px}.note-card{display:flex;flex-direction:column;gap:26px;padding:24px;border:1px solid var(--line);border-radius:10px;background:white}.note-card:hover{border-color:#137d77}.note-card span,.directory-link{font-size:12px;color:var(--muted)}.document-title{font-size:25px;line-height:1.4;margin:20px 0 14px}.notes-app{overscroll-behavior:none}.reader-body,.paper,.toc{min-height:0;overscroll-behavior:contain}.reader-body{grid-template-rows:minmax(0,1fr)}.map-pane,.admin-map-pane{container-type:inline-size;overflow:hidden}.map-head{gap:8px}.map-actions{flex-wrap:wrap}.map-hint{overflow:hidden;white-space:nowrap}
@media(min-width:901px){.notes-app{height:100dvh;max-height:100dvh}.workspace{height:100%;flex:1 1 0}.reader-pane{flex:0 0 var(--reader-width);max-width:calc(100% - 56px)}.map-pane{min-width:48px;flex:1 1 0}.editor-workspace,.editor-workspace.outline-collapsed{grid-template-columns:var(--outline-width) 8px minmax(0,1fr) 8px minmax(48px,var(--admin-map-width))}.editor-workspace.outline-collapsed{--outline-width:48px}}
@container(max-width:180px){.map-head{padding:8px 4px;justify-content:center}.map-head>div:first-child,.map-hint{display:none}.map-actions{justify-content:center}.map-actions button{font-size:10px;padding:5px 3px}.map-actions button:first-child,.map-actions button:nth-child(2){font-size:15px}}
