*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif;background:#f0f2f5;color:#222;min-height:100vh}
header{background:#1a2535;color:#fff;padding:14px 24px;display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
header h1{font-size:1.15rem;font-weight:600}
.brand{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.topnav{display:flex;gap:4px}
.topnav a{color:#9eb8cc;text-decoration:none;font-size:.85rem;padding:6px 14px;border-radius:6px}
.topnav a:hover{background:#253447;color:#fff}
.topnav a.active{background:#4a9eff;color:#fff;font-weight:600}
.head-actions{display:flex;gap:10px;align-items:center}
.save-status{font-size:.8rem;color:#9eb8cc;min-width:120px;text-align:right}
.save-status.dirty{color:#ffd479}
.save-status.saved{color:#8fd19e}
.save-status.error{color:#ff8fa3}
main{padding:24px;max-width:1400px;margin:0 auto}
.pane{display:block}
.loading{color:#999;font-style:italic;padding:24px;text-align:center}
.card{background:#fff;border-radius:8px;box-shadow:0 1px 4px rgba(0,0,0,.08);padding:20px;margin-bottom:16px}
.card h2{font-size:1rem;color:#1a2535;margin-bottom:14px}
.field{margin-bottom:12px}
.field label{display:block;font-size:.78rem;color:#555;margin-bottom:4px;font-weight:600}
.field input,.field select,.field textarea{width:100%;border:1px solid #dde3ec;border-radius:6px;padding:8px 10px;font:inherit;font-size:.88rem;outline:none;background:#fff}
.field input[type=checkbox]{width:auto}
.field input:focus,.field select:focus,.field textarea:focus{border-color:#4a9eff}
.field textarea{resize:vertical;min-height:56px}
.row-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.actions{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap}
.btn{border:none;border-radius:6px;padding:9px 16px;font:inherit;font-size:.88rem;cursor:pointer}
.btn-primary{background:#4a9eff;color:#fff}
.btn-primary:hover{background:#2a7edf}
.btn-primary:disabled{background:#9cc4ea;cursor:default}
.btn-secondary{background:#eef1f5;color:#333}
.btn-secondary:hover{background:#e2e6ec}
.btn-danger{background:#f8d7da;color:#721c24}
.btn-danger:hover{background:#f5c2c7}
.link-btn{background:none;border:none;color:#2a6bd0;font-size:.8rem;cursor:pointer;padding:2px 4px;font:inherit}
.link-btn:hover{text-decoration:underline}
.link-btn.danger{color:#c0392b}
.list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.list-header h2{margin:0}
.item{border:1px solid #e6e9ef;border-radius:8px;padding:12px 14px;margin-bottom:10px;background:#fff}
.item .item-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px}
.item .item-title{font-weight:600;color:#1a2535;font-size:.95rem}
.item .item-sub{font-size:.75rem;color:#8a97a8;margin-top:2px}
.item .item-body{font-size:.82rem;color:#333;margin-top:6px}
.hint{font-size:.72rem;color:#8a97a8;margin:6px 0}
.empty{color:#999;font-style:italic;padding:16px;text-align:center;background:#fafbfd;border:1px dashed #dde3ec;border-radius:6px}
.cls-row{display:flex;align-items:center;gap:10px;border:1px solid #eef0f3;background:#fafbfd;border-radius:6px;margin-top:6px;padding:7px 10px;cursor:pointer;user-select:none}
.cls-row:hover{background:#f0f4fa}
.cls-row.active{background:#e7f0fb;border-color:#4a9eff}
.cls-row.dup{border-color:#e05a6a;background:#fff5f6}
.cls-row .cls-num{display:inline-block;min-width:44px;color:#555;font-weight:600;font-size:.82rem;font-variant-numeric:tabular-nums}
.cls-row .cls-name{flex:1;min-width:0;color:#1a2535;font-weight:500;font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cls-row .cls-fee{color:#1a5f2a;font-weight:600;font-size:.82rem;white-space:nowrap}
.cls-row .cls-dup{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:#e05a6a;color:#fff;font-weight:700;font-size:.7rem}
.cls-row .drag-handle{color:#b7bfcc;cursor:grab;user-select:none;font-size:.85rem;line-height:1;padding:0 2px}
.cls-row:hover .drag-handle{color:#556}
.cls-row.dragging{opacity:.4}
.drop-target.drag-over{background:#e7f0fb;outline:2px dashed #4a9eff;outline-offset:-4px;border-radius:6px}
.workspace{display:flex;gap:20px;align-items:flex-start}
.main-col{flex:1;min-width:0}
.editor-pane{flex:0 0 360px;position:sticky;top:16px;background:#fff;border:1px solid #dde3ec;border-radius:8px;box-shadow:0 4px 14px rgba(0,0,0,.08);max-height:calc(100vh - 32px);overflow-y:auto}
.editor-head{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid #eef0f3}
.editor-head h2{font-size:1rem;color:#1a2535;margin:0}
.editor-head .disclosure{font-size:1.3rem;line-height:1}
.editor-body{padding:16px 18px}
.editor-body .actions{margin-top:16px}
.input-error{border-color:#e05a6a !important;background:#fff5f6}
.hint-error{color:#c0392b;font-weight:600}
@media(max-width:900px){.workspace{flex-direction:column}.editor-pane{width:100%;flex:none;position:static;max-height:none}}
.toolbar{display:flex;gap:12px;align-items:center;margin-bottom:16px;flex-wrap:wrap}
.filter-input{flex:1;min-width:240px;border:1px solid #dde3ec;border-radius:6px;padding:9px 12px;font:inherit;font-size:.9rem;outline:none;background:#fff}
.filter-input:focus{border-color:#4a9eff}
.cat-card{padding:0}
.cat-head{display:flex;align-items:center;gap:10px;padding:14px 18px;background:#f7f9fc;border-bottom:1px solid #eef0f3}
.cat-card.collapsed .cat-head{border-bottom:none}
.cat-card.collapsed .cat-body{display:none}
.cat-body{padding:16px 18px}
.cat-name{flex:1;min-width:0;border:1px solid #dde3ec;border-radius:6px;padding:7px 10px;font:inherit;font-size:.95rem;font-weight:600;color:#1a2535;background:#fff;outline:none}
.cat-name:focus{border-color:#4a9eff}
.cat-actions{display:flex;gap:10px;align-items:end;flex-shrink:0;flex-wrap:wrap}
.field.inline{margin:0}
.field.inline label{font-size:.7rem;margin-bottom:2px}
.field.inline input{width:110px;padding:6px 8px;font-size:.82rem}
.disclosure{background:none;border:none;color:#556;font-size:.78rem;cursor:pointer;padding:2px 4px;line-height:1;flex-shrink:0}
.disclosure:hover{color:#1a2535}
