*,*:before,*:after{box-sizing:border-box}body,h1,h2,h3,p,ul,ol,figure{margin:0}ul,ol{padding:0;list-style:none}:root{--ink: #1D1A18;--muted: #6D6864;--line: #E5E2DF;--bg: #F8F6F5;--brand: #D55C13;--brand-hover: #C64200;--danger: #C22826;--ok: #007F47}body{font-family:system-ui,-apple-system,PingFang SC,sans-serif;background:var(--bg);color:var(--ink);font-size:14px;-webkit-font-smoothing:antialiased}a{color:var(--brand-hover);text-decoration:none}a:hover{text-decoration:underline}.layout{display:flex;min-height:100vh}.sidebar{width:190px;flex-shrink:0;background:#fff;border-right:1px solid var(--line);padding:16px 12px;display:flex;flex-direction:column}.brand{font-weight:700;padding:6px 10px 16px}.nav a{display:block;padding:8px 10px;border-radius:6px;color:var(--muted);margin-bottom:2px}.nav a:hover{background:#f4f4f5;color:var(--ink);text-decoration:none}.nav a.active{background:#fdf0e8;color:var(--brand-hover);font-weight:500}.content{flex:1;min-width:0;padding:24px 28px}.page-head{display:flex;align-items:center;gap:12px;margin-bottom:20px}.page-head h1{font-size:20px}.page-head .spacer{flex:1}.card{background:#fff;border:1px solid var(--line);border-radius:10px}.card+.card{margin-top:12px}.row>.card+.card{margin-top:0}.card-pad{padding:16px}table{width:100%;border-collapse:collapse;background:#fff}td>a:not(.btn){display:block;padding:4px 0}th,td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--line)}th{font-weight:500;color:var(--muted);font-size:13px;background:#fafafa}tr:last-child td{border-bottom:0}.table-wrap{border:1px solid var(--line);border-radius:10px;overflow:hidden}button,.btn{font:inherit;cursor:pointer;border-radius:6px;padding:7px 14px;border:1px solid var(--line);background:#fff;color:var(--ink)}button:hover{border-color:#a1a1aa}button:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn-primary:hover{opacity:.9;border-color:var(--brand)}.btn-danger{color:var(--danger)}.btn-sm{padding:4px 10px;font-size:13px}label{display:block;margin-bottom:12px}label>span{display:block;margin-bottom:4px;color:var(--muted);font-size:13px}input,textarea,select{font:inherit;width:100%;padding:7px 10px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink)}input:focus,textarea:focus,select:focus{outline:2px solid #F5C9AC;border-color:var(--brand)}textarea{min-height:90px;resize:vertical;font-family:ui-monospace,monospace;font-size:13px}.row{display:flex;gap:12px}.row>*{flex:1}.check{display:flex;align-items:center;gap:6px}.check input{width:auto}.muted{color:var(--muted)}.small{font-size:13px}.tag{display:inline-block;padding:1px 7px;border-radius:4px;font-size:12px;background:#f4f4f5;color:#6d6d76}.tag-ok{background:#dcfce7;color:#15803d}.tag-draft{background:#fef3c7;color:#9e5f04}.alert{padding:10px 14px;border-radius:8px;margin-bottom:14px;font-size:13px;white-space:pre-wrap}.alert-err{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.alert-ok{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;padding:20px;z-index:50}.modal{background:#fff;border-radius:12px;padding:20px;width:100%;max-width:680px;max-height:88vh;overflow-y:auto}.modal h2{font-size:16px;margin-bottom:14px}.modal-foot{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.login-wrap{display:flex;align-items:center;justify-content:center;min-height:100vh}.login-box{width:320px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:24px}code.inline{background:#f4f4f5;padding:1px 5px;border-radius:4px;font-size:13px}pre.block{background:#18181b;color:#fafafa;padding:14px;border-radius:8px;overflow-x:auto;font-size:12px;line-height:1.6}.empty{padding:48px;text-align:center;color:var(--muted)}.edit-split{display:flex;flex-direction:column;gap:8px}.md-preview{border:1px solid var(--line);border-radius:8px;padding:10px 14px;background:#fff;font-size:14px;line-height:1.75;color:var(--ink);max-height:340px;overflow-y:auto}.md-preview.muted{color:var(--muted);background:var(--bg);font-style:italic}.prose h1,.prose h2,.prose h3,.prose h4{font-weight:700;margin:.7em 0 .35em;line-height:1.35}.prose h1{font-size:1.3em}.prose h2{font-size:1.1em}.prose h3{font-size:1em}.prose p{margin:.5em 0}.prose ul,.prose ol{margin:.5em 0;padding-left:1.5em;list-style:revert}.prose ol{list-style:decimal}.prose li{margin:.25em 0}.prose strong{font-weight:700}.prose em{font-style:italic}.prose code{background:#f1f1f4;padding:.12em .34em;border-radius:4px;font-size:.9em;font-family:ui-monospace,monospace}.prose pre{background:#1e1e2e;color:#e5e5ee;padding:12px 14px;border-radius:8px;overflow-x:auto;margin:.6em 0}.prose pre code{background:none;padding:0;color:inherit;font-size:.88em;line-height:1.6}.prose blockquote{border-left:3px solid var(--line);padding-left:12px;color:var(--muted);margin:.5em 0}.prose a{color:var(--brand-hover);text-decoration:underline}.prose hr{border:none;border-top:1px solid var(--line);margin:1em 0}.prose table{border-collapse:collapse;margin:.6em 0}.prose th,.prose td{border:1px solid var(--line);padding:4px 8px}@media(max-width:720px){.layout{flex-direction:column}.sidebar{width:auto;flex-direction:row;align-items:center;gap:8px;border-right:0;border-bottom:1px solid var(--line);padding:8px 12px}.brand{padding:0 4px 0 0;white-space:nowrap}.nav{display:flex;gap:2px;flex:1;min-width:0;overflow-x:auto;-ms-overflow-style:none;scrollbar-width:none}.nav::-webkit-scrollbar{display:none}.nav a{white-space:nowrap;padding:6px 9px;margin-bottom:0}.nav-spacer{display:none}.content{padding:16px 14px}.table-wrap{overflow-x:auto}.table-wrap table{min-width:560px}.modal{padding:12px}.row{flex-direction:column}}.prose pre{background:#1c1f25;color:#eae7e4;padding:12px 14px;border-radius:8px;overflow-x:auto;position:relative}.prose pre code{background:none;padding:0;color:inherit}.prose pre .hljs-keyword,.prose pre .hljs-literal,.prose pre .hljs-selector-tag{color:#ff939c}.prose pre .hljs-string,.prose pre .hljs-meta-string,.prose pre .hljs-regexp{color:#91d993}.prose pre .hljs-number,.prose pre .hljs-symbol{color:#f5c076}.prose pre .hljs-comment,.prose pre .hljs-quote{color:#8c929f;font-style:italic}.prose pre .hljs-title,.prose pre .hljs-title.function_,.prose pre .hljs-section{color:#8dd0ff;color:oklch(.83 .11 240)}.prose pre .hljs-type,.prose pre .hljs-title.class_{color:#82e1e0}.prose pre .hljs-built_in,.prose pre .hljs-meta,.prose pre .hljs-attr,.prose pre .hljs-attribute{color:#d4bdff;color:oklch(.84 .1 300)}.prose pre .hljs-variable,.prose pre .hljs-params,.prose pre .hljs-property{color:#d7deec}.prose pre[data-run]:after{content:"前台可运行";position:absolute;top:6px;right:8px;font-size:11px;color:#9ea5b2;background:#282b31;padding:2px 7px;border-radius:4px}
