:root{--paper: #FAF7F2;--card: #FFFDF9;--ink: #1F1B16;--ink-2: #6F6759;--ink-3: #A39A8B;--line: #E8E2D6;--blue: #2B4ACB;--blue-soft: #EEF1FB;--blue-line: #DDE3F6;--green: #2E7D4F;--green-soft: #EAF4EE;--yellow: #9A6B00;--yellow-soft: #FBF3DF;--red: #B3402E;--red-soft: #F9ECE9;--font-serif: "Noto Serif SC", "Source Han Serif SC", "STZhongsong", "SimSun", serif;--font-sans: "Noto Sans SC", "Source Han Sans SC", "Microsoft YaHei UI", -apple-system, sans-serif;--font-mono: "Cascadia Mono", Consolas, "Courier New", monospace;--text-xs: 11px;--text-sm: 12px;--text-md: 13px;--text-body: 15px;--text-h2: 17px;--text-title: 26px;--text-h1: 30px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--radius: 6px;--shadow-card: 0 1px 2px rgba(31,27,22,.04), 0 8px 24px rgba(31,27,22,.06)}*{margin:0;padding:0;box-sizing:border-box}html,body{overflow-x:clip}body{font-family:var(--font-sans);color:var(--ink);min-height:100vh;background-color:var(--paper);background-image:repeating-linear-gradient(0deg,rgba(31,27,22,.028) 0 1px,transparent 1px 3px),repeating-linear-gradient(90deg,rgba(31,27,22,.02) 0 1px,transparent 1px 4px)}.layout{display:grid;grid-template-columns:200px minmax(0,1fr);gap:var(--space-8);max-width:1360px;margin:0 auto;padding:var(--space-8) var(--space-6);align-items:start}.nav{position:sticky;top:var(--space-8);background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:var(--space-5) var(--space-4);display:flex;flex-direction:column;gap:var(--space-1)}.brand{font-family:var(--font-serif);font-size:16px;font-weight:700;letter-spacing:-.015em;padding:0 var(--space-2) var(--space-4);border-bottom:1px solid var(--line);margin-bottom:var(--space-2)}.nav a{display:flex;align-items:center;font-size:var(--text-md);text-decoration:none;color:var(--ink-2);padding:var(--space-2) var(--space-3);border-radius:4px;white-space:nowrap}.nav a:hover{color:var(--ink);background:#1f1b1608}.nav a.active{color:var(--blue);background:var(--blue-soft);font-weight:600;box-shadow:inset 2px 0 0 var(--blue)}.nav .avatar{margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--line);display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--ink-2)}.nav .avatar .face{width:24px;height:24px;border-radius:50%;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center;font-size:10px;font-weight:600}.nav .logout{margin-top:var(--space-2);background:none;border:none;color:var(--ink-3);font-size:var(--text-xs);cursor:pointer;text-align:left;padding:0 var(--space-2)}.nav .logout:hover{color:var(--red)}.kicker{width:24px;height:3px;background:var(--blue);margin-bottom:var(--space-3)}.btn{font-family:var(--font-sans);font-size:var(--text-md);height:30px;padding:0 var(--space-3);border:1px solid var(--line);border-radius:4px;background:var(--card);color:var(--ink);cursor:pointer;white-space:nowrap}.btn:hover{border-color:var(--ink-3)}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn.primary:hover{background:#2440b0}.btn.ai{color:var(--blue);border-color:var(--blue);background:var(--blue-soft)}.btn.ai:hover{background:#e2e8fa}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:var(--space-4)}.card h3{font-size:var(--text-md);font-weight:600;padding-bottom:var(--space-2);margin-bottom:var(--space-3);border-bottom:1px solid var(--line)}.flag{font-size:var(--text-xs);color:var(--ink-2);border:1px solid var(--line);background:var(--paper);border-radius:3px;padding:1px var(--space-2);white-space:nowrap}.flag.blue{color:var(--blue);border-color:var(--blue);background:var(--blue-soft);font-weight:600}.flag.green{color:var(--green);border-color:#cbdfd3;background:var(--green-soft)}.flag.yellow{color:var(--yellow);border-color:#e8d9b0;background:var(--yellow-soft)}.flag.red{color:var(--red);border-color:#e7c7c1;background:var(--red-soft)}.chip-btn{font-size:var(--text-md);color:var(--ink-2);background:var(--card);border:1px solid var(--line);border-radius:999px;padding:var(--space-1) var(--space-3);cursor:pointer;white-space:nowrap}.chip-btn .n{color:var(--ink-3);font-variant-numeric:tabular-nums;margin-left:4px}.chip-btn.active{color:var(--blue);border-color:var(--blue);background:var(--blue-soft);font-weight:600}.chip-btn.active .n{color:var(--blue)}.mono{font-family:var(--font-mono)}.num{font-variant-numeric:tabular-nums}.back{font-size:var(--text-md);color:var(--ink-2);text-decoration:none}.back:hover{color:var(--blue)}.notice{display:flex;align-items:center;gap:var(--space-2);background:var(--blue-soft);border:1px solid var(--blue-line);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--text-md);color:var(--blue)}.search{display:flex;align-items:center;gap:var(--space-2);background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:0 var(--space-3);height:36px}.search svg{flex:none;color:var(--ink-3)}.search input{flex:1;border:none;outline:none;background:none;font-family:var(--font-sans);font-size:var(--text-body);color:var(--ink)}.search input::placeholder{color:var(--ink-3)}.field label{display:block;font-size:var(--text-md);color:var(--ink-2);margin-bottom:var(--space-1)}.field input{width:100%;height:34px;padding:0 var(--space-3);border:1px solid var(--line);border-radius:4px;outline:none;background:var(--card);font-family:var(--font-sans);font-size:var(--text-body);color:var(--ink)}.field input:focus{border-color:var(--blue)}.field .err{font-size:var(--text-sm);color:var(--red);margin-top:var(--space-1)}.two-pane{display:grid;grid-template-columns:248px minmax(0,1fr);gap:var(--space-5);align-items:start}.folders{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:var(--space-3);position:sticky;top:var(--space-8)}.folders .treehead{font-size:var(--text-sm);color:var(--ink-3);padding:var(--space-1) var(--space-2) var(--space-2);display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);margin-bottom:var(--space-2)}.fnode{font-size:var(--text-md)}.frow{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);border-radius:4px;cursor:pointer;color:var(--ink);white-space:nowrap}.frow:hover{background:#1f1b160a}.frow .ficon{flex:none;color:var(--ink-3)}.frow .fname{flex:1;overflow:hidden;text-overflow:ellipsis}.frow .fname.hl{color:var(--ink)}.frow .fcount{font-size:var(--text-sm);color:var(--ink-3);font-variant-numeric:tabular-nums}.frow .fmenu{display:none;color:var(--ink-3);font-weight:700;padding:0 2px}.frow:hover .fmenu{display:block}.frow:hover .fcount{display:none}.fnode .fchildren{margin-left:var(--space-4);border-left:1px solid var(--line);padding-left:var(--space-2)}.fnode.root>.frow{font-weight:600}.fnode.sel>.frow{background:var(--blue-soft);color:var(--blue)}.fnode.drop>.frow{outline:2px solid var(--blue);outline-offset:-2px;background:var(--blue-soft);color:var(--blue);border-radius:4px}.fnode.drop>.frow .ficon,.fnode.drop>.frow .fcount{color:var(--blue)}.fnode.muted>.frow .fname{color:var(--ink-2)}.fnode.muted .pend{margin-left:var(--space-2);font-size:var(--text-xs);color:var(--yellow);background:var(--yellow-soft);border-radius:3px;padding:0 4px}.list{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-card)}.row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--line)}.row:last-child{border-bottom:none}.row .cb{flex:none;width:14px;height:14px;accent-color:var(--blue);cursor:pointer}.row .body{flex:1;min-width:0;cursor:pointer}.row .meta{display:flex;align-items:center;gap:var(--space-3);font-size:var(--text-sm);color:var(--ink-3);margin-bottom:2px;font-variant-numeric:tabular-nums}.row .meta .src{display:flex;align-items:center;gap:4px}.row .meta .sq{width:7px;height:7px;background:var(--blue);flex:none}.row .meta .sq.gray{background:var(--ink-3)}.row h3{font-family:var(--font-serif);font-size:var(--text-body);font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row .flags{display:flex;gap:var(--space-1);flex:none}.row.is-new{outline:1.5px solid var(--blue);outline-offset:-1.5px;border-radius:var(--radius);background:#2b4acb05}.row.dragging{opacity:.35;outline:1.5px dashed var(--blue);outline-offset:-1.5px;border-radius:var(--radius)}.pager{display:flex;justify-content:center;align-items:center;gap:var(--space-1);padding:var(--space-3)}.pager button{min-width:26px;height:26px;display:grid;place-items:center;font-size:var(--text-md);color:var(--ink-2);text-decoration:none;border-radius:4px;font-variant-numeric:tabular-nums;border:none;background:none;cursor:pointer}.pager button:hover{background:#1f1b160a;color:var(--ink)}.pager button.cur{color:var(--blue);font-weight:600;background:var(--blue-soft)}.pager .gap{color:var(--ink-3)}.reading{min-width:0}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-8)}.topbar .actions{display:flex;gap:var(--space-2)}.reading-grid{display:grid;grid-template-columns:minmax(0,1fr) 296px;gap:var(--space-8);align-items:start}.article-body{font-size:var(--text-body);line-height:1.8;max-width:65ch}.article-body p{margin-bottom:var(--space-5)}.article-body h2{font-family:var(--font-serif);font-size:var(--text-h2);font-weight:600;margin:var(--space-8) 0 var(--space-4);display:flex;align-items:center;gap:var(--space-2)}.article-body h2:before{content:"";width:5px;height:5px;background:var(--blue);flex:none}.article-body img{max-width:100%;border-radius:4px}.article-body blockquote{margin:var(--space-6) 0;padding-left:var(--space-4);border-left:3px solid var(--blue);font-family:var(--font-serif);font-size:var(--text-h2);line-height:1.5}.article-body ul,.article-body ol{margin:0 0 var(--space-5) var(--space-5)}.byline{font-size:var(--text-sm);color:var(--ink-2);font-variant-numeric:tabular-nums;padding-bottom:var(--space-5);border-bottom:1px solid var(--line);margin-bottom:var(--space-6)}.byline .src{color:var(--blue)}.editbox{width:100%;min-height:480px;font-family:var(--font-mono);font-size:var(--text-md);line-height:1.7;padding:var(--space-4);border:1px solid var(--line);border-radius:var(--radius);background:var(--card);color:var(--ink);outline:none;resize:vertical}.meta-col{display:flex;flex-direction:column;gap:var(--space-6);position:sticky;top:var(--space-8)}.kv{display:grid;grid-template-columns:auto 1fr;gap:var(--space-2) var(--space-3);font-size:var(--text-sm)}.kv dt{color:var(--ink-3)}.kv dd{color:var(--ink);text-align:right;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kv dd a{color:var(--blue);text-decoration:none}.status{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--ink-2);margin-bottom:var(--space-3)}.dot{width:6px;height:6px;border-radius:50%;background:var(--ink-3)}.linkish{background:none;border:none;color:var(--blue);font-size:var(--text-sm);cursor:pointer;padding:0}.chips{display:flex;gap:var(--space-1);margin-bottom:var(--space-3);flex-wrap:wrap}.chip{font-size:var(--text-xs);color:var(--blue);background:var(--blue-soft);border-radius:3px;padding:2px var(--space-2)}.timeline{position:relative;padding-left:var(--space-5)}.timeline:before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:1px;background:var(--line)}.tl-item{position:relative;padding:var(--space-3);border-radius:var(--radius);cursor:pointer}.tl-item:before{content:"";position:absolute;left:calc(-1 * var(--space-5) + 2px);top:18px;width:7px;height:7px;border-radius:50%;background:var(--ink-3)}.tl-item.on{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow-card)}.tl-item.on:before{background:var(--blue);outline:3px solid var(--blue-soft)}.tl-item .revline{display:flex;align-items:center;gap:var(--space-2);margin-bottom:2px}.tl-item .revno{font-size:var(--text-md);font-weight:600;font-variant-numeric:tabular-nums}.tl-item .when{font-size:var(--text-xs);color:var(--ink-3);margin-left:auto;font-variant-numeric:tabular-nums}.tl-item .note{font-size:var(--text-sm);color:var(--ink-2)}.diff{font-family:var(--font-mono);font-size:var(--text-md);line-height:1.9;padding:var(--space-3) 0}.dline{padding:0 var(--space-4);white-space:pre-wrap;word-break:break-all}.dline.add{background:var(--green-soft);color:var(--green)}.dline.del{background:var(--red-soft);color:var(--red);text-decoration:line-through;text-decoration-color:#b3402e66}.dline.ctx{color:var(--ink-3)}.diff-sign{display:inline-block;width:14px}.inbox-main{min-width:0;display:flex;flex-direction:column}.pagehead{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4)}.pagehead .lg{display:flex;align-items:center;gap:var(--space-4)}.pagehead h1{font-family:var(--font-serif);font-size:var(--text-title);font-weight:700;letter-spacing:-.02em}.pagehead .acts{display:flex;gap:var(--space-2)}.srcfilter{display:flex;gap:var(--space-2);align-items:center;font-size:var(--text-sm);color:var(--ink-3)}.srcfilter .lbl{flex:none}.toast{position:fixed;right:var(--space-6);bottom:var(--space-6);z-index:50;background:var(--ink);color:#fff;border-radius:var(--radius);padding:var(--space-3) var(--space-4);font-size:var(--text-md);box-shadow:0 8px 32px #1f1b1647;display:flex;align-items:center;gap:var(--space-2)}.toast .ok{color:#9fb4f5;font-weight:700}.fmenu button{background:none;border:none;color:var(--ink-3);cursor:pointer;font-size:var(--text-sm);padding:0 2px}.fmenu button:hover{color:var(--blue)}.auth-wrap{width:380px;margin:max(14vh,var(--space-10)) auto 0}.auth-brand{font-family:var(--font-serif);font-size:20px;font-weight:700;text-align:center;margin-bottom:var(--space-6);letter-spacing:-.015em}.auth-card{padding:var(--space-6)}.tabs{display:flex;border-bottom:1px solid var(--line);margin-bottom:var(--space-5)}.tabs a{flex:1;text-align:center;font-size:var(--text-body);padding:var(--space-2) 0;color:var(--ink-2);border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer}.tabs a.on{color:var(--ink);font-weight:600;border-bottom-color:var(--blue)}.hint{font-size:var(--text-sm);color:var(--ink-3);text-align:center;margin-top:var(--space-4)}.switch{text-align:center;font-size:var(--text-md);margin-top:var(--space-5);color:var(--ink-2)}.switch a{color:var(--blue);text-decoration:none;cursor:pointer}
