#admin-app{height:100%}.sku-ro-fields{opacity:.58}.sku-ro-fields>*{pointer-events:none!important}:root{--line-soft:#f1f5f9;--muted:#64748b;--subtle:#94a3b8;--green:#10b981;--green-dark:#047857;--amber:#f59e0b;--amber-dark:#b45309;--red:#ef4444;--red-dark:#b91c1c;--purple:#a855f7;--purple-dark:#6d28d9;--cyan-dark:#0e7490;--sidebar-a:#0f172a;--sidebar-b:#1e293b;--shadow-sm:0 1px 2px rgba(15,23,42,0.04);--shadow-lg:0 12px 28px rgba(15,23,42,0.08)}*{box-sizing:border-box}#admin-app,#app,body,html{min-height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Arial,sans-serif;font-size:13px}a{color:inherit;text-decoration:none}button,input,select,textarea{font-family:inherit}.admin-shell{min-height:100vh;display:flex;background:var(--bg)}.admin-sidebar{width:268px;height:100vh;position:sticky;top:0;flex-shrink:0;display:flex;flex-direction:column;background:linear-gradient(180deg,var(--sidebar-a),var(--sidebar-b));color:#cbd5e1}.brand{height:72px;gap:12px;padding:0 16px;border-bottom:1px solid hsla(0,0%,100%,.08)}.brand,.brand-mark{display:flex;align-items:center}.brand-mark{width:38px;height:38px;border-radius:10px;justify-content:center;letter-spacing:0;background:linear-gradient(135deg,var(--primary),var(--primary-dark));box-shadow:0 0 16px rgba(14,165,233,.45)}.brand-mark,.brand-name{color:#fff;font-weight:800}.brand-name{font-size:15px}.brand-meta{margin-top:2px;color:#94a3b8;font-size:10.5px;font-family:JetBrains Mono,Consolas,monospace}.nav-scroll{flex:1;overflow-y:auto;padding:10px 8px}.nav-heading{padding:16px 8px 6px;color:#64748b;font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.nav-link{min-height:36px;display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;color:#cbd5e1;transition:all .15s;position:relative}.nav-link:hover{background:hsla(0,0%,100%,.05);color:#fff}.nav-link.active{color:#fff;background:linear-gradient(90deg,rgba(14,165,233,.2),rgba(14,165,233,.04))}.nav-link.active:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;background:var(--primary);border-radius:0 3px 3px 0}.nav-link i{width:16px;text-align:center}.nav-link span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-link b{min-width:20px;padding:1px 6px;border-radius:999px;background:rgba(14,165,233,.18);color:#7dd3fc;font-family:JetBrains Mono,Consolas,monospace;font-size:10.5px}.nav-link.warning b{background:rgba(239,68,68,.18);color:#fca5a5}.nav-heading.sub{padding:8px 8px 4px 22px;font-size:10px;color:#64748b}.nav-link.sub{padding-left:22px;min-height:32px}.nav-link.sub,.nav-link.sub i{font-size:13px}.product-group{margin:6px 0 8px;border:1px solid hsla(0,0%,100%,.06);border-radius:8px;overflow:hidden;background:hsla(0,0%,100%,.025)}.product-group-head{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid hsla(0,0%,100%,.05)}.product-group-head.collapsible{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-bottom:none}.product-group-head.collapsible:hover{background:hsla(0,0%,100%,.04)}.product-group-head .collapse-arrow{margin-left:auto;color:#64748b;font-size:11px;flex-shrink:0}.nav-heading.collapsible{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;display:flex;align-items:center}.nav-heading.collapsible:hover{color:#94a3b8}.nav-heading.collapsible em{color:#64748b;font-style:normal;font-size:10px;font-family:JetBrains Mono,Consolas,monospace}.nav-heading.collapsible .collapse-arrow{color:#64748b;font-size:11px;flex-shrink:0}.nav-seq{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:4px;border-radius:3px;background:rgba(148,163,184,.15);color:#94a3b8;font-size:10px;font-family:JetBrains Mono,Consolas,monospace;font-weight:700;flex-shrink:0}.nav-seq-icon{font-size:13px;opacity:.9}.nav-seq-icon,.sub-seq{margin-right:5px;flex-shrink:0}.sub-seq{display:inline-flex;align-items:center;justify-content:center;width:18px;height:14px;color:#64748b;font-size:10px;font-family:JetBrains Mono,Consolas,monospace}.nav-link.workflow-sub{padding-left:12px}.workflow-item{display:flex;align-items:center;min-height:34px;padding:5px 10px;border-radius:6px;color:#cbd5e1;cursor:pointer;transition:all .15s;position:relative}.workflow-item:hover{background:hsla(0,0%,100%,.05);color:#fff}.workflow-item.active{color:#fff;background:linear-gradient(90deg,rgba(14,165,233,.2),rgba(14,165,233,.04))}.workflow-item.active:before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;background:var(--primary);border-radius:0 3px 3px 0}.wf-seq{width:20px;flex-shrink:0;text-align:center;font-size:11px;font-family:JetBrains Mono,Consolas,monospace;color:#64748b}.wf-seq-l3{width:28px;text-align:right;padding-right:2px;color:#94a3b8;font-size:11px;font-weight:600;font-variant-numeric:tabular-nums}.workflow-item.sub-indent{padding-left:30px}.workflow-item.sub-indent-l4{padding-left:44px}.wf-seq-l4{width:34px;text-align:right;padding-right:2px;color:#94a3b8;font-size:10px;font-weight:600;font-variant-numeric:tabular-nums;flex-shrink:0;font-family:JetBrains Mono,Consolas,monospace}.wf-name{flex:1;min-width:0;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-left:6px}.wf-count{flex-shrink:0;min-width:24px;text-align:right;font-style:normal;font-size:10.5px;font-family:JetBrains Mono,Consolas,monospace;color:#7dd3fc;background:rgba(14,165,233,.18);padding:1px 6px;border-radius:999px;margin-left:4px}.wf-count.wf-warn{color:#fca5a5;background:rgba(239,68,68,.18)}.wf-arrow{flex-shrink:0;font-size:11px;color:#64748b;margin-left:4px}.product-link.sub-indent{padding-left:36px}.product-group-head .dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.product-group-head strong{color:#fff;font-size:11px;font-family:JetBrains Mono,Consolas,monospace}.product-group-head small{flex:1;min-width:0;color:#94a3b8;font-size:10.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.product-group-head em{color:#64748b;font-style:normal;font-size:10px;font-family:JetBrains Mono,Consolas,monospace}.product-link{display:flex;align-items:center;gap:8px;padding:6px 10px;color:#94a3b8}.product-link.active,.product-link:hover{background:rgba(14,165,233,.09);color:#fff}.product-link span{width:56px;flex-shrink:0;color:#cbd5e1;font-weight:800;font-size:10.5px;font-family:JetBrains Mono,Consolas,monospace}.product-link small{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.product-group.gia .dot{background:#0ea5e9;box-shadow:0 0 0 3px rgba(14,165,233,.2)}.product-group.p2p .dot{background:#a855f7;box-shadow:0 0 0 3px rgba(168,85,247,.18)}.product-group.hw .dot{background:#f59e0b;box-shadow:0 0 0 3px rgba(245,158,11,.18)}.product-group.ps .dot{background:#f43f5e;box-shadow:0 0 0 3px rgba(244,63,94,.18)}.user-strip{display:flex;align-items:center;gap:10px;padding:12px;border-top:1px solid hsla(0,0%,100%,.1)}.avatar,.top-avatar{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;background:linear-gradient(135deg,var(--primary),#6366f1)}.user-copy{flex:1;min-width:0}.user-copy div{color:#fff;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.icon-action,.user-copy small{color:#94a3b8}.icon-action{border:0;background:transparent;cursor:pointer;padding:6px;border-radius:8px}.icon-action:hover{color:#fff;background:hsla(0,0%,100%,.06)}.admin-main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:60px;flex-shrink:0;gap:16px;padding:0 24px;background:#fff;border-bottom:1px solid var(--line)}.crumb,.topbar{display:flex;align-items:center}.crumb{gap:8px;color:var(--muted)}.crumb i{color:#cbd5e1;font-style:normal}.crumb strong{color:#334155;font-weight:800}.crumb small{color:var(--subtle)}.top-actions{margin-left:auto;gap:10px}.global-search,.top-actions{display:flex;align-items:center}.global-search{width:300px;height:34px;gap:8px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:#f8fafc;color:var(--subtle)}.global-search input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:var(--text)}.currency-seg{display:inline-flex;padding:2px;border-radius:8px;background:#f1f5f9}.currency-seg button{border:0;background:transparent;color:var(--muted);padding:5px 8px;border-radius:6px;font-size:11.5px;font-weight:800;font-family:JetBrains Mono,Consolas,monospace;cursor:pointer}.currency-seg button.active{background:#fff;color:var(--primary);box-shadow:var(--shadow-sm)}.top-icon{width:34px;height:34px;border:0;border-radius:8px;background:transparent;color:var(--muted);position:relative;cursor:pointer}.top-icon:hover{background:#f1f5f9;color:var(--text)}.top-icon span{position:absolute;top:2px;right:1px;min-width:15px;height:15px;border-radius:999px;background:var(--red);color:#fff;font-size:9px;font-weight:800}.content-area{padding:24px;flex:1;overflow-y:auto}.module-hero,.page-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:18px}.eyebrow{margin:0 0 5px;color:var(--primary);font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.module-hero h1,.page-hero h1{margin:0;font-size:28px;line-height:1.1;font-weight:800;color:#1e293b}.hero-copy,.module-hero p:not(.eyebrow){max-width:780px;margin:8px 0 0;color:var(--muted);line-height:1.55}.hero-side{min-width:240px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#fff;box-shadow:var(--shadow-sm);display:grid;gap:4px}.hero-side small,.hero-side span{color:var(--muted);font-size:11px}.hero-side strong{font-family:JetBrains Mono,Consolas,monospace;font-size:14px}.ghost-link,.hero-side button{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--muted);padding:7px 10px;font-weight:700;cursor:pointer}.ghost-link:hover,.hero-side button:hover{color:var(--primary);border-color:#7dd3fc}.health-grid,.stage-grid,.workflow-board{display:grid;gap:12px}.stage-grid{grid-template-columns:repeat(6,minmax(0,1fr));margin-bottom:20px}.health-card,.panel,.stage-card-v32,.workflow-card{background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-sm)}.stage-card-v32,.workflow-card{padding:14px;position:relative;overflow:hidden;cursor:pointer;transition:all .15s}.stage-card-v32:hover,.workflow-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);border-color:#bae6fd}.stage-card-v32.warning{border-color:#fca5a5;background:linear-gradient(180deg,#fef2f2,#fff 42%)}.accent,.card-accent{position:absolute;top:0;left:0;right:0;height:3px}.stage-top{display:flex;justify-content:space-between;gap:8px}.stage-top small,.workflow-card small{color:var(--subtle);font-family:JetBrains Mono,Consolas,monospace;font-weight:800;font-size:10.5px}.stage-card-v32 h3,.workflow-card h3{margin:4px 0 0;font-size:14px}.stage-card-v32>strong,.workflow-card b{display:block;margin-top:12px;font-size:28px;line-height:1;font-weight:800;font-family:JetBrains Mono,Consolas,monospace}.stage-card-v32 p,.workflow-card p{margin:8px 0 0;color:var(--muted);font-size:11.5px;line-height:1.45}.count-badge,.status-chip,.status-pill{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:10.5px;font-weight:800}.content-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(360px,5fr);gap:20px;margin-bottom:20px}.panel{overflow:hidden;margin-bottom:20px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line-soft)}.panel-head h2{margin:0;font-size:15px;font-weight:800;color:var(--text)}.panel-head p{margin:3px 0 0;color:var(--muted);font-size:11.5px}.funnel-list{padding:14px 18px 18px}.funnel-row-v32{display:flex;align-items:center;gap:12px;padding:8px 0}.funnel-row-v32 span{width:88px;color:var(--muted);font-weight:700}.funnel-row-v32 .track{flex:1;height:24px;border-radius:6px;background:#f1f5f9;overflow:hidden}.funnel-row-v32 b{height:24px;display:flex;justify-content:flex-end;align-items:center;padding-right:8px;color:#fff;border-radius:6px;font-size:11px}.funnel-row-v32 b,.funnel-row-v32 em{font-family:JetBrains Mono,Consolas,monospace}.funnel-row-v32 em{width:58px;text-align:right;color:var(--muted);font-style:normal}.todo-list-v32{padding:8px 12px 12px}.todo-row{display:grid;grid-template-columns:58px minmax(0,1fr) 46px;gap:10px;align-items:center;padding:8px;border-radius:8px}.todo-row:hover{background:#f8fafc}.todo-row strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.todo-row small{color:var(--muted)}.todo-row em{color:var(--subtle);font-style:normal;font-family:JetBrains Mono,Consolas,monospace;text-align:right}.todo-row em.warn{color:var(--amber-dark);font-weight:800}.todo-row em.danger{color:var(--red-dark);font-weight:800}.todo-stage{padding:2px 6px;border-radius:5px;font-size:10px;font-weight:800;font-family:JetBrains Mono,Consolas,monospace}.todo-stage.red{background:#fee2e2;color:var(--red-dark)}.todo-stage.amber{background:#fef3c7;color:var(--amber-dark)}.todo-stage.green{background:#d1fae5;color:var(--green-dark)}.todo-stage.sky{background:#dbeafe;color:#1d4ed8}.workflow-demo{padding:14px 18px 18px;display:grid;gap:12px}.workflow-sample{border:1px solid var(--line-soft);border-radius:10px;padding:12px}.sample-title{display:flex;gap:10px;align-items:center;color:var(--muted);margin-bottom:10px}.sample-title b{color:var(--text);font-family:JetBrains Mono,Consolas,monospace}.progress-line{display:flex;align-items:center}.progress-node{min-width:92px;display:grid;justify-items:center;gap:5px;color:var(--subtle);text-align:center}.progress-node span{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid var(--line);font-weight:800;background:#fff}.progress-node b{font-size:11px;color:var(--muted)}.progress-node small{font-size:10px;font-family:JetBrains Mono,Consolas,monospace}.progress-node.done span{background:var(--green);border-color:var(--green);color:#fff}.progress-node.done b{color:var(--green-dark)}.progress-node.current span{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 0 0 5px rgba(14,165,233,.18)}.progress-node.current.danger span{background:var(--red);border-color:var(--red)}.progress-node.current b{color:var(--primary)}.progress-line>i{flex:1;height:2px;background:var(--line);margin:-30px -5px 0}.progress-line>i.done{background:var(--green)}.health-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.health-card{display:flex;align-items:center;gap:10px;padding:12px}.health-card>span{width:8px;height:8px;border-radius:50%;flex-shrink:0}.health-card>span.ok{background:var(--green)}.health-card>span.warn{background:var(--amber)}.health-card strong{display:block}.health-card small{color:var(--muted);font-family:JetBrains Mono,Consolas,monospace;font-size:10.5px}.workflow-board{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:20px}.status-chip.green{background:#d1fae5;color:var(--green-dark)}.status-chip.sky{background:#dbeafe;color:#1d4ed8}.status-chip.red{background:#fee2e2;color:var(--red-dark)}.prototype-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;padding:14px}.prototype-tile{border:1px solid var(--line);border-radius:10px;padding:13px;transition:all .15s;display:grid;gap:5px}.prototype-tile:hover{border-color:#7dd3fc;box-shadow:var(--shadow-lg);transform:translateY(-1px)}.prototype-tile strong{font-size:13px}.prototype-tile small{color:var(--muted);line-height:1.4}.product-code{justify-self:start;border-radius:5px;padding:2px 8px;font-size:10.5px;font-weight:800;font-family:JetBrains Mono,Consolas,monospace}.product-code.gia{background:#dbeafe;color:#1d4ed8}.product-code.p2p{background:#ede9fe;color:var(--purple-dark)}.product-code.hw{background:#fef3c7;color:var(--amber-dark)}.product-code.ps{background:#fee2e2;color:var(--red-dark)}.product-code.slate{background:#f1f5f9;color:#475569}.product-cfg-page{padding:0}.product-cfg-page .prod-hd{border-radius:12px}.el-table th.el-table__cell{color:var(--muted)!important}.table-host{position:relative}.row-action-overlay{position:absolute;right:16px;z-index:20;justify-content:flex-end;pointer-events:none}.ra-bar,.row-action-overlay{display:flex;align-items:center}.ra-bar{gap:2px;padding:4px 6px;background:#fff;border:1px solid #e6ebf2;border-radius:12px;box-shadow:0 10px 26px -10px rgba(15,23,42,.35);pointer-events:auto;animation:rowActionsIn .14s ease}.ra-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:none;background:transparent;border-radius:9px;color:#475569;cursor:pointer;transition:background .12s,color .12s}.ra-btn i{font-size:21px}.ra-btn:hover{background:#f1f5f9;color:#0f172a}.ra-btn.sky{color:#0ea5e9}.ra-btn.sky:hover{background:#e0f2fe}.ra-btn.ok{color:#059669}.ra-btn.ok:hover{background:#d1fae5}.ra-btn.warn{color:#f59e0b}.ra-btn.warn:hover{background:#fef3c7}.ra-btn.danger{color:#ef4444}.ra-btn.danger:hover{background:#fee2e2}.ra-btn.muted{color:#cbd5e1}@keyframes rowActionsIn{0%{opacity:0;transform:translateX(12px)}to{opacity:1;transform:translateX(0)}}@media(max-width:1280px){.stage-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.content-grid{grid-template-columns:1fr}.health-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:900px){.admin-sidebar,.top-actions .global-search{display:none}.health-grid,.stage-grid,.workflow-board{grid-template-columns:1fr}.content-area{padding:16px}.module-hero,.page-hero{align-items:flex-start;flex-direction:column}}:root{--bg:#f8fafc;--card:#fff;--line:#e2e8f0;--side1:#0f172a;--side2:#1e293b;--primary:#0ea5e9;--primary-dark:#0284c7;--ok:#10b981;--warn:#f59e0b;--danger:#ef4444;--info:#3b82f6;--purple:#8b5cf6;--rose:#f43f5e;--text:#0f172a;--text-muted:#64748b;--text-subtle:#94a3b8;--src-web:#0ea5e9;--src-api:#8b5cf6;--src-mnl:#f59e0b}body,html{background:var(--bg);color:var(--text);font-family:Inter,sans-serif}.font-display{font-family:Plus Jakarta Sans,sans-serif}.font-mono{font-family:JetBrains Mono,monospace}.font-mono,.num{font-variant-numeric:tabular-nums}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 1px 2px rgba(15,23,42,.04)}.pill{padding:2px 10px;border-radius:999px}.badge,.pill{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;line-height:18px}.badge{padding:2px 8px;border-radius:6px}.sidebar{width:248px;background:linear-gradient(180deg,var(--side1),var(--side2));display:flex;flex-direction:column;flex-shrink:0;height:100vh;position:sticky;top:0}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;color:#cbd5e1;font-size:13px;cursor:pointer;transition:all .15s;position:relative;text-decoration:none}.nav-item:hover{background:hsla(0,0%,100%,.04);color:#fff}.nav-item.active{background:linear-gradient(90deg,rgba(14,165,233,.18),rgba(14,165,233,.04));color:#fff}.nav-item.active:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;background:var(--primary);border-radius:0 3px 3px 0}.nav-item .badge-mini{margin-left:auto;font-family:JetBrains Mono,monospace;font-size:10.5px;background:rgba(14,165,233,.18);color:#7dd3fc;padding:1px 6px;border-radius:999px;font-weight:700}.nav-item.has-warn .badge-mini{background:rgba(239,68,68,.18);color:#fca5a5}.nav-section{font-size:10.5px;font-weight:700;color:#475569;letter-spacing:.08em;text-transform:uppercase;padding:14px 14px 6px}.prod-group{margin:6px 8px 8px;border-radius:8px;background:hsla(0,0%,100%,.025);border:1px solid hsla(0,0%,100%,.04);overflow:hidden}.prod-cat{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid hsla(0,0%,100%,.04)}.prod-cat .dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.prod-cat .code{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;color:#fff;letter-spacing:.04em}.prod-cat .name{font-size:11px;color:#94a3b8;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prod-cat .count{font-family:JetBrains Mono,monospace;font-size:10px;color:#64748b;flex-shrink:0}.prod-leaf{display:flex;align-items:center;padding:5px 10px 5px 6px;color:#94a3b8;font-size:11.5px;cursor:pointer;text-decoration:none}.prod-leaf:hover{background:rgba(14,165,233,.08);color:#fff}.prod-leaf .branch{color:#475569;width:18px;flex-shrink:0;text-align:center;line-height:1}.prod-leaf .branch,.prod-leaf .pcode{font-family:JetBrains Mono,monospace;font-size:11px}.prod-leaf .pcode{font-weight:700;color:#cbd5e1;min-width:64px;display:inline-block}.prod-leaf .pname{font-size:10.5px;color:#64748b;margin-left:6px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prod-leaf:hover .branch,.prod-leaf:hover .pcode,.prod-leaf:hover .pname{color:#fff}.prod-group.gia .prod-cat{background:linear-gradient(90deg,rgba(14,165,233,.18),rgba(14,165,233,.04))}.prod-group.gia .prod-cat .dot{background:#0ea5e9;box-shadow:0 0 0 3px rgba(14,165,233,.2)}.prod-group.p2p .prod-cat{background:linear-gradient(90deg,rgba(139,92,246,.18),rgba(139,92,246,.04))}.prod-group.p2p .prod-cat .dot{background:#8b5cf6;box-shadow:0 0 0 3px rgba(139,92,246,.2)}.prod-group.hw .prod-cat{background:linear-gradient(90deg,rgba(245,158,11,.18),rgba(245,158,11,.04))}.prod-group.hw .prod-cat .dot{background:#f59e0b;box-shadow:0 0 0 3px rgba(245,158,11,.2)}.prod-group.ps .prod-cat{background:linear-gradient(90deg,rgba(244,63,94,.18),rgba(244,63,94,.04))}.prod-group.ps .prod-cat .dot{background:#f43f5e;box-shadow:0 0 0 3px rgba(244,63,94,.2)}.cur-seg{display:inline-flex;background:#f1f5f9;border-radius:8px;padding:2px;gap:0}.cur-seg button{padding:5px 9px;font-size:11.5px;font-weight:700;color:var(--text-muted);border-radius:6px;font-family:JetBrains Mono,monospace;border:none;background:transparent;cursor:pointer}.cur-seg button.on{background:#fff;color:var(--primary);box-shadow:0 1px 2px rgba(0,0,0,.06)}.input{padding:8px 12px;border:1px solid var(--line);background:#f8fafc;border-radius:8px;font-size:13px;outline:none;transition:all .15s}.input:focus{background:#fff;border-color:#7dd3fc;box-shadow:0 0 0 3px rgba(14,165,233,.15)}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:600;border-radius:8px;cursor:pointer;border:none;transition:all .15s}.btn-primary{background:linear-gradient(135deg,#0ea5e9,#0284c7);color:#fff;box-shadow:0 4px 12px rgba(14,165,233,.25)}.btn-primary:hover{filter:brightness(1.05)}.btn-ghost{background:#fff;border:1px solid var(--line);color:var(--text-muted)}.btn-ghost:hover{background:#f1f5f9;color:var(--text)}.btn-danger{background:linear-gradient(135deg,#ef4444,#b91c1c);color:#fff}.btn-success{background:linear-gradient(135deg,#10b981,#059669);color:#fff}.icon-btn{padding:7px;border-radius:8px;color:#64748b;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none}.icon-btn:hover{background:#f1f5f9;color:var(--text)}.src-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.src-card{padding:14px;border-radius:12px;border:1px solid var(--line);background:#fff;display:flex;align-items:center;gap:14px;cursor:pointer;transition:all .15s;position:relative;overflow:hidden}.src-card:hover{transform:translateY(-1px);box-shadow:0 8px 22px rgba(15,23,42,.06)}.src-card.active{border-color:#7dd3fc;box-shadow:0 0 0 3px rgba(14,165,233,.12)}.src-card .accent{position:absolute;top:0;left:0;right:0;height:3px}.src-card .ico{width:42px;height:42px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:18px;flex-shrink:0}.src-card .ico.web{background:linear-gradient(135deg,#0ea5e9,#0284c7)}.src-card .ico.api{background:linear-gradient(135deg,#a855f7,#7c3aed)}.src-card .ico.mnl{background:linear-gradient(135deg,#f59e0b,#d97706)}.src-card .ico.all{background:linear-gradient(135deg,#0f172a,#1e293b)}.src-card .lb{font-size:11px;color:var(--text-muted);font-weight:600;letter-spacing:.04em}.src-card .vl{font-family:Plus Jakarta Sans,sans-serif;font-weight:700;font-size:22px;color:var(--text);line-height:1;margin-top:3px}.src-card .ft{font-size:11px;color:var(--text-subtle);margin-top:4px}.stab{position:relative;padding:10px 16px 12px;font-size:13px;font-weight:600;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;gap:6px;border:none;background:transparent}.stab:hover{color:var(--text)}.stab.active{color:var(--primary)}.stab.active:after{content:"";position:absolute;left:14px;right:14px;bottom:-1px;height:2px;background:var(--primary);border-radius:2px}.stab .ct{font-family:JetBrains Mono,monospace;font-size:11px;background:#f1f5f9;color:var(--text-muted);padding:1px 6px;border-radius:999px;font-weight:700}.stab.active .ct{background:#0ea5e9;color:#fff}.chip{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:999px;font-size:11px;font-weight:600;background:#f1f5f9;color:var(--text-muted);cursor:pointer;border:1px solid transparent;transition:all .12s}.chip:hover{background:#e2e8f0}.chip.active{background:#0ea5e9;color:#fff}.chip .ct{opacity:.65;font-weight:500;margin-left:2px}.src-pill{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;font-family:JetBrains Mono,monospace;padding:2px 8px;border-radius:6px}.src-pill.web{background:rgba(14,165,233,.12);color:#0369a1}.src-pill.api{background:rgba(168,85,247,.12);color:#6d28d9}.src-pill.mnl{background:rgba(245,158,11,.12);color:#b45309}.src-pill .dot{width:5px;height:5px;border-radius:50%}.src-pill.web .dot{background:var(--src-web)}.src-pill.api .dot{background:var(--src-api)}.src-pill.mnl .dot{background:var(--src-mnl)}.pc-DIA{background:#dbeafe;color:#1d4ed8}.pc-PDIA{background:#fef3c7;color:#b45309}.pc-EBB{background:#ccfbf1;color:#0f766e}.pc-IEPL{background:#ede9fe;color:#6d28d9}.pc-DCC{background:#e0f2fe;color:#0369a1}.pc-Metro{background:#d1fae5;color:#047857}.pc-HM{background:#fef3c7;color:#b45309}.pc-HWS{background:#ffedd5;color:#c2410c}.pc-FE{background:#fce7f3;color:#be185d}.pc-Deliver{background:#fee2e2;color:#b91c1c}table.data{width:100%;border-collapse:collapse}table.data thead th{font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:#64748b;font-weight:600;padding:10px 12px;background:#f8fafc;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}table.data tbody td{padding:11px 12px;border-bottom:1px solid #f1f5f9;font-size:13px;white-space:nowrap;vertical-align:middle}.row-hover{transition:background .12s}.row-hover:hover{background:#f0f9ff;cursor:pointer}.wp{gap:0;padding:12px 8px}.wp,.wp .node{display:flex;align-items:center}.wp .node{flex-direction:column;gap:6px;flex:0 0 auto;min-width:90px;text-align:center}.wp .dot{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;background:#fff;border:2px solid var(--line);color:var(--text-subtle);transition:all .15s}.wp .label{font-size:11px;color:var(--text-muted);font-weight:600}.wp .stay{font-size:10px;color:var(--text-subtle);font-family:JetBrains Mono,monospace}.wp .line{flex:1 1 auto;height:2px;background:var(--line);margin:0 -4px;align-self:flex-start;margin-top:28px}.wp .node.done .dot{background:var(--ok);border-color:var(--ok);color:#fff}.wp .node.done .label{color:#047857}.wp .line.done{background:var(--ok)}.wp .node.current .dot{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 0 0 5px rgba(14,165,233,.18);animation:pulse 2s infinite}.wp .node.current .label{color:var(--primary);font-weight:700}.wp .node.fail .dot{background:var(--danger);border-color:var(--danger);color:#fff}.wp .node.fail .label{color:#b91c1c}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(14,165,233,.4)}70%{box-shadow:0 0 0 8px rgba(14,165,233,0)}to{box-shadow:0 0 0 0 rgba(14,165,233,0)}}.wp-mini{display:inline-flex;align-items:center;gap:0}.wp-mini .n{width:14px;height:14px;border-radius:50%;font-size:8.5px;display:flex;align-items:center;justify-content:center;font-weight:700;color:#94a3b8;font-family:JetBrains Mono,monospace}.wp-mini .l,.wp-mini .n{background:#e2e8f0;flex-shrink:0}.wp-mini .l{width:8px;height:2px}.wp-mini .n.done{color:#fff}.wp-mini .l.done,.wp-mini .n.done{background:#10b981}.wp-mini .n.cur{background:#0ea5e9;color:#fff;box-shadow:0 0 0 2px rgba(14,165,233,.25)}.wp-mini .n.fail{background:#ef4444;color:#fff}.stage-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px;position:relative;overflow:hidden;cursor:pointer;transition:all .15s}.stage-card:hover{transform:translateY(-2px);box-shadow:0 12px 32px rgba(15,23,42,.08);border-color:#bae6fd}.stage-card .stage-tag{position:absolute;top:0;left:0;right:0;height:3px}.stage-card .stage-num{font-size:11px;font-weight:700;color:var(--text-subtle);font-family:JetBrains Mono,monospace}.stage-card .stage-name{font-size:13px;font-weight:700;color:var(--text);margin-top:2px}.stage-card .stage-en{font-size:10.5px;color:var(--text-subtle);font-family:JetBrains Mono,monospace;letter-spacing:.04em}.stage-card .stage-val{font-family:Plus Jakarta Sans,sans-serif;font-size:26px;font-weight:700;color:var(--text);margin-top:8px;line-height:1}.stage-card .stage-foot{font-size:11px;color:var(--text-muted);margin-top:6px;display:flex;align-items:center;gap:4px}.stage-card .stage-warn{display:inline-flex;align-items:center;gap:3px;font-size:10.5px;font-weight:600;padding:2px 6px;border-radius:4px;background:#fee2e2;color:#b91c1c;margin-top:6px}.stage-card.has-warn{border-color:#fca5a5;background:linear-gradient(180deg,#fef2f2,#fff 35%)}.funnel{padding:14px 18px}.funnel-row{display:flex;align-items:center;gap:12px;padding:8px 0}.funnel-row .lb{width:88px;font-size:12px;font-weight:600;color:var(--text-muted)}.funnel-row .bar{flex:1;height:24px;background:#f1f5f9;border-radius:6px;position:relative;overflow:hidden}.funnel-row .bar>div{position:absolute;left:0;top:0;bottom:0;border-radius:6px;display:flex;align-items:center;padding-right:8px;justify-content:flex-end;color:#fff;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;transition:width .4s}.funnel-row .pct{width:64px;text-align:right;font-size:11.5px;font-family:JetBrains Mono,monospace;color:var(--text-muted)}.todo{padding:6px 14px;display:flex;align-items:center;gap:12px;border-radius:8px;cursor:pointer}.todo:hover{background:#f8fafc}.todo .stage-pill{font-size:10px;font-weight:700;padding:2px 7px;border-radius:4px;font-family:JetBrains Mono,monospace;letter-spacing:.04em}.todo .body{flex:1;min-width:0}.todo .title{font-size:13px;color:var(--text);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.todo .meta{font-size:11px;color:var(--text-muted);margin-top:2px}.todo .age{font-size:10.5px;color:var(--text-subtle);font-family:JetBrains Mono,monospace}.todo .age.warn{color:#b45309;font-weight:700}.todo .age.danger{color:#b91c1c;font-weight:700}.sec-h{padding:14px 18px;border-bottom:1px solid #f1f5f9;display:flex;align-items:center;gap:10px}.sec-h .t{font-family:Plus Jakarta Sans,sans-serif;font-weight:700;font-size:14px;color:var(--text)}.sec-h .d{font-size:11px;color:var(--text-muted)}.det-h{padding:10px 14px;border-bottom:1px solid #f1f5f9;display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;color:var(--text);background:#f8fafc}.det-h .pc{font-family:JetBrains Mono,monospace;color:var(--text-subtle);font-weight:500;font-size:11px;margin-left:auto}.det-body{padding:12px 14px}.kv-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 16px}.kv-grid .row{display:flex;justify-content:space-between;align-items:baseline;padding:3px 0;border-bottom:1px dashed #f1f5f9}.kv-grid .k{font-size:11.5px;color:var(--text-muted)}.kv-grid .v{font-size:12.5px;color:var(--text);font-weight:600;font-family:JetBrains Mono,monospace}.drawer-mask{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:40}.drawer{position:fixed;top:0;right:0;bottom:0;width:920px;background:#fff;z-index:50;box-shadow:-12px 0 40px rgba(15,23,42,.18);display:flex;flex-direction:column}.drawer-head{padding:14px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px}.drawer-body{flex:1;overflow-y:auto;padding:18px 20px}.el-dialog{border-radius:14px!important}.el-button--small{font-size:12px!important;padding:7px 12px!important;border-radius:8px!important}.el-pagination{padding-top:10px}.el-message-box{border-radius:14px!important}.el-table{font-family:Inter,sans-serif!important}.el-table:before{display:none}.el-table th.el-table__cell{background:#f8fafc!important;font-size:11px!important;text-transform:uppercase;letter-spacing:.04em;color:#64748b!important;font-weight:600!important;border-bottom:1px solid var(--line)!important;height:40px!important}.el-table td.el-table__cell{border-bottom:1px solid #f1f5f9!important;font-size:13px!important;padding:9px 0!important}.el-table .el-table__row:hover>td.el-table__cell{background-color:#f0f9ff!important}.el-input__inner{background:#f8fafc!important;border-color:var(--line)!important;border-radius:8px!important;font-size:13px!important}.el-input__inner:focus{background:#fff!important;border-color:#7dd3fc!important;box-shadow:0 0 0 3px rgba(14,165,233,.15)!important}.el-form-item__label{font-size:12px!important;color:var(--text-muted)!important;font-weight:600!important}.page-shell{display:flex;min-height:100vh}.page-main{flex:1;display:flex;flex-direction:column;min-width:0}.page-section{padding:24px;flex:1;overflow-y:auto}.page-section>*+*{margin-top:20px}.ph-title{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:16px}.ph-title h1{font-family:Plus Jakarta Sans,sans-serif;font-size:22px;font-weight:700;color:#1e293b;margin:0}.ph-title h1 .sub{font-size:12px;font-family:JetBrains Mono,monospace;font-weight:500;color:#94a3b8;margin-left:8px}.ph-title p{font-size:12px;color:var(--text-muted);margin-top:4px}.el-dialog__title{font-family:Plus Jakarta Sans,sans-serif!important;font-weight:700!important}