:root{color-scheme:light;font-family:Inter,Segoe UI,PingFang SC,Microsoft YaHei,Arial,sans-serif;color:#1d2725;background:#f5f3ee;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--panel: #ffffff;--line: #dad7cf;--line-strong: #c9c4ba;--text: #1d2725;--muted: #6b716d;--primary: #14796f;--primary-dark: #0d5f57;--primary-soft: #e0f0ed;--amber: #b7791f;--amber-soft: #fff3d7;--danger: #b42318;--danger-soft: #fee4df;--success: #15803d;--success-soft: #e6f4ea;--shadow: 0 16px 42px rgba(50, 46, 38, .1)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:linear-gradient(180deg,#ffffffb8,#fff0 260px),#f5f3ee}button,input,textarea,a{font:inherit}button{cursor:pointer}.app-shell{width:min(1440px,100%);margin:0 auto;padding:22px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:18px}.brand{display:flex;align-items:center;gap:14px;min-width:0}.brand-mark{width:118px;height:52px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:4px 6px;border:1px solid #dce8e4;background:#fff;box-shadow:0 10px 24px #14796f38;flex:0 0 auto}.brand-mark img{display:block;width:100%;height:100%;object-fit:contain}.brand-kicker{display:block;margin-bottom:3px;color:var(--primary);font-size:12px;font-weight:900;letter-spacing:0}h1,h2,h3,p{margin:0}h1{font-size:24px;line-height:1.2;letter-spacing:0}.brand p{margin-top:4px;color:var(--muted);font-size:14px}.topbar-actions{display:flex;align-items:center;gap:10px;flex:0 0 auto}.user-pill{height:34px;max-width:240px;padding:0 11px;border:1px solid #c9ddd9;border-radius:999px;display:inline-flex;align-items:center;gap:7px;color:var(--primary-dark);background:#f8fcfb;font-size:13px;font-weight:800}.user-pill svg{flex:0 0 auto}.status-pill{height:34px;padding:0 12px;border-radius:999px;display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:700;border:1px solid var(--line);background:#fff;color:var(--muted)}.status-pill.active{color:var(--primary-dark);background:var(--primary-soft);border-color:#b8d9d4}.status-pill.success{color:var(--success);background:var(--success-soft);border-color:#b9dfc6}.status-pill.danger{color:var(--danger);background:var(--danger-soft);border-color:#f4b4aa}.icon-button{width:36px;height:36px;border-radius:8px;border:1px solid var(--line);color:var(--text);background:#fff;display:grid;place-items:center}.workspace{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(380px,.9fr);gap:18px;align-items:start}.auth-layout{min-height:calc(100vh - 112px);display:grid;place-items:center}.auth-panel{width:min(380px,100%);border:1px solid var(--line);border-radius:8px;padding:18px;background:var(--panel);box-shadow:var(--shadow)}.auth-visual{display:block;width:100%;height:118px;object-fit:cover;object-position:center;border:1px solid #dce8e4;border-radius:8px;margin-bottom:14px;background:#f7fbfa}.auth-copy{margin-bottom:12px}.auth-switch{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;margin-bottom:12px;padding:4px;border:1px solid var(--line);border-radius:8px;background:#f3f1eb}.auth-switch button{height:36px;border:0;border-radius:6px;color:var(--muted);background:transparent;font-weight:800}.auth-switch button.active{color:var(--primary-dark);background:#fff;box-shadow:0 4px 14px #322e2617}.auth-form{display:grid;gap:10px}.form-field{display:grid;gap:6px}.form-field span{color:#59615d;font-size:12px;font-weight:800}.form-field input{height:42px;min-width:0;border:1px solid var(--line-strong);border-radius:8px;padding:0 11px;color:var(--text);background:#fff;outline:none}.form-field input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #14796f1f}.auth-submit{width:100%;margin-top:4px}.left-column,.right-column{display:grid;gap:18px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);padding:18px}.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}.panel-heading svg{color:var(--primary);flex:0 0 auto}.eyebrow{display:block;margin-bottom:4px;color:var(--amber);font-size:12px;font-weight:800}h2{font-size:18px;line-height:1.25;letter-spacing:0}h3{margin-bottom:10px;color:#3e4642;font-size:14px;line-height:1.2}.dropzone{width:100%;min-height:184px;border:1.5px dashed #9eb6b0;border-radius:8px;display:grid;place-items:center;align-content:center;gap:8px;padding:24px;color:var(--primary-dark);background:#f7fbfa;text-align:center;transition:border-color .16s ease,background .16s ease,transform .16s ease}.dropzone:hover,.dropzone.dragging{border-color:var(--primary);background:#edf7f5;transform:translateY(-1px)}.dropzone.has-file{border-color:#84b9b1}.dropzone-visual{width:78px;height:78px;object-fit:contain;filter:drop-shadow(0 8px 18px rgba(22,77,69,.12))}.dropzone strong{display:block;max-width:520px;color:#143d38;font-size:17px;line-height:1.35}.dropzone span{max-width:520px;color:var(--muted);font-size:13px;line-height:1.45}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.file-chip{margin-top:12px;display:flex;align-items:center;gap:10px;padding:11px 12px;border:1px solid #c9ddd9;border-radius:8px;background:#f8fcfb}.file-chip>svg{color:var(--primary);flex:0 0 auto}.file-chip div{display:grid;min-width:0}.file-chip strong{overflow:hidden;color:var(--text);font-size:14px;text-overflow:ellipsis;white-space:nowrap}.file-chip span{color:var(--muted);font-size:12px}.file-chip button{width:28px;height:28px;margin-left:auto;border:1px solid var(--line);border-radius:8px;display:grid;place-items:center;color:var(--muted);background:#fff;flex:0 0 auto}.option-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.preset-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.preset-card{min-height:54px;border:1px solid var(--line);border-radius:8px;display:grid;grid-template-columns:24px minmax(0,1fr);align-items:center;gap:10px;padding:14px;color:var(--text);background:#fbfaf7;text-align:left}.preset-card:hover{border-color:#a8c6c0;background:#f7fbfa}.preset-card.selected{border-color:var(--primary);background:var(--primary-soft);box-shadow:0 0 0 3px #14796f1a}.preset-check{width:22px;height:22px;border:1px solid #aeb5af;border-radius:999px;display:grid;place-items:center;color:#fff;background:#fff}.preset-card.selected .preset-check{border-color:var(--primary);background:var(--primary)}.preset-card strong{display:block;font-size:15px;line-height:1.25}.option-group{min-width:0;padding:14px;border:1px solid var(--line);border-radius:8px;background:#fbfaf7}.check-row{display:grid;grid-template-columns:20px minmax(0,1fr);gap:10px;position:relative;padding:9px 0;color:var(--text)}.check-row+.check-row{border-top:1px solid #ece8df}.check-row input{position:absolute;opacity:0;pointer-events:none}.check-box{width:20px;height:20px;margin-top:1px;border:1px solid #aeb5af;border-radius:6px;display:grid;place-items:center;color:transparent;background:#fff}.check-row input:checked+.check-box{border-color:var(--primary);background:var(--primary);color:#fff}.check-row strong{display:block;font-size:14px;line-height:1.2}.check-row small{display:block;margin-top:3px;color:var(--muted);font-size:12px;line-height:1.25}.advanced-grid{margin-top:16px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.config-stack{margin-top:16px;display:grid;grid-template-columns:minmax(0,1fr);gap:12px}.advanced-grid label{display:grid;gap:6px}.advanced-grid label span,.config-stack label span{color:#59615d;font-size:12px;font-weight:800}.advanced-grid input,.advanced-grid textarea,.config-stack input,.config-stack textarea{min-width:0;border:1px solid var(--line-strong);border-radius:8px;color:var(--text);background:#fff;outline:none}.advanced-grid input,.config-stack input{height:40px;padding:0 11px}.advanced-grid textarea,.config-stack textarea{min-height:76px;padding:10px 11px;resize:vertical}.advanced-grid input:focus,.advanced-grid textarea:focus,.config-stack input:focus,.config-stack textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #14796f1f}.config-stack label{display:grid;gap:6px}.wide-field{grid-column:span 2}.flag-row{margin-top:14px;display:flex;flex-wrap:wrap;gap:8px}.flag-row span{border-radius:999px;padding:5px 9px;color:#754a0b;background:var(--amber-soft);border:1px solid #f0d192;font-size:12px;font-weight:800}.action-row{display:flex;gap:10px;margin-top:18px}.primary-button,.secondary-button,.download-button{min-height:42px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 15px;font-weight:800;text-decoration:none}.primary-button{border:1px solid var(--primary);color:#fff;background:var(--primary)}.primary-button:hover:not(:disabled){background:var(--primary-dark)}.primary-button:disabled{cursor:not-allowed;opacity:.5}.secondary-button{border:1px solid var(--line-strong);color:var(--text);background:#fff}.compact-button{min-height:34px;padding:0 10px;font-size:12px}.error-box{margin-top:12px;border:1px solid #f1afa7;border-radius:8px;display:flex;align-items:flex-start;gap:8px;padding:10px 12px;color:var(--danger);background:var(--danger-soft);font-size:13px;line-height:1.4}.error-box.compact{margin-top:14px}.admin-panel{min-width:0}.admin-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.admin-actions span{color:var(--muted);font-size:13px;font-weight:800}.user-list{display:grid;gap:8px}.user-row{min-height:54px;display:grid;grid-template-columns:minmax(0,1fr) auto auto auto auto auto;align-items:center;gap:10px;padding:10px;border:1px solid var(--line);border-radius:8px;background:#fbfaf7}.user-row.deleted{opacity:.68}.user-row>div{min-width:0}.user-row strong,.user-row span{display:block}.user-row strong{overflow:hidden;color:var(--text);font-size:14px;text-overflow:ellipsis;white-space:nowrap}.user-row div span{margin-top:3px;color:var(--muted);font-size:12px}.role-badge{border-radius:999px;padding:5px 8px;font-size:12px;font-weight:900;white-space:nowrap}.role-badge.admin{color:var(--primary-dark);background:var(--primary-soft);border:1px solid #b8d9d4}.role-badge.user{color:#6b5330;background:#f8ead2;border:1px solid #e8c88f}.user-state{border-radius:999px;padding:5px 8px;font-size:12px;font-weight:900;white-space:nowrap}.user-state.active{color:var(--success);background:var(--success-soft);border:1px solid #b9dfc6}.user-state.disabled{color:#755a1a;background:var(--amber-soft);border:1px solid #f0d192}.user-state.deleted{color:var(--danger);background:var(--danger-soft);border:1px solid #f4b4aa}.danger-action{color:var(--danger);border-color:#e6aaa2}.status-panel{min-height:368px}.progress-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.progress-head div{min-width:0}.progress-head strong{display:block;font-size:16px}.progress-head span{display:block;margin-top:4px;overflow:hidden;color:var(--muted);font-size:13px;text-overflow:ellipsis;white-space:nowrap}.progress-head b{color:var(--primary-dark);font-size:30px;line-height:1}.job-meta{margin-top:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 11px;border:1px solid #e3ded3;border-radius:8px;background:#faf9f5}.job-meta span{color:var(--muted);font-size:12px;font-weight:800}.job-meta strong{overflow:hidden;color:var(--text);font-size:13px;text-overflow:ellipsis;white-space:nowrap}.progress-track{height:10px;margin-top:16px;overflow:hidden;border-radius:999px;background:#e8e3d8}.progress-track div{height:100%;border-radius:inherit;background:linear-gradient(90deg,#14796f,#d1942f);transition:width .22s ease}.stage-list{margin-top:18px;display:grid;gap:10px}.stage-item{min-height:38px;display:grid;grid-template-columns:28px 1fr 18px;align-items:center;gap:9px;color:var(--muted);font-size:14px}.stage-dot{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;border:1px solid var(--line-strong);background:#fff;color:var(--muted);font-size:12px;font-weight:900}.stage-item.done{color:var(--success)}.stage-item.done .stage-dot{border-color:#a9d9ba;background:var(--success-soft);color:var(--success)}.stage-item.active{color:var(--primary-dark);font-weight:800}.stage-item.active .stage-dot{border-color:var(--primary);background:var(--primary);color:#fff}.stage-item.error{color:var(--danger)}.stage-item.error .stage-dot{border-color:#e59b91;background:var(--danger-soft);color:var(--danger)}.result-box{margin-top:18px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px;border:1px solid #d9d0bd;border-radius:8px;background:#fffaf0}.result-box strong,.result-box span{display:block}.result-box strong{font-size:14px}.result-box span{margin-top:3px;color:var(--muted);font-size:12px}.download-button{border:1px solid var(--primary);color:#fff;background:var(--primary);flex:0 0 auto}.download-button.disabled{pointer-events:none;border-color:#d1d1cc;color:#7a7d79;background:#e9e8e3}.download-button:disabled{cursor:not-allowed}.result-path{margin-top:10px;display:grid;gap:5px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:#faf9f5}.result-path span{color:var(--muted);font-size:12px;font-weight:800}.result-path code{overflow-wrap:anywhere;color:#31403b;font-family:Cascadia Mono,JetBrains Mono,Consolas,monospace;font-size:12px}.history-panel{min-height:240px}.history-summary,.pager{display:flex;align-items:center;justify-content:space-between;gap:10px}.history-summary{margin-bottom:12px}.history-summary span,.pager span{color:var(--muted);font-size:13px;font-weight:800}.history-list{display:grid;gap:7px}.history-row{min-height:42px;display:grid;grid-template-columns:minmax(0,1fr) 36px;gap:8px;align-items:center}.history-main{min-width:0;min-height:42px;border:1px solid var(--line);border-radius:8px;display:grid;grid-template-columns:auto minmax(120px,1.1fr) minmax(90px,1fr) 78px 74px;align-items:center;gap:10px;padding:7px 9px;color:var(--text);background:#fbfaf7;text-align:left}.history-row.active .history-main{border-color:var(--primary);background:#f4fbf9}.history-main span,.history-main strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-file{font-size:14px}.history-remark,.history-time,.history-user{color:var(--muted);font-size:12px}.history-remark{color:#52615d}.mini-status{width:fit-content;border:1px solid var(--line);border-radius:999px;padding:3px 7px;color:var(--muted);background:#fff;font-size:11px;font-weight:900}.mini-status.active{color:var(--primary-dark);background:var(--primary-soft);border-color:#b8d9d4}.mini-status.success{color:var(--success);background:var(--success-soft);border-color:#b9dfc6}.mini-status.danger{color:var(--danger);background:var(--danger-soft);border-color:#f4b4aa}.empty-history{border:1px dashed var(--line-strong);border-radius:8px;display:grid;justify-items:center;gap:8px;padding:18px;color:var(--muted);background:#fbfaf7;font-size:13px;text-align:center}.empty-history-visual{width:132px;max-width:74%;height:auto;object-fit:contain}.pager{margin-top:12px}.log-panel{min-height:300px}.log-window{height:324px;overflow:auto;border:1px solid #252a28;border-radius:8px;padding:12px;color:#dfe8e3;background:#171d1b;font-family:Cascadia Mono,JetBrains Mono,Consolas,monospace;font-size:12px;line-height:1.5}.log-line{display:grid;grid-template-columns:16px minmax(0,1fr);gap:4px;align-items:start;padding:2px 0}.log-line svg{margin-top:2px;color:#78bfb5}.log-line span{overflow-wrap:anywhere}.empty-log{color:#8e9993}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:1080px){.workspace{grid-template-columns:1fr}.right-column{grid-template-columns:minmax(0,1fr)}}@media(max-width:720px){.app-shell{padding:14px}.topbar,.result-box,.action-row{align-items:stretch;flex-direction:column}.topbar-actions{justify-content:space-between}.option-grid,.preset-grid,.advanced-grid{grid-template-columns:1fr}.wide-field{grid-column:auto}.download-button,.primary-button,.secondary-button{width:100%}.user-row{grid-template-columns:1fr;align-items:stretch}.history-row{grid-template-columns:1fr 36px}.history-main{grid-template-columns:auto minmax(0,1fr)}.history-remark,.history-time,.history-user{display:none}.brand-mark{width:98px;height:44px}.auth-visual{height:104px}.dropzone-visual{width:70px;height:70px}.role-badge{width:fit-content}}
