:root{--bg:#f4f5f6;--surface:#fff;--surface-2:#edeff1;--border:#dfe3e6;--border-strong:#c4cace;--text:#1f2427;--text-2:#5c666c;--text-3:#8d979d;--accent:#4a6572;--accent-weak:#e7edf0;--accent-deep:#35505c;--done:#4e7a4a;--done-bg:#e8f0e6;--warn:#a8792b;--warn-bg:#f7eedc;--danger:#b3453c;--danger-bg:#f7e9e7;--f-xs:12px;--f-sm:14px;--f-base:16px;--f-lg:18px;--f-xl:22px;--f-2xl:28px;--f-3xl:34px;--lh-body:1.75;--lh-head:1.35;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:64px;--radius:8px;--radius-lg:12px;--shadow:0 1px 3px #1f24270f, 0 4px 12px #1f24270a;--font:"PingFang SC","Microsoft YaHei","Source Han Sans SC",system-ui,sans-serif;--font-num:ui-monospace,"SF Mono",Consolas,monospace;--sidebar-w:240px}*{box-sizing:border-box}html{scroll-behavior:smooth}html,body{background:var(--bg);margin:0;padding:0}body{font-family:var(--font);color:var(--text);font-size:var(--f-base);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;min-width:1024px}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-deep)}button{font:inherit;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;padding:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius)}.nowrap,.btn,.tag,.menu-item,.op,th,.crumb{white-space:nowrap}.stack{flex-direction:column;display:flex}.row{align-items:center;display:flex}.grow{flex:1;min-width:0}.ell{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#side{width:var(--sidebar-w);background:var(--surface);border-right:1px solid var(--border);z-index:20;flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0}#side[hidden]{display:none}.side-h{padding:var(--s5) var(--s4);border-bottom:1px solid var(--border)}.side-nav{padding:var(--s4) 0;gap:var(--s5);flex-direction:column;flex:1;display:flex;overflow:auto}.grp-t{font-size:var(--f-xs);color:var(--text-3);letter-spacing:.08em;padding:0 var(--s4) var(--s2)}.menu-item{font-size:var(--f-sm);color:var(--text-2);padding:var(--s2) var(--s4);padding-left:calc(var(--s4) - 3px);border-left:3px solid #0000;transition:background .15s,color .15s;display:block}.menu-item:hover{background:var(--surface-2);color:var(--text)}.menu-item.on{color:var(--accent-deep);background:var(--accent-weak);border-left-color:var(--accent)}.side-f{border-top:1px solid var(--border);padding:var(--s3) var(--s4);font-size:var(--f-sm);color:var(--text-2);justify-content:space-between;align-items:center;display:flex}#main{margin-left:var(--sidebar-w);padding:var(--s6);min-height:100vh}#main.full{margin-left:0;padding:0}.crumbs{align-items:center;gap:var(--s2);font-size:var(--f-sm);color:var(--text-3);margin-bottom:var(--s4);display:flex}.crumb{color:var(--text-3)}.crumb.cur{color:var(--text)}.pagehead{justify-content:space-between;align-items:flex-start;gap:var(--s5);margin-bottom:var(--s5);display:flex}.h1{font-size:var(--f-2xl);line-height:var(--lh-head);margin:0;font-weight:600}.sub{font-size:var(--f-sm);color:var(--text-2);margin-top:var(--s2);text-wrap:pretty}.btn{justify-content:center;align-items:center;gap:var(--s2);height:36px;padding:0 var(--s4);font-size:var(--f-sm);border-radius:var(--radius);border:1px solid #0000;line-height:1;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.btn-p{background:var(--accent);color:var(--surface);border-color:var(--accent)}.btn-p:hover{background:var(--accent-deep);border-color:var(--accent-deep)}.btn-s{background:var(--surface);color:var(--text);border-color:var(--border-strong)}.btn-s:hover{background:var(--surface-2)}.btn-t{color:var(--accent);padding:0 var(--s2)}.btn-t:hover{color:var(--accent-deep)}.btn-d{background:var(--danger);color:var(--surface);border-color:var(--danger)}.btn-dt{color:var(--danger);padding:0 var(--s2)}.btn-sm{height:28px;font-size:var(--f-xs);padding:0 var(--s3)}.btn-dash{background:var(--surface);color:var(--accent);border:1px dashed var(--border-strong)}.btn-dash:hover{background:var(--surface-2)}.btn[disabled]{background:var(--surface-2);color:var(--text-3);border-color:var(--border);cursor:default}.btn-full{width:100%}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.card-p{padding:var(--s5)}.card-h{font-size:var(--f-lg);line-height:var(--lh-head);padding:var(--s4) var(--s5);border-bottom:1px solid var(--border)}.tscroll{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius);overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:960px;font-size:var(--f-sm)}th{background:var(--surface-2);text-align:left;padding:var(--s3) var(--s4);border-bottom:1px solid var(--border);color:var(--text-2);font-weight:600}td{padding:var(--s3) var(--s4);border-bottom:1px solid var(--border);vertical-align:middle}tbody tr:last-child td{border-bottom:0}tbody tr{transition:background .15s}tbody tr:hover{background:var(--surface-2)}.tname{color:var(--text);font-weight:600}.op{align-items:center;gap:var(--s3);font-size:var(--f-sm);display:flex}.sortarrow{font-size:var(--f-xs);color:var(--text-3);vertical-align:middle;flex-direction:column;gap:2px;line-height:.7;display:inline-flex}.inp{height:36px;padding:0 var(--s3);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font-family:var(--font);font-size:var(--f-sm);width:100%}.inp:focus{border-color:var(--accent);outline:none}.inp-num{font-family:var(--font-num)}.inp-err{border-color:var(--danger)}.inp[disabled]{background:var(--surface-2);color:var(--text-3)}textarea.inp{height:auto;padding:var(--s2) var(--s3);line-height:var(--lh-body);resize:vertical}select.inp{padding:0 var(--s2)}.fld{gap:var(--s4);align-items:flex-start;display:flex}.fld-l{text-align:right;width:120px;font-size:var(--f-sm);color:var(--text-2);padding-top:var(--s2);flex:none}.req{color:var(--danger)}.hint{font-size:var(--f-xs);color:var(--text-3);margin-top:var(--s1);line-height:var(--lh-head)}.hint-err{font-size:var(--f-xs);color:var(--danger);margin-top:var(--s1)}.stepper{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);align-items:stretch;width:100px;height:36px;display:inline-flex;overflow:hidden}.stepper input{min-width:0;padding:0 var(--s2);font-family:var(--font-num);font-size:var(--f-sm);color:var(--text);background:0 0;border:0;flex:1}.stepper input:focus{outline:none}.stepper span{border-left:1px solid var(--border);flex-direction:column;width:20px;display:flex}.stepper button{font-size:var(--f-xs);color:var(--text-3);flex:1;justify-content:center;align-items:center;line-height:1;display:flex}.stepper button:first-child{border-bottom:1px solid var(--border)}.sw{border-radius:var(--radius-lg);border:1px solid var(--border-strong);background:var(--surface-2);flex:none;justify-content:flex-start;align-items:center;width:36px;height:20px;padding:0 2px;transition:background .15s,border-color .15s;display:inline-flex}.sw i{border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--border-strong);width:14px;height:14px;display:block}.sw.on{background:var(--accent);border-color:var(--accent);justify-content:flex-end}.sw.on i{border-color:var(--accent)}.tag{font-size:var(--f-xs);border-radius:var(--radius);padding:var(--s1) var(--s2);line-height:var(--lh-head);display:inline-block}.tag-on{color:var(--done);background:var(--done-bg)}.tag-off{color:var(--text-3);background:var(--surface-2);border:1px solid var(--border)}.tag-a{color:var(--accent-deep);background:var(--accent-weak)}.tag-w{color:var(--warn);background:var(--warn-bg)}.grip{gap:var(--s1);cursor:grab;flex:none;grid-template-rows:repeat(3,3px);grid-template-columns:repeat(2,3px);display:grid}.grip b{border-radius:var(--radius);background:var(--border-strong);width:3px;height:3px;display:block}.ph{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);font-family:var(--font-num);font-size:var(--f-xs);color:var(--text-3);text-align:center;padding:var(--s2);justify-content:center;align-items:center;display:flex}.empty{border:1px dashed var(--border-strong);border-radius:var(--radius);background:var(--surface);padding:var(--s8) var(--s5);text-align:center}.pager{justify-content:flex-end;align-items:center;gap:var(--s2);margin-top:var(--s4);display:flex}.pager button{min-width:28px;height:28px;padding:0 var(--s3);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);font-size:var(--f-xs);color:var(--text-2);justify-content:center;align-items:center;transition:background .15s;display:inline-flex}.pager button:hover{background:var(--surface-2)}.pager button.on{background:var(--accent);border-color:var(--accent);color:var(--surface);font-family:var(--font-num)}.p4{align-items:flex-start;gap:var(--s6);display:flex}.p4-side{width:260px;top:var(--s6);flex:none;position:sticky}.anch{align-items:center;gap:var(--s2);width:100%;font-size:var(--f-sm);color:var(--text-2);padding:var(--s1) 0 var(--s1) var(--s3);border-left:2px solid #0000;transition:color .15s,border-color .15s;display:flex}.anch:hover{color:var(--text)}.anch.on{color:var(--accent-deep);border-left-color:var(--accent)}.pip{background:var(--text-3);border-radius:50%;flex:none;width:6px;height:6px}.pip.ok{background:var(--done)}.bar{height:var(--s1);background:var(--surface-2);border-radius:var(--radius);flex:1;min-width:60px;overflow:hidden}.bar>i{background:var(--accent);height:100%;display:block}.bar.w>i{background:var(--warn)}.bar.d>i{background:var(--done)}.sticky-foot{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--s3) var(--s5);align-items:center;gap:var(--s3);margin-top:var(--s5);box-shadow:var(--shadow);display:flex;position:sticky;bottom:0}.blk{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);align-items:stretch;display:flex}.blk.drag{border-color:var(--accent)}.blk-g{border-right:1px solid var(--border);background:var(--surface-2);border-radius:var(--radius) 0 0 var(--radius);flex:none;justify-content:center;align-items:center;width:28px;display:flex}.blk-b{min-width:0;padding:var(--s3) var(--s4) var(--s4);flex:1}.blk-h{justify-content:space-between;align-items:center;gap:var(--s3);margin-bottom:var(--s3);display:flex}.mini{height:28px;padding:0 var(--s2);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);font-size:var(--f-xs);color:var(--text-2);align-items:center;transition:background .15s;display:inline-flex}.mini:hover{background:var(--surface-2)}.mini.d{color:var(--danger)}.mgrid{gap:var(--s4);grid-template-columns:repeat(6,1fr);display:grid}.mcell{text-align:left;position:relative}.mthumb{aspect-ratio:1;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);font-family:var(--font-num);font-size:var(--f-xs);color:var(--text-3);justify-content:center;align-items:center;display:flex}.mcell.on .mthumb{border:2px solid var(--accent)}.mdel{top:var(--s1);right:var(--s1);border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--border-strong);width:18px;height:18px;color:var(--text-2);font-size:var(--f-xs);justify-content:center;align-items:center;line-height:1;display:none;position:absolute}.mcell:hover .mdel{display:flex}.mchk{top:var(--s1);right:var(--s1);border-radius:var(--radius-lg);background:var(--accent);width:18px;height:18px;color:var(--surface);font-size:var(--f-xs);justify-content:center;align-items:center;line-height:1;display:flex;position:absolute}.mask{z-index:50;display:none;position:fixed;inset:0}.mask.show{display:block}.mask>.veil{background:var(--text);opacity:.4;position:absolute;inset:0}.dlg{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);margin:0 auto;position:relative}.mask .center{height:100%;padding:var(--s6);justify-content:center;align-items:center;display:flex;position:relative}.fade{animation:.15s ease-out fade}@keyframes fade{0%{opacity:0}to{opacity:1}}.dlg-h{padding:var(--s4) var(--s5);border-bottom:1px solid var(--border);font-size:var(--f-lg);line-height:var(--lh-head)}.dlg-b{padding:var(--s4) var(--s5);font-size:var(--f-sm);color:var(--text-2);line-height:var(--lh-body);text-wrap:pretty}.dlg-f{padding:var(--s4) var(--s5);border-top:1px solid var(--border);justify-content:flex-end;gap:var(--s3);display:flex}.sechd{align-items:center;gap:var(--s3);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);width:100%;padding:var(--s3) var(--s4);white-space:nowrap;transition:border-color .15s;display:flex}.sechd:hover{border-color:var(--border-strong)}.sec-t{font-size:var(--f-sm);flex:none;font-weight:600}.sec-s{font-size:var(--f-sm);color:var(--text-2)}.sec-c{font-size:var(--f-sm);color:var(--text-2);font-family:var(--font-num);flex:none}.caret{color:var(--text-3);font-size:var(--f-xs);flex:none;transition:transform .15s;display:inline-block}.caret.up{transform:rotate(180deg)}.sec-em{border:1px solid var(--border);border-radius:0 0 var(--radius) var(--radius);background:var(--surface);padding:var(--s4);font-size:var(--f-sm);color:var(--text-3);border-top:0}.catbar{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);width:200px;padding:var(--s3) 0;flex:none;align-self:stretch}.cat{align-items:center;gap:var(--s2);width:100%;font-size:var(--f-sm);color:var(--text-2);padding:var(--s2) var(--s3);white-space:nowrap;border-left:3px solid #0000;transition:background .15s,color .15s;display:flex}.cat:hover{background:var(--surface-2);color:var(--text)}.cat.on{color:var(--accent-deep);background:var(--accent-weak);border-left-color:var(--accent)}.cat .grip{visibility:hidden}.cat:hover .grip{visibility:visible}.lock{font-size:var(--f-xs);color:var(--text-3);flex:none}.opt{align-items:flex-start;gap:var(--s3);padding:var(--s3);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;transition:border-color .15s,background .15s;display:flex}.opt:hover{border-color:var(--border-strong)}.opt input{margin:var(--s1) 0 0;accent-color:var(--accent);flex:none}.opt.off{background:var(--surface-2);cursor:default}.opt.off:hover{border-color:var(--border)}.optx{margin-top:var(--s2);display:block}.opth{font-size:var(--f-xs);color:var(--warn);margin-top:var(--s1);line-height:var(--lh-head);display:block}.mgrid5{grid-template-columns:repeat(5,1fr)}.mtag{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:var(--f-xs);color:var(--accent-deep);background:var(--accent-weak);border-radius:var(--radius);padding:0 var(--s2);margin-top:var(--s1);display:inline-block;overflow:hidden}.menu-sub{padding-left:calc(var(--s5) - 3px)}.vidc{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:var(--s3) var(--s4)}.warm{--bg:#f7f5f2;--surface:#fff;--surface-2:#f0ede8;--border:#e2ddd5;--border-strong:#cfc7bb;--text:#23201c;--text-2:#6b645b;--text-3:#9a9289;--accent:#b26b2e;--accent-weak:#f3e7da;--accent-deep:#8a5222;background:var(--bg);color:var(--text)}
