:root{--paper: #f5f1e8;--card: #fbf9f4;--ink: #211c16;--ink-2: #524a3f;--ink-3: #8b8272;--line: #ddd5c4;--line-strong: #c4b9a2;--cinnabar: #b23323;--cinnabar-soft: #f0e0dc;--cinnabar-line: #e0c3bd;--indigo: #33536b;--indigo-soft: #e2e8ec;--indigo-line: #c6d3db;--moss: #5d6b45;--moss-soft: #e5e8dd;--moss-line: #ccd4bf;--ink-hover: #352d24;--danger-line: #d8bdb7;--field-bg: #fff;--radius: 3px;--radius-lg: 4px;--font-serif: "Source Han Serif SC", "Noto Serif SC", "Songti SC", "SimSun", serif;--font-sans: "PingFang SC", "Microsoft YaHei", "Hiragino Sans GB", system-ui, sans-serif;--font-mono: "SF Mono", "Cascadia Mono", Consolas, monospace;--gap: 16px;--gap-lg: 24px}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:14px;line-height:1.7;background-image:repeating-linear-gradient(45deg,rgba(33,28,22,.014) 0 1px,transparent 1px 6px)}h1,h2,h3{font-family:var(--font-serif);font-weight:600;letter-spacing:.02em;margin:0}a{color:var(--indigo);text-decoration:none}input,select,textarea,button{font-family:inherit;font-size:inherit;color:inherit}.btn{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--card);color:var(--ink);cursor:pointer;transition:border-color .15s,background .15s}.btn:hover:not(:disabled){border-color:var(--ink-3)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--ink);border-color:var(--ink);color:var(--paper)}.btn-primary:hover:not(:disabled){background:var(--ink-hover);border-color:var(--ink-hover)}.btn-danger{color:var(--cinnabar);border-color:var(--danger-line)}.btn-danger:hover:not(:disabled){background:var(--cinnabar-soft);border-color:var(--cinnabar)}.btn-quiet{border-color:transparent;background:transparent;padding:4px 8px;color:var(--ink-2)}.btn-quiet:hover:not(:disabled){background:#211c160d;border-color:transparent}.btn-sm{padding:3px 9px;font-size:13px}.field{display:block;margin-bottom:var(--gap)}.field>.label{display:block;margin-bottom:5px;color:var(--ink-2);font-size:13px}.field>.hint{margin-top:4px;color:var(--ink-3);font-size:12px;line-height:1.6}.field>.err{margin-top:4px;color:var(--cinnabar);font-size:12px}.input,.select,.textarea{width:100%;padding:6px 10px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--field-bg);outline:none}.input:focus,.select:focus,.textarea:focus{border-color:var(--indigo)}.input.invalid,.select.invalid,.textarea.invalid{border-color:var(--cinnabar)}.textarea{min-height:96px;resize:vertical;line-height:1.7}.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg)}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:var(--gap);padding:12px var(--gap);border-bottom:1px solid var(--line)}.panel-head h2{font-size:16px}.panel-body{padding:var(--gap)}.anchored{position:relative;padding-left:11px}.anchored:before{content:"";position:absolute;left:0;top:.28em;bottom:.28em;width:3px;background:var(--cinnabar)}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:9px 12px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}.table th{color:var(--ink-3);font-weight:500;font-size:12px;letter-spacing:.06em;white-space:nowrap}.table tbody tr:hover{background:#211c1606}.table tbody tr:last-child td{border-bottom:none}.tag{display:inline-flex;align-items:center;gap:4px;padding:1px 8px;border-radius:var(--radius);font-size:12px;white-space:nowrap;border:1px solid transparent}.tag-idle{background:#211c160d;color:var(--ink-2);border-color:var(--line)}.tag-busy{background:var(--indigo-soft);color:var(--indigo);border-color:var(--indigo-line)}.tag-done{background:var(--moss-soft);color:var(--moss);border-color:var(--moss-line)}.tag-fail{background:var(--cinnabar-soft);color:var(--cinnabar);border-color:var(--cinnabar-line)}.empty{padding:40px var(--gap);text-align:center;color:var(--ink-3)}.muted{color:var(--ink-3)}.mono{font-family:var(--font-mono);font-size:12px}.row{display:flex;align-items:center;gap:8px}.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}
