@import "https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700&family=JetBrains+Mono:wght@400;500&display=swap";*{box-sizing:border-box;margin:0;padding:0}body{color:#e8e9ed;background:#0b0d14;font-family:DM Sans,sans-serif;font-size:15px;line-height:1.5}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:#252840;border-radius:3px}.app{height:100vh;display:flex;overflow:hidden}.sidebar{background:#12141f;border-right:1px solid #252840;flex-direction:column;width:260px;min-width:48px;transition:width .2s;display:flex;overflow:hidden}.sidebar.collapsed{width:48px}.sb-hdr{border-bottom:1px solid #252840;flex-shrink:0;align-items:center;gap:8px;min-height:54px;padding:10px;display:flex}.logo-img{object-fit:contain;border-radius:6px;width:32px;min-width:32px;height:32px}.logo-text{letter-spacing:-.5px;white-space:nowrap;font-size:20px;font-weight:700;overflow:hidden}.sb-toggle{cursor:pointer;color:#9095ad;background:0 0;border:none;border-radius:5px;flex-shrink:0;align-items:center;min-width:22px;margin-left:auto;padding:4px;display:flex}.sb-toggle:hover{color:#e8e9ed;background:#1a1d2e}.sb-body{flex:1;padding:6px;overflow:hidden auto}.sidebar.collapsed .sb-body,.sidebar.collapsed .logo-text{display:none}.sidebar.collapsed .sb-hdr{flex-direction:column;justify-content:center;gap:5px;padding:10px 4px}.sidebar.collapsed .sb-toggle{margin-left:0}.sb-label{text-transform:uppercase;letter-spacing:1px;color:#5c6080;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:4px;justify-content:space-between;align-items:center;padding:8px 10px 4px;font-size:11px;font-weight:600;display:flex}.sb-label:hover{color:#9095ad;background:#1a1d2e}.sb-item{cursor:pointer;color:#9095ad;white-space:nowrap;border-radius:6px;align-items:center;gap:10px;padding:9px 11px;font-size:15px;font-weight:500;transition:all .15s;display:flex;overflow:hidden}.sb-item:hover{color:#e8e9ed;background:#1a1d2e}.sb-item.active{color:#6c8ef5;background:#6c8ef521}.sb-badge{background:#252840;border-radius:10px;margin-left:auto;padding:1px 7px;font-family:JetBrains Mono,monospace;font-size:12px}.btn{color:#e8e9ed;cursor:pointer;white-space:nowrap;background:#12141f;border:1px solid #252840;border-radius:7px;align-items:center;gap:6px;padding:8px 16px;font-family:DM Sans,sans-serif;font-size:14px;font-weight:500;transition:all .15s;display:inline-flex}.btn:hover{background:#1a1d2e;border-color:#333658}.btn-primary{color:#fff;background:#6c8ef5;border-color:#6c8ef5}.btn-primary:hover{background:#5a7ae0}.btn-danger{color:#f87171}.btn-danger:hover{background:#f8717121}.btn-sm{padding:6px 12px;font-size:13px}.btn-ghost{background:0 0;border-color:#0000}.btn-ghost:hover{background:#1a1d2e}.main{flex-direction:column;flex:1;display:flex;overflow:hidden}.main-hdr{background:#12141f;border-bottom:1px solid #252840;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;min-height:54px;padding:12px 18px;display:flex}.main-title{letter-spacing:-.3px;font-size:22px;font-weight:700}.main-sub{color:#9095ad;font-family:JetBrains Mono,monospace;font-size:14px}.main-body{flex:1;overflow:auto}.tabs{background:#12141f;border-bottom:1px solid #252840;gap:0;padding:0 18px;display:flex}.tab{cursor:pointer;color:#9095ad;border-bottom:2px solid #0000;margin-bottom:-1px;padding:12px 18px;font-size:15px;font-weight:500;transition:all .15s}.tab:hover{color:#e8e9ed}.tab.active{color:#6c8ef5;border-bottom-color:#6c8ef5}table{border-collapse:collapse;width:100%}th{text-align:left;text-transform:uppercase;letter-spacing:.5px;color:#5c6080;z-index:2;white-space:nowrap;background:#12141f;border-bottom:1px solid #252840;padding:10px;font-size:12px;font-weight:600;position:sticky;top:0}td{vertical-align:middle;border-bottom:1px solid #252840;padding:9px 10px;font-size:14px}tr:hover td{background:#1a1d2e}tr.grp td{background:#6c8ef50a;font-weight:600}td.ed{cursor:pointer}td.ed:hover{background:#1a1d2e!important}.elem-name{align-items:center;gap:5px;display:flex}.status-badge{white-space:nowrap;border-radius:10px;padding:3px 10px;font-size:13px;font-weight:600;display:inline-flex}.dep-tag{color:#a78bfa;background:#a78bfa21;border-radius:4px;align-items:center;gap:3px;margin:1px;padding:2px 6px;font-size:10px;display:inline-flex}.tag{color:#6c8ef5;background:#6c8ef521;border-radius:4px;align-items:center;gap:3px;margin:1px;padding:2px 6px;font-size:11px;display:inline-flex}.gw{flex:1;display:flex;overflow:hidden}.gl{background:#12141f;border-right:1px solid #252840;flex-shrink:0;position:relative;overflow-y:auto}.gl-resizer{cursor:col-resize;z-index:5;width:5px;position:absolute;top:0;bottom:0;right:0}.gl-resizer:hover{background:#6c8ef5}.gr{flex:1;position:relative;overflow:auto}.grow{white-space:nowrap;border-bottom:1px solid #252840;align-items:center;gap:6px;height:38px;padding:0 8px;font-size:13px;display:flex;overflow:hidden}.grow.hdr{text-transform:uppercase;letter-spacing:.5px;color:#5c6080;z-index:3;background:#12141f;height:48px;font-size:11px;font-weight:600;position:sticky;top:0}.grow.mem-row{color:#9095ad;background:#6c8ef508;height:28px;padding-left:24px;font-size:11px}.gb{cursor:pointer;color:#fff;white-space:nowrap;background:#6c8ef5;border-radius:4px;justify-content:center;align-items:center;min-width:3px;height:18px;padding:0 4px;font-size:10px;font-weight:500;transition:opacity .15s;display:flex;position:absolute;top:10px;overflow:hidden}.gb:hover{opacity:.85}.gb.ms{height:14px;min-width:unset;background:#a78bfa;border-radius:2px;padding:0;top:12px;transform:rotate(45deg);width:14px!important}.gb.gp{opacity:.5;background:#6c8ef5;border-radius:3px;height:6px;top:16px}.gb.done{background:#34d399}.gb.hold{background:#fbbf24}.gb.cancel{opacity:.4;background:#f87171}.gt-line{opacity:.5;z-index:2;background:#f87171;width:2px;position:absolute;top:0;bottom:0}.gc{border-right:1px solid #2a2d3e59;position:absolute;top:0;bottom:0}.gwe{background:#646eb417}.gdh{color:#5c6080;justify-content:center;align-items:center;height:24px;font-family:JetBrains Mono,monospace;font-size:10px;display:flex;position:absolute;top:24px}.gmh{color:#9095ad;background:#12141f;border-bottom:1px solid #252840;border-right:1px solid #252840;align-items:center;height:24px;padding:0 4px;font-size:11px;font-weight:600;display:flex;position:absolute;top:0}.ghol{z-index:1;color:#f87171;background:#f8717126;border-radius:3px;justify-content:center;align-items:center;font-size:9px;font-weight:500;display:flex;position:absolute}.mo{z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:#12141f;border:1px solid #252840;border-radius:12px;flex-direction:column;width:640px;max-width:95vw;max-height:85vh;display:flex;box-shadow:0 20px 40px #0006}.modal-lg{width:820px}.modal-xl{width:980px}.mhd{border-bottom:1px solid #252840;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.mt{font-size:18px;font-weight:700}.mbd{flex:1;padding:20px;overflow-y:auto}.mft{border-top:1px solid #252840;justify-content:flex-end;gap:8px;padding:12px 20px;display:flex}.field{margin-bottom:10px}.field label{color:#9095ad;text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;font-size:12px;font-weight:600;display:block}.field input,.field select,.field textarea{color:#e8e9ed;background:#0b0d14;border:1px solid #252840;border-radius:6px;outline:none;width:100%;padding:8px 12px;font-family:DM Sans,sans-serif;font-size:14px}.field input:focus,.field select:focus,.field textarea:focus{border-color:#6c8ef5}.fr2{grid-template-columns:1fr 1fr;gap:8px;display:grid}.fr3{grid-template-columns:1fr 1fr 1fr;gap:8px;display:grid}.fr4{grid-template-columns:1fr 1fr 1fr 1fr;gap:8px;display:grid}.ci{background:#0b0d14;border-radius:6px;margin-bottom:4px;padding:8px 10px}.searchbar{background:#0b0d14;border:1px solid #252840;border-radius:6px;align-items:center;gap:6px;padding:5px 10px;display:flex}.searchbar input{color:#e8e9ed;background:0 0;border:none;outline:none;flex:1;font-size:13px}tr.dragging{opacity:.4}tr.drag-over td{border-top:2px solid #6c8ef5!important}.confirm-overlay{z-index:200;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.confirm-box{text-align:center;background:#12141f;border:1px solid #252840;border-radius:10px;max-width:400px;padding:24px;box-shadow:0 14px 28px #0006}.confirm-box p{margin-bottom:14px;font-size:14px}.proj-status-sel{color:#e8e9ed;background:#0b0d14;border:1px solid #252840;border-radius:6px;outline:none;padding:4px 10px;font-size:14px}.expand-btn{cursor:pointer;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;width:14px;height:14px;display:flex}.expand-btn:hover{background:#1a1d2e}.kpi-th{cursor:pointer;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.kpi-popup{z-index:150;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.kpi-popup-box{white-space:pre-wrap;background:#12141f;border:1px solid #252840;border-radius:12px;max-width:560px;max-height:80vh;padding:24px;font-size:13px;line-height:1.7;overflow-y:auto;box-shadow:0 14px 28px #0006}.grid-status{border:1px solid #252840;border-radius:6px;margin-bottom:8px;overflow:hidden}.grid-status-row{border-bottom:1px solid #252840;align-items:center;gap:8px;padding:6px 10px;font-size:13px;display:flex}.grid-status-row:last-child{border-bottom:none}.grid-status-row .final-tag{color:#34d399;margin-left:auto;font-size:10px;font-weight:600}.es{color:#5c6080;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:40px;font-size:14px;display:flex}.comment-btn{cursor:pointer;color:#9095ad;background:0 0;border:none;border-radius:6px;align-items:center;gap:3px;padding:2px 7px;font-size:12px;transition:all .15s;display:inline-flex}.comment-btn:hover{color:#e8e9ed;background:#1a1d2e}.comment-btn.has{color:#6c8ef5;background:#6c8ef521}.req:after{content:" *";color:#f87171;font-weight:400}.loading-screen{color:#9095ad;flex-direction:column;justify-content:center;align-items:center;gap:12px;height:100vh;font-size:16px;display:flex}.loading-spinner{border:3px solid #252840;border-top-color:#6c8ef5;border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:.2s fadeIn}@keyframes spin{to{transform:rotate(360deg)}}
