@import url("https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap");:root{--bg:#fafbfc;--bg-white:#ffffff;--bg-subtle:#f3f5f8;--bg-dark:#0f1729;--bg-dark-2:#1a2340;--bg-dark-3:#243056;--primary:#4f46e5;--primary-light:#818cf8;--primary-dim:rgba(79,70,229,0.08);--primary-mid:rgba(79,70,229,0.15);--green:#10b981;--green-dim:rgba(16,185,129,0.1);--amber:#f59e0b;--amber-dim:rgba(245,158,11,0.1);--red:#ef4444;--red-dim:rgba(239,68,68,0.1);--blue:#3b82f6;--blue-dim:rgba(59,130,246,0.1);--text:#111827;--text-2:#4b5563;--text-3:#9ca3af;--border:#e5e7eb;--border-2:#d1d5db;--shadow-sm:0 1px 2px rgba(0,0,0,0.05);--shadow-md:0 4px 12px rgba(0,0,0,0.08);--shadow-lg:0 8px 30px rgba(0,0,0,0.12);--mono:"JetBrains Mono",monospace;--sans:"DM Sans",-apple-system,sans-serif;--radius:8px;--radius-lg:12px;--radius-xl:16px}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body,html{height:100%;overflow:hidden}body{font-family:var(--sans);background:var(--bg);color:var(--text);font-size:14px}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-2);border-radius:10px}.app-layout{display:flex;height:100vh}.app-main{flex:1 1;display:flex;flex-direction:column;overflow:hidden}.app-content{flex:1 1;overflow-y:auto;padding:28px}.sidebar{width:260px;min-width:260px;background:var(--bg-dark);display:flex;flex-direction:column;z-index:100}.sidebar-logo{padding:24px 22px;gap:12px;border-bottom:1px solid rgba(255,255,255,.08)}.logo-mark,.sidebar-logo{display:flex;align-items:center}.logo-mark{width:36px;height:36px;background:var(--primary);border-radius:10px;justify-content:center;position:relative;overflow:hidden}.logo-mark:before{content:"";position:absolute;width:18px;height:18px;border:2.5px solid white;border-radius:3px;transform:rotate(45deg);top:5px}.logo-mark:after{content:"";position:absolute;width:8px;height:8px;background:white;border-radius:50%;bottom:6px}.logo-text{font-weight:700;font-size:17px;color:white;letter-spacing:-.3px}.logo-text span{color:var(--primary-light)}.sidebar-nav{flex:1 1;padding:16px 12px;overflow-y:auto}.nav-label{font-family:var(--mono);font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:rgba(255,255,255,.3);padding:14px 12px 8px}.nav-item{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:var(--radius);cursor:pointer;font-size:13.5px;color:rgba(255,255,255,.55);transition:all .15s;font-weight:500;margin-bottom:2px;text-decoration:none}.nav-item:hover{background:rgba(255,255,255,.06);color:rgba(255,255,255,.85)}.nav-item.active{background:var(--primary);color:white}.nav-item svg{width:18px;height:18px;flex-shrink:0}.nav-badge{margin-left:auto;font-family:var(--mono);font-size:10px;font-weight:600;background:rgba(255,255,255,.12);padding:2px 7px;border-radius:10px}.nav-item.active .nav-badge{background:rgba(255,255,255,.2)}.sidebar-bottom{padding:16px;border-top:1px solid rgba(255,255,255,.08)}.usage-card{background:var(--bg-dark-2);border-radius:var(--radius);padding:14px}.usage-label{font-size:11px;color:rgba(255,255,255,.4);margin-bottom:8px}.usage-bar-bg{height:4px;background:rgba(255,255,255,.1);border-radius:2px;overflow:hidden;margin-bottom:6px}.usage-bar{height:100%;background:var(--primary-light);border-radius:2px;width:35%}.usage-count{font-family:var(--mono);font-size:11px;color:rgba(255,255,255,.5)}.usage-count strong{color:white}.topbar{height:60px;min-height:60px;justify-content:space-between;padding:0 28px;background:var(--bg-white);border-bottom:1px solid var(--border)}.topbar,.topbar-left{display:flex;align-items:center}.topbar-left{gap:14px}.topbar-title{font-weight:700;font-size:16px;letter-spacing:-.3px}.topbar-tag{font-family:var(--mono);font-size:10px;font-weight:600;color:var(--primary);background:var(--primary-dim);padding:4px 10px;border-radius:20px}.topbar-right{gap:12px}.topbar-right,.topbar-search{display:flex;align-items:center}.topbar-search{gap:8px;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius);padding:8px 14px;width:260px;transition:border-color .15s}.topbar-search:focus-within{border-color:var(--primary)}.topbar-search input{background:none;border:none;font-size:13px;color:var(--text);outline:none;flex:1 1;font-family:var(--sans)}.topbar-search input::placeholder{color:var(--text-3)}.topbar-search kbd{font-family:var(--mono);font-size:10px;color:var(--text-3);border:1px solid var(--border);padding:2px 6px;border-radius:4px;background:var(--bg-white)}.avatar{background:linear-gradient(135deg,var(--primary),var(--primary-light));border-radius:50%;font-size:13px;font-weight:700;color:white}.avatar,.icon-btn{width:34px;height:34px;display:flex;align-items:center;justify-content:center;cursor:pointer}.icon-btn{border:1px solid var(--border);border-radius:var(--radius);background:none;color:var(--text-2);transition:all .15s}.icon-btn:hover{border-color:var(--primary);color:var(--primary)}.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;border-radius:var(--radius);font-size:13px;font-weight:600;border:none;cursor:pointer;transition:all .15s;font-family:var(--sans)}.btn-primary{background:var(--primary);color:white}.btn-primary:hover{background:#4338CA}.btn-ghost{background:rgba(255,255,255,.1);color:white;border:1px solid rgba(255,255,255,.15)}.btn-ghost:hover{background:rgba(255,255,255,.15)}.btn-outline{background:none;color:var(--primary);border:1px solid var(--primary)}.btn-outline:hover{background:var(--primary-dim)}.btn-sm{padding:7px 14px;font-size:12px}.welcome-banner{background:linear-gradient(135deg,var(--bg-dark),var(--bg-dark-2));border-radius:var(--radius-xl);padding:32px 36px;color:white;margin-bottom:28px;position:relative;overflow:hidden}.welcome-banner:after{content:"";position:absolute;right:-40px;top:-40px;width:200px;height:200px;background:radial-gradient(circle,rgba(79,70,229,.3),transparent 70%)}.welcome-title{font-size:22px;font-weight:700;margin-bottom:6px;letter-spacing:-.5px}.welcome-sub{font-size:14px;color:rgba(255,255,255,.6);max-width:400px}.welcome-actions{display:flex;gap:10px;margin-top:18px}.stat-row{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:16px;gap:16px;margin-bottom:28px}.stat-card{background:var(--bg-white);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px;transition:all .2s}.stat-card:hover{box-shadow:var(--shadow-md);border-color:var(--border-2)}.stat-header{justify-content:space-between;margin-bottom:12px}.stat-header,.stat-icon{display:flex;align-items:center}.stat-icon{width:40px;height:40px;border-radius:var(--radius);justify-content:center;font-size:18px}.stat-trend{font-family:var(--mono);font-size:11px;font-weight:600;display:flex;align-items:center;gap:3px}.stat-trend.up{color:var(--green)}.stat-value{font-size:28px;font-weight:700;letter-spacing:-1px;margin-bottom:2px}.stat-label{font-size:12px;color:var(--text-3)}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.section-title{font-size:16px;font-weight:700;letter-spacing:-.3px}.section-link{font-size:12px;font-weight:600;color:var(--primary);cursor:pointer;text-decoration:none}.table-wrap{background:var(--bg-white);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.table-wrap table{width:100%;border-collapse:collapse}.table-wrap thead{background:var(--bg-subtle)}.table-wrap th{font-family:var(--mono);font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--text-3);padding:12px 16px;text-align:left;font-weight:600}.table-wrap td{padding:14px 16px;border-top:1px solid var(--border);font-size:13px}.table-wrap tr:hover td{background:var(--bg-subtle)}.status-badge{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:11px;font-weight:600;padding:4px 10px;border-radius:20px}.status-badge.done{background:var(--green-dim);color:var(--green)}.status-badge.progress{background:var(--blue-dim);color:var(--blue)}.status-badge.review{background:var(--amber-dim);color:var(--amber)}.status-badge.draft{background:var(--primary-dim);color:var(--primary)}.status-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.step-indicator{display:flex;margin-bottom:32px;background:var(--bg-white);border:1px solid var(--border);border-radius:var(--radius-lg);padding:4px}.step{flex:1 1;display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:var(--radius);font-size:13px;font-weight:500;color:var(--text-3);cursor:pointer;transition:all .15s}.step.active{background:var(--primary);color:white}.step.done{color:var(--green)}.step-num{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:12px;font-weight:700;background:var(--bg-subtle);flex-shrink:0}.step.active .step-num{background:rgba(255,255,255,.2);color:white}.step.done .step-num{background:var(--green-dim);color:var(--green)}.upload-area{display:grid;grid-template-columns:1fr 1fr;grid-gap:24px;gap:24px}.upload-zone{background:var(--bg-white);border:2px dashed var(--border-2);border-radius:var(--radius-xl);padding:48px 32px;text-align:center;cursor:pointer;transition:all .2s}.upload-zone:hover{border-color:var(--primary);background:var(--primary-dim)}.upload-zone.uploaded{border-color:var(--green);background:var(--green-dim);border-style:solid}.upload-icon{width:56px;height:56px;background:var(--primary-dim);border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 16px;font-size:24px}.upload-title{font-weight:700;font-size:15px;margin-bottom:4px}.upload-sub{font-size:12px;color:var(--text-3)}.upload-formats{font-family:var(--mono);font-size:10px;color:var(--text-3);margin-top:12px}.config-panel{background:var(--bg-white);border:1px solid var(--border);border-radius:var(--radius-xl);padding:28px}.config-title{font-weight:700;font-size:15px;margin-bottom:20px}.field{margin-bottom:18px}.field-label{font-size:12px;font-weight:600;color:var(--text-2);margin-bottom:6px;display:block}.field-input{width:100%;padding:10px 14px;border:1px solid var(--border);border-radius:var(--radius);font-size:13px;font-family:var(--sans);color:var(--text);background:var(--bg-subtle);outline:none;transition:border-color .15s}.field-input:focus{border-color:var(--primary);background:var(--bg-white)}select.field-input{cursor:pointer}textarea.field-input{min-height:80px;resize:vertical}.tag-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.tag{font-family:var(--mono);font-size:11px;font-weight:500;padding:5px 11px;border-radius:20px;border:1px solid var(--border);cursor:pointer;transition:all .15s;background:var(--bg-white);color:var(--text-2)}.tag:hover{color:var(--primary)}.tag.selected,.tag:hover{border-color:var(--primary)}.tag.selected{background:var(--primary);color:white}.pipeline-wrap{display:grid;grid-template-columns:1fr 340px;grid-gap:24px;gap:24px}.pipeline-main{background:var(--bg-white);border:1px solid var(--border);border-radius:var(--radius-xl);padding:28px}.pipeline-title{font-weight:700;font-size:16px;margin-bottom:20px}.agent-step{display:flex;align-items:flex-start;gap:16px;padding:18px;border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:12px;transition:all .2s}.agent-step.running{border-color:var(--primary);background:var(--primary-dim)}.agent-step.done{border-color:var(--green);background:var(--green-dim)}.agent-step.waiting{opacity:.5}.agent-step.error{border-color:var(--red);background:var(--red-dim)}.agent-step-icon{width:42px;height:42px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}.agent-step.running .agent-step-icon{background:var(--primary-mid)}.agent-step.done .agent-step-icon{background:var(--green-dim)}.agent-step.waiting .agent-step-icon{background:var(--bg-subtle)}.agent-step-info{flex:1 1}.agent-step-name{font-weight:700;font-size:14px;margin-bottom:3px}.agent-step-desc{font-size:12px;color:var(--text-2);line-height:1.4}.agent-step-meta{gap:12px;margin-top:8px;color:var(--text-3)}.agent-step-meta,.agent-step-status{display:flex;font-family:var(--mono);font-size:10px}.agent-step-status{font-weight:600;padding:4px 10px;border-radius:20px;align-self:flex-start;flex-shrink:0;align-items:center;gap:6px}.agent-step.running .agent-step-status{background:var(--primary);color:white}.agent-step.done .agent-step-status{background:var(--green);color:white}.agent-step.waiting .agent-step-status{background:var(--bg-subtle);color:var(--text-3)}.agent-step.error .agent-step-status{background:var(--red);color:white}.agent-connector{width:2px;height:12px;background:var(--border);margin:0 0 0 38px}.agent-connector.active{background:var(--green)}.pipeline-log{background:var(--bg-dark);border-radius:var(--radius-xl);padding:20px;color:white;max-height:500px;overflow-y:auto}.pipeline-log-title{font-family:var(--mono);font-size:11px;letter-spacing:1px;text-transform:uppercase;color:rgba(255,255,255,.4);margin-bottom:14px}.log-entry{display:flex;gap:10px;padding:6px 0;font-size:12px;border-bottom:1px solid rgba(255,255,255,.06)}.log-time{font-family:var(--mono);font-size:10px;color:rgba(255,255,255,.3);min-width:55px}.log-msg{color:rgba(255,255,255,.7)}.log-hl{color:var(--primary-light)}.log-ok{color:var(--green)}.log-warn{color:var(--amber)}.pipeline-stats{background:var(--bg-white);border:1px solid var(--border);border-radius:var(--radius-xl);padding:20px;margin-top:16px}.ps-title{font-family:var(--mono);font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--text-3);margin-bottom:14px}.ps-row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border)}.ps-row:last-child{border:none}.ps-label{font-size:12px;color:var(--text-2)}.ps-val{font-family:var(--mono);font-size:13px;font-weight:600}.review-layout{display:grid;grid-template-columns:260px 1fr;grid-gap:24px;gap:24px}.review-nav{background:var(--bg-white);border:1px solid var(--border);border-radius:var(--radius-xl);padding:20px;height:-moz-fit-content;height:fit-content;position:-webkit-sticky;position:sticky;top:0}.review-nav-title{font-family:var(--mono);font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--text-3);margin-bottom:14px}.review-nav-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius);cursor:pointer;font-size:13px;color:var(--text-2);transition:all .15s;margin-bottom:2px}.review-nav-item:hover{background:var(--bg-subtle)}.review-nav-item.active{background:var(--primary-dim);color:var(--primary);font-weight:600}.review-nav-check{width:18px;height:18px;border:2px solid var(--border-2);border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:10px}.review-nav-item.checked .review-nav-check{background:var(--green);border-color:var(--green);color:white}.review-content{background:var(--bg-white);border:1px solid var(--border);border-radius:var(--radius-xl);padding:36px}.review-section-label{font-family:var(--mono);font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--primary);margin-bottom:8px}.review-section-title{font-size:20px;font-weight:700;letter-spacing:-.5px;margin-bottom:6px}.review-section-req{font-size:12px;color:var(--text-3);background:var(--bg-subtle);padding:10px 14px;border-radius:var(--radius);margin-bottom:20px;border-left:3px solid var(--primary);font-style:italic}.review-body{font-size:14px;line-height:1.75;color:var(--text-2)}.review-body p{margin-bottom:14px}.review-actions{display:flex;gap:10px;margin-top:24px;padding-top:20px;border-top:1px solid var(--border)}.review-score{margin-left:auto;display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:12px;color:var(--text-3)}.review-score strong{color:var(--green);font-size:16px}.kb-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:16px;gap:16px;margin-top:16px}.kb-card{background:var(--bg-white);border:1px solid var(--border);border-radius:var(--radius-lg);padding:22px;cursor:pointer;transition:all .2s}.kb-card:hover{box-shadow:var(--shadow-md);border-color:var(--border-2)}.kb-icon{font-size:28px;margin-bottom:12px}.kb-title{font-weight:700;font-size:14px;margin-bottom:4px}.kb-count{font-family:var(--mono);font-size:11px;color:var(--text-3)}.kb-desc{font-size:12px;color:var(--text-2);margin-top:8px;line-height:1.5}.kb-upload-prompt{background:var(--primary-dim);border:2px dashed var(--primary);border-radius:var(--radius-lg);padding:28px;text-align:center;margin-top:24px;cursor:pointer;transition:background .15s}.kb-upload-prompt:hover{background:var(--primary-mid)}@keyframes spin{to{transform:rotate(1turn)}}.spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.2);border-top-color:white;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}.spinner.dark{border-color:var(--border);border-top-color:var(--primary)}.page-enter{animation:fadeUp .2s ease}@keyframes fadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (max-width:1100px){.pipeline-wrap,.review-layout,.upload-area{grid-template-columns:1fr}.kb-grid,.stat-row{grid-template-columns:repeat(2,1fr)}}