:root{--bg:#f6f7f9;--surface:#fff;--text:#17202a;--muted:#697586;--line:#e5e9ef;--accent:#5b55c8;--accent-soft:#eeedfe;--danger:#b44242;--success:#24745b}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:Inter,PingFang SC,Microsoft YaHei,sans-serif;font-size:14px}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}button{cursor:pointer}.shell{grid-template-columns:220px 1fr;min-height:100vh;display:grid}.sidebar{color:#e8e8f4;background:#17182a;height:100vh;padding:24px 16px;position:sticky;top:0}.brand{padding:0 10px 24px;font-size:20px;font-weight:600}.brand small{color:#9ea1bd;margin-top:6px;font-size:11px;font-weight:400;display:block}.nav{gap:6px;display:grid}.nav a{color:#bfc2d8;border-radius:8px;padding:11px 12px}.nav a:hover{color:#fff;background:#26283e}.user{color:#aeb1c8;border-top:1px solid #30324a;padding:12px 10px;font-size:12px;position:absolute;bottom:22px;left:16px;right:16px}.user button{color:#d6d7e5;background:0 0;border:1px solid #40435f;border-radius:6px;margin-top:10px;padding:6px 10px}.main{min-width:0;padding:28px 34px}.topbar{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.topbar h1{margin:0;font-size:24px;font-weight:600}.muted{color:var(--muted)}.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:18px}.grid{gap:16px;display:grid}.stats{grid-template-columns:repeat(4,minmax(0,1fr))}.stat b{margin-top:8px;font-size:26px;display:block}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.between{justify-content:space-between}.btn{border:1px solid var(--line);color:var(--text);background:#fff;border-radius:8px;padding:9px 14px}.btn:hover{border-color:#b9b6df}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.danger{color:var(--danger)}.btn:disabled{opacity:.5;cursor:not-allowed}.field{gap:6px;margin-bottom:12px;display:grid}.field label{color:var(--muted);font-size:12px}input,textarea,select{border:1px solid var(--line);color:var(--text);background:#fff;border-radius:8px;width:100%;padding:10px 11px}textarea{resize:vertical;line-height:1.75}.list{gap:10px;display:grid}.list-item{border:1px solid var(--line);background:#fff;border-radius:10px;padding:14px}.list-item:hover{border-color:#c4c1e6}.badge{color:#586174;background:#f0f2f5;border-radius:999px;align-items:center;padding:3px 9px;font-size:11px;display:inline-flex}.badge.purple{background:var(--accent-soft);color:#4a43a7}.badge.green{color:var(--success);background:#e7f5ef}.badge.red{color:var(--danger);background:#fcecec}.tabs{border-bottom:1px solid var(--line);gap:4px;margin-bottom:18px;display:flex;overflow:auto}.tabs button{color:var(--muted);white-space:nowrap;background:0 0;border:0;padding:12px 15px}.tabs button.active{color:var(--accent);border-bottom:2px solid var(--accent)}.workbench{grid-template-columns:250px minmax(0,1fr) 320px;align-items:start;gap:16px;display:grid}.chapter-list button{text-align:left;background:0 0;border:0;border-radius:7px;width:100%;padding:10px}.chapter-list button.active{background:var(--accent-soft);color:#3c3489}.editor{border:0;outline:0;width:100%;min-height:520px;padding:4px;font-family:Noto Serif SC,Songti SC,serif;font-size:16px}.panel-title{margin:0 0 12px;font-weight:600}.error{color:#8f3636;background:#fcecec;border-radius:8px;margin-bottom:12px;padding:10px 12px}.notice{color:#315b86;background:#edf4fd;border-radius:8px;margin-bottom:12px;padding:10px 12px}.login-page{background:linear-gradient(135deg,#f4f3fc,#eef5f8);place-items:center;min-height:100vh;display:grid}.login-card{border:1px solid var(--line);background:#fff;border-radius:16px;width:400px;padding:34px}.login-card h1{margin:0 0 8px;font-size:26px}.login-card .btn{width:100%;margin-top:8px}.table{border-collapse:collapse;width:100%}.table th,.table td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:11px 8px}.table th{color:var(--muted);font-size:12px;font-weight:500}.code{word-break:break-all;font-family:ui-monospace,monospace;font-size:12px}.event{border-left:2px solid #d9d5f3;margin-bottom:12px;padding:4px 0 4px 12px}.empty{text-align:center;color:var(--muted);padding:40px 12px}@media (max-width:1100px){.workbench{grid-template-columns:220px 1fr}.workbench>.card:last-child{grid-column:1/-1}.stats{grid-template-columns:repeat(2,1fr)}}@media (max-width:760px){.shell{grid-template-columns:1fr}.sidebar{height:auto;position:relative}.user{margin-top:16px;position:relative;bottom:auto;left:auto;right:auto}.main{padding:18px}.workbench{grid-template-columns:1fr}.stats{grid-template-columns:1fr 1fr}}
