:root{--wx-green:#07c160;--wx-green-hover:#06ad56;--wx-green-soft:#07c16014;--bg-page:#f4f5f9;--bg-sidebar:#f7f7f7;--surface:#fff;--text:#353535;--text-secondary:#888;--muted:#9a9a9a;--border:#e7e7eb;--border-strong:#d9d9d9;--shadow-sm:0 1px 2px #0000000a;--shadow-card:0 2px 12px #0000000f;--radius:10px;--radius-sm:6px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", sans-serif}*,:before,:after{box-sizing:border-box}body{font-family:var(--font);background:var(--bg-page);color:var(--text);-webkit-font-smoothing:antialiased;min-height:100vh;margin:0;font-size:15px;line-height:1.65}::selection{background:var(--wx-green-soft);color:var(--text)}a{color:var(--wx-green);text-decoration:none}a:hover{color:var(--wx-green-hover)}#app{min-height:100vh}.layout-public{max-width:1120px;margin:0 auto;padding:0 1.25rem 3rem}.public-topbar{z-index:40;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);background:#ffffffeb;margin:0 -1.25rem 1.75rem;padding:0 1.25rem;position:sticky;top:0}.site-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;max-width:1120px;margin:0 auto;padding:1rem 0;display:flex}.brand{letter-spacing:-.02em;color:var(--text);font-size:1.2rem;font-weight:600}.brand:hover{color:var(--wx-green);text-decoration:none}.nav-links{flex-wrap:wrap;align-items:center;gap:.35rem 1rem;display:flex}.nav-links a{color:var(--text-secondary);padding:.35rem 0;font-size:.9rem}.nav-links a:hover,.nav-links a.router-link-active{color:var(--wx-green)}.search-bar{flex:1;gap:.5rem;min-width:200px;max-width:380px;display:flex}.search-bar input{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);flex:1;padding:.55rem .85rem;font-size:.9rem;transition:border-color .15s}.search-bar input:focus{border-color:var(--wx-green);box-shadow:0 0 0 2px var(--wx-green-soft);outline:none}.btn{border-radius:var(--radius-sm);cursor:pointer;background:var(--surface);color:var(--text);border:none;border:1px solid var(--border);justify-content:center;align-items:center;padding:.5rem 1.1rem;font-size:.9rem;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.btn:hover{border-color:var(--border-strong);background:#fafafa}.btn-primary{background:var(--wx-green);color:#fff;border-color:var(--wx-green)}.btn-primary:hover{background:var(--wx-green-hover);border-color:var(--wx-green-hover);color:#fff}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-ghost{background:0 0}.grid-sidebar{grid-template-columns:1fr;gap:1.5rem;display:grid}@media (width>=900px){.grid-sidebar{grid-template-columns:minmax(0,1fr) 268px;align-items:start}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);margin-bottom:1rem;padding:1.35rem 1.5rem}.post-list-item h2{margin:0 0 .4rem;font-size:1.15rem;font-weight:600}.post-list-item h2 a{color:var(--text)}.post-list-item h2 a:hover{color:var(--wx-green)}.post-list-item .meta{color:var(--muted);margin-bottom:.65rem;font-size:.82rem}.post-body{color:#4a4a4a;font-size:.98rem}.post-body img{border-radius:var(--radius-sm);max-width:100%;height:auto}.post-body pre{border-radius:var(--radius-sm);border:1px solid var(--border);background:#f6f8fa;padding:1rem 1.1rem;font-size:.88rem;line-height:1.5;overflow-x:auto}.side-block h3{letter-spacing:.04em;color:var(--text-secondary);text-transform:uppercase;margin:0 0 .65rem;font-size:.75rem;font-weight:600}.side-blogger__lines{color:var(--text);margin:0;padding:0;font-size:.88rem;line-height:1.55}.side-blogger__lines>div:not(:last-child){margin-bottom:.3rem}.side-blogger__lines dt{color:var(--text-secondary);margin:0;font-weight:600;display:inline}.side-blogger__lines dt:after{content:"："}.side-blogger__lines dd{margin:0;display:inline}.side-blogger__intro-row dt{margin:0;display:block}.side-blogger__intro-row dd.side-blogger__intro-dd{color:var(--text);text-align:justify;word-break:break-word;margin:.2rem 0 0;padding:0;font-size:.8rem;font-weight:400;line-height:1.65;display:block}.side-blogger__qr{text-align:center;margin-top:.75rem}.side-blogger__qr img{border-radius:var(--radius-sm);border:1px solid var(--border);background:#fff;width:168px;max-width:100%;height:auto;display:inline-block}.tag-cloud,.cat-list{flex-wrap:wrap;gap:.35rem .5rem;display:flex}.tag-pill{background:var(--bg-page);color:var(--text-secondary);border:1px solid #0000;border-radius:999px;padding:.25rem .65rem;font-size:.8rem;display:inline-block}.tag-pill:hover{color:var(--wx-green);background:var(--wx-green-soft);border-color:#07c16033;text-decoration:none}.site-footer{border-top:1px solid var(--border);color:var(--muted);text-align:center;margin-top:3rem;padding-top:1.5rem;font-size:.85rem}.site-footer__sep{opacity:.7;margin:0 .35rem}.site-footer__icp{color:var(--muted);text-decoration:none}.site-footer__icp:hover{color:var(--wx-green);text-decoration:underline}.comment-form textarea,.comment-form input{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);margin-bottom:.5rem;padding:.55rem .75rem;font-family:inherit}.comment-form textarea:focus,.comment-form input:focus{border-color:var(--wx-green);box-shadow:0 0 0 2px var(--wx-green-soft);outline:none}.comment-list{margin-top:1.25rem}.comment-item{border-bottom:1px solid var(--border);padding:.85rem 0;font-size:.94rem}.login-page{background:linear-gradient(165deg,#f4f5f9 0%,#e8f5ef 45%,#f4f5f9 100%);justify-content:center;align-items:center;min-height:100vh;padding:2rem 1rem;display:flex}.login-card{background:var(--surface);width:100%;max-width:400px;box-shadow:var(--shadow-card);border:1px solid var(--border);border-radius:12px;padding:2rem 2rem 1.75rem}.login-card h1{text-align:center;color:var(--text);margin:0 0 .35rem;font-size:1.35rem;font-weight:600}.login-card .sub{text-align:center;color:var(--muted);margin-bottom:1.5rem;font-size:.88rem}.login-card .wx-dot{background:linear-gradient(145deg,#07c160,#05a050);border-radius:12px;width:48px;height:48px;margin:0 auto 1rem;box-shadow:0 4px 14px #07c16059}.admin-shell{grid-template-columns:232px 1fr;min-height:100vh;display:grid}@media (width<=768px){.admin-shell{grid-template-columns:1fr}}.admin-sidebar{background:var(--bg-sidebar);border-right:1px solid var(--border);flex-direction:column;min-height:100vh;display:flex}@media (width<=768px){.admin-sidebar{border-right:none;border-bottom:1px solid var(--border);min-height:auto}}.admin-brand{border-bottom:1px solid var(--border);background:var(--surface);padding:1.25rem 1.25rem 1rem}.admin-brand-title{color:var(--text);align-items:center;gap:.5rem;margin:0;font-size:1.05rem;font-weight:600;display:flex}.admin-brand-badge{background:var(--wx-green);width:8px;height:8px;box-shadow:0 0 0 3px var(--wx-green-soft);border-radius:50%}.admin-brand-sub{color:var(--muted);margin:.35rem 0 0;font-size:.75rem}.admin-nav-scroll{flex:1;padding:.75rem .65rem 1rem;overflow-y:auto}.admin-nav-section{margin-bottom:1.25rem}.admin-nav-label{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;padding:.35rem .75rem .5rem;font-size:.72rem;font-weight:600}.admin-nav-item{border-radius:var(--radius-sm);color:var(--text-secondary);align-items:center;gap:.6rem;margin-bottom:2px;padding:.55rem .75rem;font-size:.9rem;transition:background .12s,color .12s;display:flex}.admin-nav-item:hover{color:var(--text);background:#0000000a;text-decoration:none}.admin-nav-item.router-link-active{background:var(--surface);color:var(--wx-green);box-shadow:var(--shadow-sm);border:1px solid var(--border);font-weight:500}.admin-nav-item .ic{background:0 0;border-radius:2px;flex-shrink:0;width:3px;height:14px}.admin-nav-item.router-link-active .ic{background:var(--wx-green)}.admin-sidebar-foot{border-top:1px solid var(--border);background:#fff9;margin-top:auto;padding:.85rem 1rem}.admin-sidebar-foot .btn-logout{justify-content:center;width:100%;font-size:.88rem}.admin-main{background:var(--bg-page);min-width:0;padding:0;overflow-x:auto}.admin-main-inner{max-width:1200px;padding:1.5rem 1.75rem 2.5rem}.admin-main h1{color:var(--text);margin:0 0 .5rem;font-size:1.35rem;font-weight:600}.table-wrap{background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow-sm);overflow-x:auto}table.data{border-collapse:collapse;width:100%;font-size:.88rem}table.data th{text-align:left;border-bottom:1px solid var(--border);color:var(--text-secondary);background:#fafafa;padding:.75rem 1rem;font-weight:600}table.data td{text-align:left;border-bottom:1px solid var(--border);color:var(--text);padding:.7rem 1rem}table.data tr:last-child td{border-bottom:none}table.data tbody tr:hover{background:#fafafa}.form-grid label{color:var(--text-secondary);margin-bottom:.3rem;font-size:.85rem;font-weight:500;display:block}.form-grid input,.form-grid select,.form-grid textarea{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);width:100%;max-width:720px;color:var(--text);margin-bottom:.9rem;padding:.5rem .75rem;font-family:inherit;font-size:.92rem}.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus{border-color:var(--wx-green);box-shadow:0 0 0 2px var(--wx-green-soft);outline:none}.form-grid textarea.code{min-height:320px;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:.85rem;line-height:1.5}.err{color:#fa5151;margin:.5rem 0;font-size:.9rem}.post-edit-page .form-grid label{color:var(--text-secondary);margin-bottom:.18rem;font-size:.76rem}.post-edit-page .form-grid input,.post-edit-page .form-grid select{max-width:none;margin-bottom:.55rem;padding:.38rem .55rem;font-size:.86rem}.post-edit-page .form-grid-meta{grid-template-columns:1fr;gap:0 1rem;display:grid}@media (width>=720px){.post-edit-page .form-grid-meta{grid-template-columns:1fr 1fr}}.post-edit-page .field-span-2{grid-column:1/-1}.post-edit-page .field-span-2 input,.post-edit-page .field-span-2 select{max-width:none}.post-edit-quill{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);width:100%;margin-bottom:.75rem;position:relative}.post-edit-quill .ql-editor img{vertical-align:bottom;max-width:100%;height:auto}.post-edit-quill .ql-toolbar{border:none;border-bottom:1px solid var(--border);border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:#fafafa}.post-edit-quill .ql-container{border-radius:0 0 var(--radius-sm) var(--radius-sm);border:none;font-size:.92rem}.post-edit-quill .ql-editor{min-height:380px;line-height:1.65}.post-edit-quill.intro-quill .ql-editor{min-height:120px}.md-editor-split{grid-template-columns:1fr;gap:.75rem;width:100%;margin-bottom:.75rem;display:grid}@media (width>=960px){.md-editor-split{grid-template-columns:1fr 1fr}}.md-editor-split textarea.code{width:100%;max-width:none;min-height:380px;margin-bottom:0}.md-preview-panel label{display:block}.md-preview-body{border:1px solid var(--border);border-radius:var(--radius-sm);background:#fafafa;min-height:380px;max-height:640px;padding:.65rem .85rem;font-size:.86rem;line-height:1.6;overflow-y:auto}.md-preview-body img{max-width:100%;height:auto}.md-preview-body pre{background:#fff;border-radius:4px;padding:.5rem .65rem;font-size:.8rem;overflow-x:auto}.tag-picker{border:1px solid var(--border);border-radius:var(--radius-sm);box-sizing:border-box;background:#fafafa;flex-wrap:wrap;align-content:flex-start;gap:.35rem .45rem;width:100%;max-height:240px;padding:.45rem .5rem;display:flex;overflow-y:auto}.tag-picker-item{color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid var(--border);background:var(--surface);white-space:nowrap;border-radius:4px;flex:0 auto;align-items:center;gap:.2rem;max-width:100%;padding:.15rem .4rem .15rem .25rem;font-size:.72rem;line-height:1.3;display:inline-flex}.tag-picker-item:hover{background:var(--wx-green-soft);border-color:#07c16059}.tag-picker-item.is-on{background:var(--wx-green-soft);color:var(--wx-green);border-color:#07c16073;font-weight:500}.tag-picker-item input{width:auto;accent-color:var(--wx-green);flex-shrink:0;margin:0}.tag-picker-hint{color:var(--muted);margin:0 0 .35rem;font-size:.72rem}
