*{margin:0;padding:0;box-sizing:border-box}:root{--bg: #FDF6E8;--bg-2: #F5EDDA;--bg-3: #FFFAF0;--border: rgba(184, 134, 11, .22);--text: #3D2B1F;--text-2: #6B5B4F;--accent: #B8860B;--accent-2: #7B5EA7;--danger: #b33030;--ok: #4A6741}body{font-family:Segoe UI,Microsoft YaHei,system-ui,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.6}.admin-shell{display:flex;min-height:100vh}.admin-sidebar{width:220px;flex-shrink:0;background:var(--bg-2);border-right:1px solid var(--border);display:flex;flex-direction:column}.admin-brand{padding:18px 20px;font-size:15px;font-weight:600;color:var(--accent);border-bottom:1px solid var(--border)}.admin-nav{flex:1;padding:12px 10px;display:flex;flex-direction:column;gap:2px}.admin-nav-item{display:block;padding:9px 14px;border-radius:8px;color:var(--text-2);text-decoration:none;font-size:14px;transition:background .15s,color .15s}.admin-nav-item:hover{background:var(--bg-3);color:var(--text)}.admin-nav-item.active{background:var(--bg-3);color:var(--accent);font-weight:500}.admin-sidebar-footer{padding:12px 10px;border-top:1px solid var(--border)}.admin-main{flex:1;min-width:0;display:flex;flex-direction:column}.admin-topbar{height:52px;border-bottom:1px solid var(--border);background:var(--bg-2);display:flex;align-items:center;justify-content:space-between;padding:0 20px}.admin-user{color:var(--text-2)}.admin-user strong{color:var(--text)}.admin-content{padding:24px;flex:1}.page-title{font-size:20px;font-weight:600;margin-bottom:4px}.page-subtitle{color:var(--text-2);margin-bottom:20px;font-size:13px}.card{background:var(--bg-3);border:1px solid var(--border);border-radius:12px;padding:20px;margin-bottom:16px;box-shadow:0 2px 10px #3d2b1f0f}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:8px;border:1px solid var(--border);background:var(--bg-3);color:var(--text);font-size:13px;cursor:pointer;transition:filter .15s,background .15s}.btn:hover{filter:brightness(.96)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fffaf0;font-weight:600}.btn-primary:hover{background:var(--accent-2);border-color:var(--accent-2)}.btn-danger{background:transparent;border-color:var(--danger);color:var(--danger)}.btn-sm{padding:4px 10px;font-size:12px}.btn-ghost{background:transparent}.form-row{margin-bottom:14px}.form-row label{display:block;margin-bottom:6px;color:var(--text-2);font-size:13px}.form-row input,.form-row textarea,.form-row select{width:100%;padding:8px 12px;border-radius:8px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:13px;font-family:inherit}.form-row input:focus,.form-row textarea:focus,.form-row select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px #b8860b26}.form-row textarea{resize:vertical;min-height:80px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.table-wrap{overflow-x:auto}table.admin-table{width:100%;border-collapse:collapse;background:var(--bg-3);border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:0 2px 10px #3d2b1f0f}.admin-table th,.admin-table td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--border);vertical-align:top}.admin-table th{background:var(--bg-2);color:var(--text-2);font-weight:500;font-size:12px;white-space:nowrap}.admin-table tr:last-child td{border-bottom:none}.admin-table tbody tr:hover{background:#b8860b0d}.admin-table .actions{white-space:nowrap}.state-loading,.state-error{padding:30px;text-align:center;color:var(--text-2)}.state-error{color:var(--danger)}.badge{display:inline-block;padding:2px 10px;border-radius:20px;font-size:12px;background:var(--bg-2);color:var(--text-2)}.badge-ok{background:#4a674126;color:var(--ok)}.badge-warn{background:#b8860b2e;color:var(--accent)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,#f5edda,#fdf6e8 55%,#f0e4cc)}.login-card{width:360px;background:var(--bg-3);border:1px solid var(--border);border-radius:16px;padding:32px;box-shadow:0 10px 40px #3d2b1f1f}.login-card h1{font-size:20px;margin-bottom:4px;color:var(--accent)}.login-card .login-sub{color:var(--text-2);font-size:13px;margin-bottom:24px}.error-text{color:var(--danger);font-size:13px;margin-top:10px}.success-text{color:var(--ok);font-size:13px;margin-top:10px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:20px}.stat-card{background:var(--bg-3);border:1px solid var(--border);border-radius:12px;padding:18px;box-shadow:0 2px 10px #3d2b1f0f}.stat-card .num{font-size:26px;font-weight:700;color:var(--accent)}.stat-card .label{color:var(--text-2);font-size:13px;margin-top:4px}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#3d2b1f80;display:flex;align-items:center;justify-content:center;z-index:100}.modal{width:640px;max-width:94vw;max-height:88vh;overflow-y:auto;background:var(--bg-3);border:1px solid var(--border);border-radius:14px;padding:24px;box-shadow:0 16px 60px #3d2b1f40}.modal h3{margin-bottom:16px}.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:18px}.pagination{display:flex;gap:8px;align-items:center;margin-top:16px}.pagination .page-info{color:var(--text-2);font-size:13px}.rich-toolbar{display:flex;flex-wrap:wrap;gap:2px;padding:6px 8px;border:1px solid var(--border);border-bottom:none;border-radius:8px 8px 0 0;background:var(--bg-2)}.rich-toolbar button{min-width:30px;height:30px;padding:0 8px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text-2);font-size:13px;cursor:pointer;transition:background .15s,color .15s}.rich-toolbar button:hover{background:var(--bg-3);color:var(--text)}.rich-toolbar button.active{background:var(--accent);color:#fffaf0}.rich-toolbar .sep{width:1px;margin:4px 6px;background:var(--border)}.rich-editor{border:1px solid var(--border);border-radius:0 0 8px 8px;background:var(--bg);padding:4px 14px;min-height:260px}.rich-editor .ProseMirror{outline:none;min-height:240px;padding:10px 0}.rich-editor .ProseMirror p{margin:0 0 10px}.rich-editor .ProseMirror h1,.rich-editor .ProseMirror h2,.rich-editor .ProseMirror h3{margin:16px 0 8px;line-height:1.3}.rich-editor .ProseMirror h1{font-size:24px}.rich-editor .ProseMirror h2{font-size:20px}.rich-editor .ProseMirror h3{font-size:16px}.rich-editor .ProseMirror ul,.rich-editor .ProseMirror ol{padding-left:24px;margin:0 0 10px}.rich-editor .ProseMirror blockquote{border-left:3px solid var(--accent);margin:0 0 10px;padding:4px 14px;color:var(--text-2);background:#b8860b0f;border-radius:0 6px 6px 0}.rich-editor .ProseMirror pre{background:var(--bg-2);border:1px solid var(--border);padding:10px 14px;border-radius:8px;overflow-x:auto;font-family:Consolas,monospace;font-size:13px;margin:0 0 10px}.rich-editor .ProseMirror a{color:var(--accent);text-decoration:underline}.rich-editor .ProseMirror img{max-width:100%;border-radius:8px;margin:6px 0}.rich-editor .ProseMirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--text-2);opacity:.6;float:left;height:0;pointer-events:none}.rich-editor .ProseMirror hr{border:none;border-top:1px solid var(--border);margin:14px 0}.editor-page{max-width:900px;margin:0 auto}.editor-page .page-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px;flex-wrap:wrap}.editor-page .editor-title{font-size:28px;font-weight:600;width:100%;padding:10px 14px;border-radius:10px;border:1px solid var(--border);background:var(--bg-3);color:var(--text)}.editor-page .editor-title:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px #b8860b26}.editor-page .editor-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.editor-page .rich-editor .ProseMirror{min-height:480px}.editor-page .rich-editor{min-height:520px}
