
:root{--paper:#fcfaf6;--surface:#fffefa;--ink:#263e54;--muted:#8a9195;--line:#e9e5dc;--accent:#294f5a;--soft:#eef1eb;--sidebar:#f4f2ec;--danger:#a15b4e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--paper);font-size:14px;line-height:1.6}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit;color:inherit}button,a{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-decoration:none}button{border:0;background:none}button:disabled{opacity:.4;cursor:not-allowed}input,textarea,select{outline:none}input:focus,textarea:focus,select:focus{border-color:#9baea8!important}button:focus-visible,a:focus-visible{outline:2px solid #8aa59a;outline-offset:3px}[hidden]{display:none!important}.sidebar{position:fixed;inset:0 auto 0 0;width:224px;background:var(--sidebar);border-right:1px solid var(--line);padding:30px 20px;display:flex;flex-direction:column}.brand{display:flex;gap:12px;align-items:center;padding:0 12px;font-size:18px;letter-spacing:.08em;font-weight:600}.brand-mark{display:grid;place-items:center;width:39px;height:39px;border-radius:12px;background:var(--ink);color:#fbfaf4;font-family:serif;font-size:21px;font-weight:400}.brand small{display:block;font-size:10px;letter-spacing:.16em;font-weight:400;color:var(--muted);margin-top:1px}.space-label{font-size:10px;letter-spacing:.13em;color:var(--muted);margin:48px 16px 13px}.nav-item{display:flex;align-items:center;gap:12px;width:100%;padding:12px 16px;margin-bottom:5px;border-radius:8px;text-align:left;color:#768086}.nav-item span{font-size:19px;width:20px}.nav-item b{margin-left:auto;background:#e1e6db;font-size:10px;padding:0 6px;border-radius:4px;font-weight:500}.nav-item:hover{background:#eaece4}.nav-item.active{color:var(--ink);background:#e5eadd;font-weight:600}.sidebar-bottom{margin-top:auto;padding:0 12px}.sidebar-bottom>a{display:flex;justify-content:space-between;margin-bottom:23px;font-size:12px}.local-indicator{font-size:11px;padding-top:20px;border-top:1px solid var(--line)}.local-indicator i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#87a28a;margin-right:6px}.local-indicator small{display:block;margin-top:4px;color:var(--muted);font-size:10px}.workspace{margin-left:224px;min-height:100vh}.topbar{height:78px;padding:0 44px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.breadcrumb{font-size:12px;color:var(--muted)}.breadcrumb span{padding:0 12px;color:#c7c8bd}.breadcrumb strong{font-weight:500;color:var(--ink)}.topbar-right{display:flex;align-items:center;gap:21px}.today{font-size:11px;color:var(--muted)}.user-avatar{display:grid;place-items:center;background:#e7e3d5;border:3px solid var(--surface);border-radius:50%;width:33px;height:33px;font-family:Georgia,serif;font-size:15px}.view{padding:40px 44px;max-width:1460px;margin:auto}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:32px}.eyebrow{font-size:9px;letter-spacing:.18em;color:#a4a291;margin-bottom:10px}h1{font-family:Georgia,"Noto Serif SC","Songti SC",SimSun,serif;font-size:29px;font-weight:500;letter-spacing:.035em;line-height:1.4;margin:0 0 8px}.page-heading p{font-size:12px;color:var(--muted);margin:0}h3{font-size:14px;font-weight:600;margin:0}.primary,.secondary{display:inline-flex;align-items:center;justify-content:center;border-radius:6px;padding:10px 17px;font-size:12px;white-space:nowrap;gap:6px}.primary{color:#fffdf8;background:var(--accent);box-shadow:0 3px 5px #243d4810}.primary:hover{background:#1d414a}.secondary{background:var(--surface);border:1px solid var(--line)}.secondary:hover{background:var(--soft)}.quiet{padding:7px 10px;color:var(--muted);font-size:12px}.stats{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:10px;background:var(--surface);padding:24px 0;margin-bottom:33px}.stats>div{padding:0 27px;border-right:1px solid var(--line)}.stats>div:last-child{border:0}.stats span{display:block;color:#7b8586;font-size:11px}.stats strong{display:block;font-family:Georgia,serif;line-height:1.5;font-weight:400;font-size:33px;margin:6px 0 4px}.stats small{display:block;font-size:10px;color:#a0a69f}.list-toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:17px}.tabs{display:flex;gap:23px}.tabs button{color:var(--muted);font-size:12px;padding:7px 0 10px;border-bottom:2px solid transparent}.tabs .selected{border-color:var(--accent);color:var(--ink);font-weight:600}.search{display:flex;align-items:center;gap:7px;color:var(--muted);border:1px solid var(--line);padding:5px 11px;border-radius:6px;background:var(--surface)}.search input{width:185px;background:transparent;border:0;font-size:11px}.article-list{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--surface)}.article-row{display:flex;align-items:center;gap:20px;padding:20px 24px;border-bottom:1px solid var(--line);min-height:90px}.article-row:last-child{border:0}.article-row:hover{background:#f7f7f0}.date-block{width:52px;flex-shrink:0;line-height:1.3}.date-block strong{font-family:Georgia,serif;font-weight:400;font-size:23px}.date-block small{display:block;font-size:10px;color:var(--muted);margin-top:6px;letter-spacing:.06em}.article-main{min-width:0;flex:1}.article-title{display:flex;gap:10px;align-items:center;min-width:0}.article-title button{padding:0;font-size:14px;font-weight:500;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.article-meta{display:flex;gap:15px;margin-top:7px;font-size:10px;color:var(--muted)}.article-meta span:not(:first-child):before{content:'·';margin-right:15px;color:#b7baaf}.badge{display:inline-block;border-radius:4px;padding:2px 6px;background:#edf0e5;color:#738365;font-size:9px;white-space:nowrap}.badge.draft{background:#f2e9d8;color:#a38b56}.badge.local{background:#edf0f2;color:#81909a}.row-actions{display:flex;gap:12px;flex-shrink:0;font-size:11px}.row-actions button{color:var(--muted);padding:3px 0}.row-actions button:hover{color:var(--ink)}.pagination{display:flex;justify-content:space-between;align-items:center;margin-top:17px;color:var(--muted);font-size:10px}.pagination>div{display:flex;align-items:center;gap:12px}.empty{text-align:center;padding:65px 20px;color:var(--muted);font-size:12px}.editor-heading{display:flex;align-items:center;gap:14px;margin-bottom:22px}.editor-actions{display:flex;gap:8px;margin-left:auto}.save-status{font-size:10px;color:var(--muted)}.editor-grid{display:grid;grid-template-columns:minmax(0,1fr) 242px;gap:22px}.writing-panel{border:1px solid var(--line);border-radius:9px;background:var(--surface);overflow:hidden;display:flex;flex-direction:column}.title-input{font-family:Georgia,SimSun,serif;font-size:25px;padding:26px 25px;border:0;width:100%;background:transparent}.writing-tools{display:flex;gap:3px;padding:9px 16px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);flex-wrap:wrap}.writing-tools button{font-size:11px;padding:4px 8px;color:#839087;border-radius:3px}.writing-tools button:hover{background:var(--soft)}#edit-body{width:100%;min-height:calc(100vh - 380px);resize:vertical;flex:1;padding:24px 25px;border:0;background:transparent;font:13px/1.9 ui-monospace,SFMono-Regular,Consolas,"Microsoft YaHei",monospace}.writing-footer{display:flex;justify-content:space-between;padding:12px 20px;color:var(--muted);font-size:10px;border-top:1px solid var(--line)}.post-options{padding:22px 19px;background:#f6f4ee;border:1px solid var(--line);border-radius:9px;align-self:start}.post-options h3{margin-bottom:22px}.post-options label{display:block;margin-bottom:16px;font-size:11px;color:#7a8589}.post-options input,.post-options select,.post-options textarea{display:block;width:100%;border:1px solid var(--line);padding:8px 9px;border-radius:5px;background:var(--surface);font-size:11px;margin-top:7px;resize:vertical}.post-options small{font-size:9px;color:var(--muted)}.file-info{display:flex;flex-direction:column;gap:5px;border-top:1px solid var(--line);padding-top:17px;overflow-wrap:anywhere;font-size:10px}.file-info>span{color:var(--muted);margin-top:6px}.file-info a{font-size:10px;text-decoration:underline;text-underline-offset:3px}.option-note{color:var(--muted);font-size:10px;margin-top:20px;line-height:1.9}.danger-link{color:var(--danger);font-size:10px;padding:18px 0 2px;display:block}.post-options>small{display:block;font-size:9px}.compact{margin-bottom:24px}.comment-frame-wrap{background:white;border:1px solid var(--line);border-radius:9px;overflow:hidden}.comment-frame-wrap iframe{display:block;width:100%;height:calc(100vh - 300px);min-height:520px;border:0}.muted-note{font-size:11px;color:var(--muted);line-height:1.8}.settings-card{background:var(--surface);border:1px solid var(--line);padding:26px;border-radius:9px;margin-bottom:18px;max-width:900px}.settings-card h3{margin-bottom:18px}.settings-card dl{margin:0;display:grid;grid-template-columns:100px 1fr;font-size:12px;gap:15px}.settings-card dt{color:var(--muted)}.settings-card dd{margin:0;overflow-wrap:anywhere}.settings-card li,.settings-card p{font-size:12px;color:#7c888c;line-height:2}.settings-card li{margin-bottom:10px}code{font-family:Consolas,monospace;font-size:11px}dialog{background:var(--paper);color:var(--ink);border:1px solid var(--line);border-radius:12px;padding:24px;width:min(900px,94vw);box-shadow:0 15px 80px #13273522}dialog::backdrop{background:#243c4c66;backdrop-filter:blur(3px)}.dialog-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}#preview-frame{width:100%;height:70vh;border:0;background:var(--surface);border-radius:6px}#publish-log{height:45vh;overflow:auto;white-space:pre-wrap;background:#26383d;color:#e4eddf;padding:20px;border-radius:7px;font-size:11px;line-height:1.8}#toast{position:fixed;bottom:26px;left:calc(50% + 112px);transform:translateX(-50%);background:#29474d;color:#fffdf8;padding:12px 22px;border-radius:7px;box-shadow:0 6px 24px #1f31352b;max-width:85vw;font-size:12px;z-index:10}#toast.error{background:#8c5147}@media(min-width:1600px){.view{padding-top:52px}.article-row{padding:23px 28px}}@media(max-width:1050px){.sidebar{width:185px;padding:27px 13px}.workspace{margin-left:185px}.view{padding:28px}.topbar{padding:0 28px}.stats>div{padding:0 18px}.editor-grid{grid-template-columns:minmax(0,1fr) 210px}.row-actions{gap:9px}.brand{font-size:16px;padding:0 7px}.brand-mark{width:33px;height:33px}#toast{left:calc(50% + 92px)}}@media(max-width:740px){.sidebar{position:static;width:100%;height:auto;padding:15px;flex-direction:row;align-items:center;justify-content:space-between;gap:10px}.brand small,.space-label,.sidebar-bottom,.nav-item b,.nav-item span{display:none}.brand{font-size:14px;padding:0;gap:7px}.brand-mark{width:29px;height:29px;font-size:16px}.sidebar nav{display:flex;gap:3px}.nav-item{padding:7px;font-size:11px;margin:0;width:auto}.workspace{margin-left:0}.topbar{height:51px;padding:0 19px}.view{padding:25px 18px}.today{font-size:9px}.user-avatar{width:27px;height:27px;font-size:12px}.eyebrow{font-size:8px}h1{font-size:24px}.page-heading{align-items:flex-start;margin-bottom:24px}.page-heading p{font-size:11px;max-width:230px}.primary,.secondary{font-size:11px;padding:9px 12px}.stats{grid-template-columns:repeat(2,1fr);padding:10px 0;gap:15px;margin-bottom:20px}.stats>div{padding:8px 19px}.stats>div:nth-child(2){border:0}.stats strong{font-size:27px;margin:2px 0}.stats small{font-size:9px}.list-toolbar{align-items:stretch;flex-direction:column;gap:12px}.tabs{gap:24px}.search input{width:100%}.article-row{padding:18px 14px;gap:14px;flex-wrap:wrap}.date-block{width:58px}.date-block strong{font-size:20px}.article-title button{font-size:13px}.article-meta{gap:8px;font-size:9px}.article-meta span:not(:first-child):before{margin-right:8px}.row-actions{margin-left:72px;margin-top:-6px}.badge{font-size:8px}.article-title{flex-wrap:wrap;gap:6px}.pagination{align-items:flex-start;font-size:9px}.pagination>div{gap:1px}.pagination button{font-size:10px;padding:5px}.editor-heading{flex-wrap:wrap;gap:5px}.editor-actions{gap:5px;width:100%;justify-content:flex-end}.editor-grid{grid-template-columns:1fr}.post-options{order:2}.title-input{font-size:22px;padding:20px}.writing-footer{font-size:9px;gap:15px}#edit-body{min-height:400px;padding:20px}.settings-card{padding:20px}.settings-card dl{grid-template-columns:1fr;gap:4px}.settings-card dd{margin-bottom:12px}.comment-frame-wrap iframe{min-height:620px}.compact{flex-wrap:wrap}#toast{left:50%}.page-heading>button{margin-top:10px}.brand-mark{flex-shrink:0}}
@media(prefers-color-scheme:dark){:root{--paper:#182329;--surface:#1c2a30;--ink:#d6e0dd;--muted:#8d9e9f;--line:#334047;--accent:#50756f;--soft:#2e4142;--sidebar:#1b282d}.nav-item.active{background:#31433d}.nav-item:hover{background:#283a3a}.article-row:hover{background:#243338}.post-options{background:#202f34}.stats small{color:#819591}.badge{background:#30473a;color:#aac0a0}.badge.draft{background:#4a4231;color:#cfb677}.badge.local{background:#34434a;color:#afbdc2}.user-avatar{background:#44574f}.nav-item b{background:#425747}.primary:hover{background:#63877d}}
.page-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.page-card{position:relative;display:block;text-align:left;background:var(--surface);border:1px solid var(--line);padding:24px;border-radius:9px;color:var(--ink)}.page-card:hover{border-color:#a3b2a0}.page-card h3{font-size:16px;margin:6px 0 9px}.page-card p{font-size:11px;color:var(--muted);margin-bottom:18px}.page-arrow{position:absolute;right:24px;bottom:24px;color:var(--muted)}.page-form .settings-card{max-width:none}.page-form label,#comment-login label{display:block;font-size:12px;color:var(--muted);margin-bottom:15px}.page-form input,#comment-login input:not([type=checkbox]),.comment-toolbar input,.comment-toolbar select,.source-editor textarea,#reply-content{display:block;width:100%;border:1px solid var(--line);background:var(--surface);padding:10px;border-radius:5px;font-size:12px;margin-top:7px}.field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 18px}.rich-editor{min-height:130px;border:1px solid var(--line);border-radius:5px;background:var(--paper);padding:18px;outline:none;font-size:14px;line-height:1.9;overflow-wrap:anywhere}.rich-editor:focus{border-color:#94ad9c}.rich-editor a{color:#648b7e;text-decoration:underline}.about-item{margin-bottom:14px}.about-item .rich-editor{min-height:70px}.about-item>.quiet{font-size:10px}.entry-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.entry-heading>div{display:flex;gap:8px}.entry-heading .danger-link{padding:0}.source-editor textarea{font:12px/1.8 Consolas,monospace;min-height:500px;resize:vertical}.comment-toolbar{display:flex;gap:10px;align-items:center;margin-bottom:20px;flex-wrap:wrap}.comment-toolbar select,.comment-toolbar input{width:auto;max-width:240px;margin:0}.comment-toolbar input{flex:1;min-width:140px}.comment-card{padding:23px;border-bottom:1px solid var(--line)}.comment-card:last-child{border:0}.comment-heading{display:flex;align-items:center;gap:12px;font-size:13px;flex-wrap:wrap}.comment-heading time{font-size:10px;color:var(--muted)}.comment-route{font-size:10px;color:var(--muted);margin-top:4px}.managed-comment-content{font-size:13px;line-height:1.9;margin:14px 0;overflow-wrap:anywhere}.managed-comment-content img{width:auto;max-width:100%;max-height:160px;vertical-align:middle}.managed-comment-content img[alt]:not([alt='']){width:24px;height:24px;max-height:24px;margin:0 2px;vertical-align:text-bottom}.managed-comment-content a{text-decoration:underline}.managed-comment-content p{margin:4px 0}.comment-actions{display:flex;gap:15px;align-items:center;flex-wrap:wrap}.comment-actions button{font-size:10px;color:var(--muted);padding:3px 0}.comment-actions .danger-link{color:var(--danger)}#comment-login{max-width:510px}#comment-login .check-line{display:flex;align-items:center;gap:8px;margin-top:18px;color:var(--ink)}#comment-login .check-line input{margin:0}#comment-login details{font-size:11px;color:var(--muted);margin:12px 0}#comment-login details label{margin-top:14px}#comment-login-message{display:block;margin-top:10px}.reply-actions{display:flex;justify-content:flex-end;margin-top:15px}#reply-context{font-size:12px;color:var(--muted);border-left:3px solid var(--line);margin:10px 0;padding-left:15px}#reply-content{resize:vertical;min-height:160px}@media(max-width:740px){.page-grid{grid-template-columns:1fr}.field-grid{grid-template-columns:1fr}.sidebar{flex-wrap:wrap}.sidebar nav{flex-wrap:wrap}.comment-toolbar select{max-width:100%;flex:1}.page-card{padding:20px}.page-form .settings-card{padding:18px}.source-editor textarea{font-size:11px}}

.stats>.stat-card{padding:0 27px;text-align:left;border-right:1px solid var(--line);border-radius:0;color:var(--ink)}.stats>.stat-card:last-child{border-right:0}.stats>.stat-card:hover,.stats>.stat-card.selected{background:var(--soft)}.stats>.stat-card:focus-visible{outline:2px solid #8aa59a;outline-offset:-3px}.article-list{scroll-margin-top:18px}@media(max-width:1050px){.stats>.stat-card{padding:0 18px}}@media(max-width:740px){.stats>.stat-card{padding:8px 19px}.stats>.stat-card:nth-child(2){border-right:0}}

/* Rich standalone-page editor: mirrors article toolbar without changing structured forms. */
.rich-tools{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 8px}.rich-tools button{min-height:32px;padding:4px 9px;font-size:12px}.rich-editor img{max-width:100%;height:auto}.rich-editor h2,.rich-editor h3{line-height:1.45}.rich-editor pre,.rich-editor code{max-width:100%;overflow:auto}.rich-editor pre{padding:12px;background:var(--soft);border-radius:5px;white-space:pre-wrap}.rich-editor blockquote{margin-left:0;padding-left:14px;border-left:3px solid var(--accent);color:var(--muted)}

/* Boot state: keep every view hidden until the hashed route is restored. */
.boot-status{display:flex;align-items:center;gap:12px;padding:34px 44px;max-width:1460px;margin:auto;color:var(--muted);font-size:12px}
.boot-status.error{color:var(--danger)}
.boot-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);opacity:.55;animation:boot-pulse 1.15s ease-in-out infinite}
.boot-status.error .boot-dot{background:var(--danger);animation:none}
.boot-status .secondary{margin-left:4px}
body.booting .view{display:none!important}
@keyframes boot-pulse{0%,100%{opacity:.32;transform:scale(.85)}50%{opacity:.85;transform:scale(1)}}
.logout-button{white-space:nowrap}
@media(max-width:740px){.boot-status{padding:26px 22px}.topbar-right{gap:10px}.logout-button{padding:6px 7px;font-size:11px}}
@media(prefers-reduced-motion:reduce){.boot-dot{animation:none;opacity:.65}}
