*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:system-ui,-apple-system,sans-serif;background:#f5f6f8;color:#222;font-size:14px}header{display:flex;align-items:center;gap:24px;padding:0 32px;height:52px;background:#1a1a2e;color:#fff}.logo{font-weight:700;font-size:16px;letter-spacing:.5px}nav{display:flex;gap:4px}nav button{background:transparent;border:none;color:#aaa;padding:6px 14px;border-radius:6px;cursor:pointer;font-size:13px;transition:background .15s,color .15s}nav button:hover{background:#ffffff14;color:#fff}nav button.active{background:#ffffff26;color:#fff}main{padding:24px 32px;max-width:1440px;margin:0 auto}section h2{font-size:18px;margin-bottom:16px}.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.filter-group{display:flex;flex-wrap:wrap;align-items:center;gap:8px;flex:1 1 auto;min-width:0}.bulk-actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px;flex:0 0 auto}.filter-group select,.filter-group input{padding:6px 10px;border:1px solid #d0d0d8;border-radius:6px;font-size:13px;background:#fff;outline:none;height:32px}.filter-group select:focus,.filter-group input:focus{border-color:#6c63ff}.filter-group select{min-width:130px}.filter-group input{flex:1 1 200px;min-width:180px;max-width:320px}.bulk-actions .btn{height:32px;padding:0 14px;white-space:nowrap}.table-wrap{background:#fff;border-radius:8px;box-shadow:0 1px 4px #00000014;overflow-x:auto;overflow-y:hidden;border:1px solid #e5e7ee}table{width:100%;border-collapse:collapse;background:#fff}th{background:#eef1f6;text-align:left;padding:11px 14px;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:#555;border-bottom:2px solid #d8dce4;white-space:nowrap}td{padding:10px 14px;border-top:1px solid #eef0f4;color:#333}th+th,td+td{border-left:1px solid #eef0f4}tbody tr:nth-child(2n) td{background:#fafbfc}tbody tr.row-selected td{background:#e6edff}tbody tr:hover td{background:#eef3ff}tbody tr.row-selected:hover td{background:#d9e3ff}th.col-check,td.col-check{width:36px;padding-right:4px;text-align:center}.col-check input[type=checkbox]{width:15px;height:15px;cursor:pointer;accent-color:#6c63ff;vertical-align:middle}td a{color:#6c63ff;text-decoration:none;word-break:break-all}td a:hover{text-decoration:underline}th.col-nowrap,td.col-nowrap{white-space:nowrap}td.col-url{word-break:break-all;min-width:240px}.hint{color:#888;padding:8px 0}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.section-header h2{margin-bottom:0}.btn{display:inline-flex;align-items:center;padding:7px 16px;border:none;border-radius:6px;cursor:pointer;font-size:13px;transition:background .15s,opacity .15s}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:#6c63ff;color:#fff}.btn-primary:hover:not(:disabled){background:#5a52d5}.btn-default{background:#f0f1f5;color:#333}.btn-default:hover:not(:disabled){background:#e2e4ea}.btn-danger{background:#ff4d4f;color:#fff}.btn-danger:hover:not(:disabled){background:#d9363e}.btn-copy{background:#e6f4ff;color:#1677ff}.btn-copy:hover:not(:disabled){background:#bae0ff}.btn-deploy{background:#f6ffed;color:#389e0d}.btn-deploy:hover:not(:disabled){background:#d9f7be}.btn-destroy{background:#fff7e6;color:#d46b08}.btn-destroy:hover:not(:disabled){background:#ffe7ba}.btn-sm{padding:4px 10px;font-size:12px}.actions{white-space:nowrap}.actions .btn+.btn{margin-left:6px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:200}.modal{background:#fff;border-radius:10px;padding:28px 28px 20px;width:440px;max-width:calc(100vw - 32px);box-shadow:0 12px 40px #0003}.modal h3{font-size:16px;margin-bottom:20px;color:#111}.field{margin-bottom:14px}.field label{display:block;font-size:12px;color:#666;margin-bottom:5px;font-weight:500}.field input,.field select,.field textarea{width:100%;padding:8px 10px;border:1px solid #d0d0d8;border-radius:6px;font-size:14px;outline:none;transition:border-color .15s;font-family:inherit}.field textarea{resize:vertical;min-height:96px;line-height:1.5}.field input:focus,.field select:focus,.field textarea:focus{border-color:#6c63ff}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.chat-push-list{list-style:none;padding:0;margin:0}.chat-push-item{display:grid;grid-template-columns:28px 1fr;align-items:center;gap:10px;padding:10px 4px;border-bottom:1px solid #eef0f4}.chat-push-item:last-child{border-bottom:none}.chat-push-icon{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;font-size:14px;font-weight:700;color:#fff;line-height:1}.chat-push-pending{background:#d0d0d8;color:#666}.chat-push-success{background:#52c41a}.chat-push-failure{background:#ff4d4f}.chat-push-label{font-size:14px;color:#222}.chat-push-error{grid-column:2;margin-top:6px;padding:8px 10px;background:#fff2f0;border:1px solid #ffccc7;border-radius:6px;color:#cf1322;font-size:12px;white-space:pre-wrap;word-break:break-all}.toast{position:fixed;bottom:32px;left:50%;transform:translate(-50%);background:#000000bf;color:#fff;padding:10px 22px;border-radius:20px;font-size:13px;z-index:999;pointer-events:none;animation:toast-in .2s ease}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.tool-list{display:flex;flex-wrap:wrap;gap:16px}.tool-card{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:240px;padding:18px;border:1px solid #e5e7eb;border-radius:10px;background:#fff;cursor:pointer;text-align:left;transition:border-color .15s,box-shadow .15s}.tool-card:hover{border-color:#1677ff;box-shadow:0 2px 10px #1677ff1f}.tool-card-name{font-size:15px;font-weight:600;color:#111}.tool-card-desc{font-size:12px;color:#888}.dropzone{border:2px dashed #c4c9d4;border-radius:10px;padding:40px 20px;text-align:center;cursor:pointer;background:#fafbfc;transition:border-color .15s,background .15s}.dropzone:hover{border-color:#1677ff}.dropzone.dragover{border-color:#1677ff;background:#eef5ff}.dropzone-hint{color:#666;margin:0}.dropzone-file{margin:10px 0 0;font-size:13px;color:#111;font-weight:600}.pdf-result{margin-top:16px}.pdf-result-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.pdf-preview{width:100%;height:70vh;border:1px solid #e5e7eb;border-radius:8px;background:#fff}.req-tree{background:#fff;border:1px solid #e5e7ee;border-radius:8px;box-shadow:0 1px 4px #00000014;padding:8px 12px}.req-row{display:flex;align-items:flex-start;gap:8px;padding:8px 6px;border-radius:6px;border-left:3px solid transparent;transition:background .12s}.req-row:hover{background:#f5f7ff}.req-row.req-dragging{opacity:.45}.req-row.req-drop-before{box-shadow:inset 0 2px #1677ff}.req-row.req-drop-after{box-shadow:inset 0 -2px #1677ff}.req-row.req-drop-inside{background:#eaf3ff;box-shadow:inset 0 0 0 2px #1677ff}.req-switch{display:inline-flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.req-switch input{position:absolute;opacity:0;width:0;height:0}.req-switch-track{position:relative;width:38px;height:20px;border-radius:10px;background:#cfd3dc;transition:background .15s}.req-switch-thumb{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #00000040;transition:transform .15s}.req-switch input:checked+.req-switch-track{background:#6c63ff}.req-switch input:checked+.req-switch-track .req-switch-thumb{transform:translate(18px)}.req-switch input:focus-visible+.req-switch-track{box-shadow:0 0 0 3px #6c63ff40}.req-switch-label{font-size:13px;color:#333}.req-drag{flex:0 0 auto;width:16px;margin-top:1px;display:inline-flex;align-items:center;justify-content:center;color:#c4c9d4;cursor:grab;font-size:13px;-webkit-user-select:none;user-select:none}.req-drag:hover{color:#888}.req-drag:active{cursor:grabbing}.req-status{flex:0 0 auto;align-self:center;height:24px;padding:0 22px 0 10px;border-radius:12px;border:1px solid transparent;font-size:12px;font-weight:600;cursor:pointer;outline:none;-moz-appearance:none;appearance:none;-webkit-appearance:none;background-repeat:no-repeat;background-position:right 7px center;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='6' viewBox='0 0 8 6'%3E%3Cpath fill='%23666' d='M0 0h8L4 6z'/%3E%3C/svg%3E")}.req-status-static{padding:0 10px;cursor:default;background-image:none;display:inline-flex;align-items:center}.req-status-todo{background-color:#f1f2f5;color:#5a5f6b;border-color:#e2e4ea}.req-status-doing{background-color:#e6f0ff;color:#1d6fe0;border-color:#c4dbff}.req-status-done{background-color:#e7f7ec;color:#2a9d5a;border-color:#c2ebcf}.req-status-paused{background-color:#fff5e6;color:#d4820a;border-color:#ffe2b8}.req-status-canceled{background-color:#fdecec;color:#d4493e;border-color:#f8cfcb}.req-depth-1{border-left-color:#6c63ff}.req-depth-2{border-left-color:#36c5b0}.req-depth-3{border-left-color:#f0a020}.req-depth-4{border-left-color:#e0529c}.req-depth-5{border-left-color:#3aa0ff}.req-depth-6{border-left-color:#9aa0a6}.req-toggle{flex:0 0 auto;width:20px;height:20px;margin-top:1px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:#888;font-size:10px;cursor:pointer;border-radius:4px}.req-toggle:hover{background:#0000000f;color:#333}.req-toggle-empty{cursor:default;color:#c4c9d4}.req-toggle-empty:hover{background:transparent;color:#c4c9d4}.req-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.req-title{font-size:14px;color:#222;font-weight:500;word-break:break-word}.req-title-clickable{cursor:pointer}.req-title-clickable:hover{color:#6c63ff;text-decoration:underline}.req-note{font-size:12px;color:#888;word-break:break-word;white-space:pre-wrap}.req-time{font-size:11px;color:#aab0bd;display:flex;flex-wrap:wrap;gap:4px 10px}.req-time .req-time-done{color:#52a06a}.req-time .req-time-canceled{color:#c4534f}.req-filter{display:flex;align-items:center;gap:6px;font-size:12px;color:#666}.req-filter input[type=date]{font-size:12px;padding:3px 6px;border:1px solid #d9dce3;border-radius:4px;color:#333}.req-actions{flex:0 0 auto;display:flex;align-items:center;gap:6px;opacity:0;transition:opacity .12s}.req-row:hover .req-actions{opacity:1}.req-children{margin-left:22px;padding-left:10px;border-left:1px dashed #e0e3ea}
