.app{display:flex;min-height:100vh;background:var(--workspace-bg)}.sidebar{width:245px;flex:0 0 245px;background:linear-gradient(180deg,var(--nav-bg) 0%,var(--nav-bg-2) 100%);display:flex;flex-direction:column;padding:18px 0 14px;position:sticky;top:0;height:100vh;z-index:20;overflow-y:auto}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:4px}.logo-area{display:flex;align-items:center;gap:12px;padding:4px 18px 18px;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:12px}.sidebar .logo{width:42px;height:42px;border-radius:10px;background:linear-gradient(135deg,#1677ff,#00d4ff);display:grid;place-items:center;color:#fff;font-weight:700;font-size:16px;letter-spacing:-1px;box-shadow:0 0 14px #00d4ff59;flex:0 0 42px}.logo-text{min-width:0}.logo-title{color:#fff;font-size:14px;font-weight:700;line-height:1.3}.logo-sub{color:#8aa0bd;font-size:11.5px;margin-top:2px}.sidebar .nav-list{display:flex;flex-direction:column;gap:2px;padding:0 10px}.sidebar .nav-item{position:relative;width:100%;height:42px;border-radius:8px;display:flex;align-items:center;gap:12px;padding:0 12px;cursor:pointer;color:#8aa0bd;font-size:13.5px;font-weight:500;transition:background .15s,color .15s;border:none;background:transparent;text-align:left}.sidebar .nav-item .nav-icon{font-size:18px;width:22px;text-align:center;flex:0 0 22px}.sidebar .nav-item .nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar .nav-item:hover{background:#1677ff24;color:#cfe3ff}.sidebar .nav-item.active{background:linear-gradient(135deg,#1677ff,#00d4ff);color:#fff;box-shadow:0 4px 14px #1677ff66}.sidebar .nav-item.active:before{content:"";position:absolute;left:-10px;top:50%;transform:translateY(-50%);width:3px;height:20px;background:#00d4ff;border-radius:0 3px 3px 0}.sidebar .nav-foot{margin-top:auto;padding:12px 18px;border-top:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;gap:6px}.nav-foot-item{display:flex;align-items:center;gap:8px;color:#5a7090;font-size:11.5px}.nav-foot-icon{font-size:14px}.nav-foot-label{color:#8aa0bd}.workspace{flex:1;min-width:0;padding:22px 28px 28px;display:flex;flex-direction:column;gap:18px}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}.topbar .title-wrap{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.topbar h1{margin:0;font-size:24px;font-weight:700;color:var(--text-1);letter-spacing:.5px}.topbar .sub{margin-top:4px;font-size:12.5px;color:var(--text-3)}.topbar .badges{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.warn-box{background:var(--warn-bg);border:1px solid var(--warn-border);border-radius:8px;padding:10px 14px;max-width:320px}.warn-box .warn-line1{display:flex;align-items:center;gap:6px;color:var(--warn-fg);font-weight:700;font-size:13.5px}.warn-box .warn-line2{margin-top:3px;font-size:12px;color:var(--text-2)}.badge{display:inline-flex;align-items:center;gap:5px;padding:4px 11px;border-radius:var(--radius-pill);font-size:12px;font-weight:600;line-height:1.4;white-space:nowrap}.badge.readonly{background:var(--badge-readonly-bg);color:var(--badge-readonly-fg)}.badge.demo{background:var(--badge-demo-bg);color:var(--badge-demo-fg)}.badge.plan{background:var(--badge-plan-bg);color:var(--badge-plan-fg)}.badge.warn{background:var(--warn-bg);color:var(--warn-fg);border:1px solid #fecaca}.badge.success{background:#ecfdf5;color:#047857;border:1px solid #a7f3d0}.disclaimer{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fffbeb;border:1px solid #fde68a;border-left:4px solid var(--orange);border-radius:var(--radius-md);padding:12px 16px;font-size:13px;color:#92400e;line-height:1.6}.disclaimer .ic{font-size:16px}.disclaimer strong{color:#78350f}.panel{background:var(--panel-bg);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);border:1px solid var(--border-soft);padding:18px 20px}.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:10px;flex-wrap:wrap}.panel-head h2{margin:0;font-size:15.5px;font-weight:700;color:var(--text-1)}.panel-head .sub{font-size:12px;color:var(--text-3)}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.kpi-card{background:var(--panel-bg);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);border:1px solid var(--border-soft);padding:18px 18px 16px;display:flex;align-items:center;gap:14px;transition:box-shadow .18s,transform .18s}.kpi-card:hover{box-shadow:var(--shadow-hover);transform:translateY(-2px)}.kpi-icon{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;font-size:22px;flex:0 0 48px}.kpi-body{min-width:0;flex:1}.kpi-name{font-size:13px;color:var(--text-3);display:flex;align-items:center;gap:6px}.kpi-value{font-size:26px;font-weight:700;color:var(--text-1);line-height:1.2;margin-top:2px}.kpi-delta{font-size:12px;margin-top:4px;display:flex;align-items:center;gap:4px}.kpi-delta.up-good{color:var(--green)}.kpi-delta.up-bad{color:var(--red)}.kpi-note{font-size:11px;color:var(--text-4);margin-top:4px}.mid-grid{display:grid;grid-template-columns:1.55fr 1fr;gap:16px}.chart-wrap{width:100%;height:300px}.sync-anomaly-list{display:flex;flex-direction:column;gap:10px}.sync-anomaly-row{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:var(--radius-md);background:#f8fafc;border:1px solid var(--border-soft);transition:background .15s}.sync-anomaly-row:hover{background:#f1f5f9}.sync-anomaly-row .sa-icon{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-size:16px;font-weight:700;flex:0 0 34px}.sync-anomaly-row .sa-label{flex:1;font-size:13.5px;color:var(--text-2);font-weight:500}.sync-anomaly-row .sa-count{font-size:18px;font-weight:700;color:var(--red)}.sync-anomaly-row .sa-arrow{color:var(--text-4);font-size:14px}.sync-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}.sync-table thead th{text-align:left;font-weight:600;color:var(--text-3);padding:10px 14px;border-bottom:1px solid var(--border);background:#f8fafc;white-space:nowrap}.sync-table thead th:first-child{border-top-left-radius:var(--radius-md)}.sync-table thead th:last-child{border-top-right-radius:var(--radius-md)}.sync-table tbody td{padding:12px 14px;border-bottom:1px solid var(--border-soft);color:var(--text-2);vertical-align:middle}.sync-table tbody tr:nth-child(2n) td{background:#fafbfc}.sync-table tbody tr:last-child td{border-bottom:none}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px;vertical-align:middle}.dot.green{background:var(--green)}.dot.orange{background:var(--orange)}.dot.blue{background:var(--brand-blue)}.dot.red{background:var(--red)}.status-text.success{color:var(--green);font-weight:600}.status-text.syncing{color:var(--brand-blue);font-weight:600}.status-text.review{color:var(--orange);font-weight:600}.roadmap-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.wave-card{border-radius:var(--radius-md);border:1px solid var(--border-soft);padding:14px;background:linear-gradient(180deg,#fff,#f8fbff);position:relative;display:flex;flex-direction:column;gap:7px}.wave-card.blocked{border-color:#fde68a;background:linear-gradient(180deg,#fffdf5,#fffbeb)}.wave-head{display:flex;align-items:center;gap:9px}.wave-badge{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--brand-blue);color:#fff;font-weight:700;font-size:13px;box-shadow:0 0 0 4px #1677ff1f;flex:0 0 34px}.wave-card.blocked .wave-badge{background:var(--text-4);box-shadow:0 0 0 4px #94a3b829}.wave-title{font-size:14px;font-weight:700;color:var(--text-1)}.wave-sub{font-size:11.5px;color:var(--text-3)}.wave-desc{font-size:12px;color:var(--text-2);line-height:1.55;min-height:50px}.wave-gate{font-size:11.5px;color:var(--text-3);border-top:1px dashed var(--border);padding-top:8px;line-height:1.5}.wave-gate b{color:var(--text-2)}.wave-status{position:absolute;top:10px;right:10px}.dark-roadmap-panel{background:linear-gradient(135deg,#0f1b2d,#112240);border:1px solid rgba(255,255,255,.08);padding:24px 28px}.dark-panel-title{color:#fff!important}.dark-panel-sub{color:#8aa0bd!important}.dark-roadmap-timeline{display:flex;gap:0;margin-top:8px;overflow-x:auto;padding-bottom:4px}.dark-wave-node{display:flex;flex-direction:column;align-items:flex-start;min-width:200px;flex:1}.dark-wave-connector{display:flex;align-items:center;width:100%;position:relative}.dark-wave-dot{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:14px;color:#fff;flex:0 0 44px;position:relative;z-index:2}.dark-wave-dot.planned{background:linear-gradient(135deg,#1677ff,#00d4ff);box-shadow:0 0 0 4px #1677ff40}.dark-wave-dot.blocked{background:linear-gradient(135deg,#ef4444,#f59e0b);box-shadow:0 0 0 4px #ef444440}.dark-wave-line{flex:1;height:2px;background:linear-gradient(90deg,#1677ff99,#1677ff33);min-width:40px}.dark-wave-card{margin-top:12px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:14px 16px;width:100%}.dark-wave-head{margin-bottom:8px}.dark-wave-status{display:inline-block;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:600}.dark-wave-status.planned{background:#1677ff33;color:#7dd3fc}.dark-wave-status.blocked{background:#ef444433;color:#fca5a5}.dark-wave-title{color:#fff;font-size:14px;font-weight:700;margin-bottom:3px}.dark-wave-subtitle{color:#8aa0bd;font-size:12px;margin-bottom:6px}.dark-wave-desc{color:#cfe0f5;font-size:12px;line-height:1.55;margin-bottom:10px;min-height:36px}.dark-wave-gate{border-top:1px dashed rgba(255,255,255,.15);padding-top:8px;color:#8aa0bd;font-size:11.5px;line-height:1.5}.dark-wave-gate-label{color:#cfe0f5;font-weight:600}.task-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}.filter-chips{display:flex;gap:6px;flex-wrap:wrap}.chip{border:1px solid var(--border);background:#fff;color:var(--text-2);padding:6px 13px;border-radius:var(--radius-pill);font-size:12.5px;cursor:pointer;transition:all .15s;font-weight:500}.chip:hover{border-color:var(--brand-blue);color:var(--brand-blue)}.chip.active{background:var(--brand-blue);border-color:var(--brand-blue);color:#fff}.search-box{position:relative;margin-left:auto}.search-box input{width:240px;padding:7px 12px 7px 32px;border:1px solid var(--border);border-radius:var(--radius-md);font-size:13px;outline:none;transition:border-color .15s,box-shadow .15s;color:var(--text-2);background:#fff}.search-box input:focus{border-color:var(--brand-blue);box-shadow:0 0 0 3px #1677ff1f}.search-box .si{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--text-4);font-size:14px}.task-table{width:100%;border-collapse:separate;border-spacing:0;font-size:12.5px}.task-table thead th{text-align:left;font-weight:600;color:var(--text-3);padding:10px 12px;border-bottom:1px solid var(--border);background:#f8fafc;white-space:nowrap;position:sticky;top:0}.task-table tbody td{padding:11px 12px;border-bottom:1px solid var(--border-soft);color:var(--text-2);vertical-align:middle}.task-table tbody tr:hover td{background:#f5f9ff}.task-table .tid{font-weight:700;color:var(--text-1);font-family:SFMono-Regular,Consolas,monospace;font-size:12px}.task-table .wave-cell{font-weight:700;color:var(--brand-blue)}.progress-cell{min-width:150px}.progress-bar{height:8px;border-radius:999px;background:#eef2f7;overflow:hidden;width:100%;min-width:90px}.progress-bar>span{display:block;height:100%;background:linear-gradient(90deg,#1677ff,#4d9bff);border-radius:999px}.progress-zero>span{background:#cbd5e1;width:2%!important}.progress-meta{display:flex;align-items:center;gap:8px}.progress-meta .pct{font-size:12px;font-weight:700;color:var(--text-2);white-space:nowrap;min-width:34px}.progress-title{font-size:11.5px;font-weight:700;color:var(--text-2);margin-bottom:5px;white-space:nowrap}.progress-note{color:var(--text-4);font-size:10.5px;line-height:1.4;margin-top:5px;min-width:145px}.progress-unreported>span{width:0!important;background:transparent}.acceptance-progress>span{background:linear-gradient(90deg,#16a34a,#34d399)}.status-pill{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:var(--radius-pill);font-size:11.5px;font-weight:600;white-space:nowrap}.status-pill.规划中{background:#eef2ff;color:#4338ca}.status-pill.待启动{background:#f1f5f9;color:#475569}.status-pill.阻塞,.status-pill.外部阻塞{background:#fef2f2;color:#b91c1c}.status-pill.待依赖{background:#fff7ed;color:#c2410c}.status-pill.已入队{background:#eff6ff;color:#1d4ed8}.status-pill.运行中{background:#e0f2fe;color:#0369a1}.status-pill.待验收{background:#fefce8;color:#a16207}.status-pill.已验收{background:#ecfdf5;color:#047857}.status-pill.注意{background:#fef2f2;color:#b91c1c}.task-empty{text-align:center;padding:28px;color:var(--text-4);font-size:13px}.page-stack{display:flex;flex-direction:column;gap:18px}.dev-banner{border-left:4px solid var(--brand-blue)}.dev-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:4px 0 10px}.dev-summary-item{background:linear-gradient(135deg,#f0f7ff,#eef2f7);border:1px solid var(--border-soft);border-radius:var(--radius-md);padding:14px 16px;display:flex;flex-direction:column;gap:4px}.dev-summary-num{font-size:26px;font-weight:700;color:var(--brand-blue);line-height:1.1}.dev-summary-label{font-size:12px;color:var(--text-3)}.dev-phase-note{margin-top:4px;background:#fffbeb;border:1px solid #fde68a;border-radius:var(--radius-md);padding:10px 14px;font-size:12.5px;color:#78350f;line-height:1.7}.section-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.section-card{border:1px solid var(--border-soft);border-radius:var(--radius-md);background:linear-gradient(180deg,#fff,#f8fbff);padding:12px 14px;display:flex;flex-direction:column;gap:8px;transition:box-shadow .18s,border-color .18s}.section-card:hover{box-shadow:var(--shadow-hover);border-color:var(--brand-blue)}.section-card.open{border-color:var(--brand-blue)}.section-card-head{display:flex;align-items:center;gap:8px;width:100%;border:none;background:transparent;padding:0;cursor:pointer;text-align:left}.section-badge{width:26px;height:26px;border-radius:50%;background:var(--brand-blue);color:#fff;font-weight:700;font-size:12px;display:grid;place-items:center;flex:0 0 26px}.section-title{flex:1;font-size:13.5px;font-weight:700;color:var(--text-1)}.section-toggle{font-size:16px;font-weight:700;color:var(--text-4);width:18px;text-align:center}.section-purpose{font-size:11.5px;color:var(--text-3);line-height:1.55}.section-stats{display:flex;gap:6px;flex-wrap:wrap}.section-stats .stat{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;color:var(--text-3);background:#f1f5f9;border-radius:var(--radius-pill);padding:3px 9px}.section-stats .stat b{font-size:13px;color:var(--text-1)}.section-stats .stat.ok b{color:var(--green)}.section-stats .stat.blocked b{color:var(--red)}.section-task-list{list-style:none;margin:0;padding:8px 0 0;border-top:1px dashed var(--border);display:flex;flex-direction:column;gap:6px;max-height:220px;overflow-y:auto}.section-task-list li{display:flex;align-items:center;gap:8px;font-size:12px}.mini-status{display:inline-block;padding:1px 7px;border-radius:var(--radius-pill);font-size:10.5px;font-weight:600;white-space:nowrap;flex:0 0 auto}.mini-status.规划中{background:#eef2ff;color:#4338ca}.mini-status.待启动{background:#f1f5f9;color:#475569}.mini-status.阻塞{background:#fef2f2;color:#b91c1c}.mini-status.待依赖{background:#fff7ed;color:#c2410c}.mini-status.已入队{background:#eff6ff;color:#1d4ed8}.mini-status.运行中{background:#e0f2fe;color:#0369a1}.mini-status.待验收{background:#fefce8;color:#a16207}.mini-status.已验收{background:#ecfdf5;color:#047857}.mini-status.注意{background:#fef2f2;color:#b91c1c}.mini-id{font-family:SFMono-Regular,Consolas,monospace;font-weight:700;color:var(--text-1);flex:0 0 auto}.mini-name{color:var(--text-2);line-height:1.4}.section-tag{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-2);background:#eef2f7;border-radius:var(--radius-pill);padding:3px 9px;white-space:nowrap}.section-tag b{color:var(--brand-blue)}.phase-ref-note{font-size:11.5px;color:var(--text-4);padding:0 2px;line-height:1.5}.business-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:26px 18px;background:#f8fafc;border:1px dashed var(--border);border-radius:var(--radius-md)}.business-empty-icon{font-size:30px}.business-empty-title{font-size:15px;font-weight:700;color:var(--text-1)}.business-empty-desc{font-size:13px;color:var(--text-3);max-width:560px;line-height:1.6}.business-empty-badge{margin-top:6px;display:inline-flex;align-items:center;gap:5px;padding:4px 12px;border-radius:var(--radius-pill);background:var(--badge-demo-bg);color:var(--badge-demo-fg);font-size:12px;font-weight:600}.module-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.module-card{border:1px solid var(--border-soft);border-radius:var(--radius-md);padding:16px;background:linear-gradient(180deg,#fff,#f8fbff);display:flex;flex-direction:column;gap:8px;transition:box-shadow .18s,transform .18s}.module-card:hover{box-shadow:var(--shadow-hover);transform:translateY(-2px)}.module-icon{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;font-size:20px;background:var(--badge-demo-bg)}.module-name{font-size:14px;font-weight:700;color:var(--text-1)}.module-desc{font-size:12px;color:var(--text-3);line-height:1.55}.dep-graph-svg-wrap{overflow-x:auto;border:1px solid var(--border-soft);border-radius:var(--radius-md);background:linear-gradient(180deg,#fff,#f8fbff);padding:10px}.dep-graph-svg{display:block;width:100%;min-width:680px;height:auto}.dep-node rect{fill:#fff;stroke:var(--border);stroke-width:1.2;filter:drop-shadow(0 1px 2px rgba(15,23,42,.06))}.dep-node-code{font-size:13px;font-weight:700;fill:var(--brand-blue);font-family:SFMono-Regular,Consolas,monospace}.dep-node-name{font-size:11.5px;fill:var(--text-2);font-weight:600}.dep-node-count{font-size:10px;fill:var(--text-4)}.dep-graph-legend{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:11.5px;color:var(--text-3);margin-top:10px}.legend-arrow,.legend-box{color:var(--brand-blue);font-weight:700;font-style:normal}.legend-sep{color:var(--border)}.dep-graph-list{margin-top:12px;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.dep-graph-section{border:1px solid var(--border-soft);border-radius:var(--radius-md);padding:10px 12px;background:#fafbfc;display:flex;flex-direction:column;gap:6px}.dep-graph-section-head{display:flex;align-items:center;gap:8px}.dep-graph-section-name{font-size:12.5px;font-weight:700;color:var(--text-1);flex:1}.dep-graph-section-count{font-size:11px;color:var(--text-4)}.dep-graph-section-rows{display:flex;flex-direction:column;gap:4px}.dep-row{display:flex;align-items:flex-start;gap:6px;flex-wrap:wrap}.dep-row-label{font-size:11px;color:var(--text-4);flex:0 0 auto;line-height:1.8}.dep-chip{display:inline-flex;align-items:center;gap:3px;font-size:11px;color:var(--text-2);background:#fff;border:1px solid var(--border);border-radius:var(--radius-pill);padding:2px 8px;line-height:1.5}.dep-chip.empty{color:var(--text-4);background:#f1f5f9;border-style:dashed}.bottom-tabs{margin-top:4px;background:linear-gradient(135deg,#0f2847,#113a6b);border-radius:var(--radius-md);display:flex;padding:14px 8px;gap:4px}.bottom-tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;color:#cfe0f5;cursor:pointer;padding:10px 6px;border-radius:var(--radius-md);transition:background .15s,color .15s;border:none;background:transparent}.bottom-tab:hover{background:#ffffff14;color:#fff}.bottom-tab .bt-icon{font-size:20px}.bottom-tab .bt-label{font-size:12px;font-weight:500}@media (max-width: 1180px){.kpi-grid{grid-template-columns:repeat(2,1fr)}.mid-grid{grid-template-columns:1fr}.roadmap-grid,.section-summary-grid,.dep-graph-list,.module-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 900px){.sidebar{width:64px;flex:0 0 64px;padding:14px 0}.logo-area,.nav-label,.nav-foot{display:none}.sidebar .nav-item{justify-content:center;padding:0;width:40px;height:40px}.sidebar .nav-item .nav-icon{font-size:20px}.sidebar .nav-item.active:before{display:none}}@media (max-width: 720px){.kpi-grid,.roadmap-grid,.section-summary-grid,.dep-graph-list,.module-grid{grid-template-columns:1fr}.dev-summary{grid-template-columns:repeat(2,1fr)}.workspace{padding:16px}.search-box input{width:160px}}.settings-card-grid{display:flex;flex-direction:column;gap:12px;margin-top:4px}.settings-card{display:flex;align-items:center;gap:14px;width:100%;text-align:left;border:1px solid var(--border-soft);border-radius:var(--radius-md);background:linear-gradient(180deg,#fff,#f8fbff);padding:16px 18px;cursor:pointer;transition:box-shadow .18s,border-color .18s,transform .18s;color:var(--text-2);font:inherit}.settings-card:hover{border-color:var(--brand-blue);box-shadow:var(--shadow-hover);transform:translateY(-2px)}.settings-card:focus-visible{outline:2px solid var(--brand-blue);outline-offset:2px}.settings-card-icon{width:44px;height:44px;border-radius:10px;background:var(--badge-demo-bg);display:grid;place-items:center;font-size:22px;flex:0 0 44px}.settings-card-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.settings-card-title{font-size:14.5px;font-weight:700;color:var(--text-1)}.settings-card-desc{font-size:12.5px;color:var(--text-3);line-height:1.5}.settings-card-arrow{font-size:18px;color:var(--brand-blue);flex:0 0 auto}.settings-note{margin-top:14px;font-size:12px;color:var(--text-3);line-height:1.7;background:#fffbeb;border:1px solid #fde68a;border-radius:var(--radius-md);padding:10px 14px}.success-banner{display:flex;align-items:center;gap:8px;background:#ecfdf5;border:1px solid #a7f3d0;border-radius:var(--radius-md);padding:12px 16px;font-size:13px;font-weight:600;color:#047857;margin-bottom:12px}.success-banner-icon{width:20px;height:20px;border-radius:50%;background:#10b981;color:#fff;display:grid;place-items:center;font-size:12px;flex:0 0 20px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.modal{width:520px;max-width:100%;max-height:calc(100vh - 48px);overflow-y:auto;background:#fff;border-radius:14px;box-shadow:0 20px 50px #0f172a40;display:flex;flex-direction:column}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border-soft)}.modal-header h3{margin:0;font-size:16px;font-weight:700;color:var(--text-1)}.modal-close{width:28px;height:28px;border-radius:50%;border:none;background:#f1f5f9;color:var(--text-3);font-size:16px;line-height:1;cursor:pointer;display:grid;place-items:center;transition:background .15s,color .15s}.modal-close:hover{background:#e2e8f0;color:var(--text-1)}.modal-close:focus-visible{outline:2px solid var(--brand-blue);outline-offset:1px}.modal-body{padding:18px 20px;display:flex;flex-direction:column;gap:14px}.modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px 18px;border-top:1px solid var(--border-soft)}.platform-list{display:flex;flex-direction:column;gap:10px}.platform-card{display:flex;align-items:center;gap:12px;border:1px solid var(--brand-blue);background:linear-gradient(135deg,#eaf2ff,#f0f7ff);border-radius:var(--radius-md);padding:14px 16px}.platform-logo{width:38px;height:38px;border-radius:8px;background:var(--brand-blue);color:#fff;display:grid;place-items:center;font-size:18px;flex:0 0 38px}.platform-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.platform-name{font-size:14px;font-weight:700;color:var(--text-1)}.platform-sub{font-size:12px;color:var(--text-3)}.platform-check{width:22px;height:22px;border-radius:50%;background:var(--brand-blue);color:#fff;font-size:12px;display:grid;place-items:center;flex:0 0 22px}.auth-notice{border-radius:var(--radius-md);background:#eaf2ff;border:1px solid #b7d4ff;padding:12px 14px}.auth-notice-title{font-size:13px;font-weight:700;color:#1d4ed8;margin-bottom:6px}.auth-notice-list{margin:0;padding-left:18px;font-size:12.5px;color:var(--text-2);line-height:1.7}.auth-security{border-radius:var(--radius-md);background:#fffbeb;border:1px solid #fde68a;padding:12px 14px}.auth-security-title{font-size:13px;font-weight:700;color:#92400e;margin-bottom:4px}.auth-security-text{margin:0;font-size:12.5px;color:#78350f;line-height:1.7}.form-field{display:flex;flex-direction:column;gap:6px}.form-field label{font-size:13px;font-weight:600;color:var(--text-2)}.required{color:var(--red);font-weight:700}.form-field input,.form-field select{width:100%;height:38px;padding:0 12px;border:1px solid var(--border);border-radius:var(--radius-md);font-size:13px;font-family:inherit;color:var(--text-2);background:#fff;outline:none;transition:border-color .15s,box-shadow .15s}.form-field input:focus,.form-field select:focus{border-color:var(--brand-blue);box-shadow:0 0 0 3px #1677ff1f}.form-field input::placeholder{color:var(--text-4)}.field-error{font-size:12px;color:var(--red);font-weight:500}.form-note{font-size:12px;color:var(--text-3);line-height:1.6;background:#f8fafc;border:1px dashed var(--border);border-radius:var(--radius-md);padding:10px 12px}.btn-primary{border:none;background:var(--brand-blue);color:#fff;font-size:13px;font-weight:600;padding:8px 18px;border-radius:var(--radius-md);cursor:pointer;transition:background .15s,box-shadow .15s}.btn-primary:hover{background:#0f63e0;box-shadow:0 4px 12px #1677ff4d}.btn-primary:focus-visible{outline:2px solid var(--brand-blue);outline-offset:2px}.btn-cancel{border:1px solid var(--border);background:#fff;color:var(--text-2);font-size:13px;font-weight:500;padding:8px 16px;border-radius:var(--radius-md);cursor:pointer;transition:background .15s,border-color .15s}.btn-cancel:hover{background:#f8fafc;border-color:var(--border-soft)}.btn-cancel:focus-visible{outline:2px solid var(--brand-blue);outline-offset:1px}.live-admission-board{border-left:4px solid var(--red)}.live-admission-overview{display:flex;flex-direction:column;gap:10px;margin:4px 0 14px}.live-admission-rule{background:#fef2f2;border:1px solid #fecaca;border-radius:var(--radius-md);padding:10px 14px;font-size:12.5px;color:#7f1d1d;line-height:1.7}.live-admission-rule b{color:#991b1b}.live-admission-stats{display:flex;flex-wrap:wrap;gap:8px}.las-item{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--text-3);background:#f8fafc;border:1px solid var(--border-soft);border-radius:var(--radius-pill);padding:4px 10px}.las-item b{font-size:13px;color:var(--text-1)}.live-admission-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.live-admission-card{border:1px solid var(--border-soft);border-radius:var(--radius-md);background:linear-gradient(180deg,#fff,#f8fbff);padding:14px 16px;display:flex;flex-direction:column;gap:8px}.live-admission-card.status-blocked_config{border-left:4px solid #b91c1c}.live-admission-card.status-blocked_dependency{border-left:4px solid #c2410c}.live-admission-card.status-ready_to_dispatch{border-left:4px solid #047857;background:linear-gradient(180deg,#f0fdf4,#fff)}.lac-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.lac-id{font-family:SFMono-Regular,Consolas,monospace;font-weight:700;font-size:13px;color:var(--brand-blue)}.live-admission-status{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:var(--radius-pill);font-size:11px;font-weight:600;white-space:nowrap}.live-admission-status.blocked_config{background:#fef2f2;color:#b91c1c}.live-admission-status.blocked_dependency{background:#fff7ed;color:#c2410c}.live-admission-status.ready_to_dispatch{background:#ecfdf5;color:#047857}.live-admission-status.queued{background:#eff6ff;color:#1d4ed8}.live-admission-status.running{background:#e0f2fe;color:#0369a1}.live-admission-status.accepted{background:#ecfdf5;color:#047857}.lac-title{font-size:14px;font-weight:700;color:var(--text-1);line-height:1.4}.lac-summary{font-size:12px;color:var(--text-3);line-height:1.5}.lac-label{font-size:11px;font-weight:700;color:var(--text-4);text-transform:uppercase;letter-spacing:.3px;display:block;margin-bottom:2px}.lac-deps,.lac-blocker,.lac-missing,.lac-next{font-size:12px;color:var(--text-2);line-height:1.5}.lac-empty{color:var(--text-4)}.lac-blocker{background:#fef2f2;border:1px solid #fecaca;border-radius:var(--radius-md);padding:8px 10px;color:#7f1d1d}.lac-missing{background:#fffbeb;border:1px solid #fde68a;border-radius:var(--radius-md);padding:8px 10px;color:#78350f}.lac-checklist ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}.lac-checklist li{font-size:12px;color:var(--text-2);line-height:1.4}.lac-checklist li.ok{color:#047857}.lac-checklist li.pending{color:var(--text-2)}.lac-evidence{font-size:11px;color:var(--text-4)}.lac-commands{display:flex;flex-direction:column;gap:5px;border-top:1px dashed var(--border);padding-top:8px}.lac-command-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.lac-cmd-tag{font-size:11px;font-weight:700;color:var(--text-4)}.lac-command-row code{font-family:SFMono-Regular,Consolas,monospace;font-size:11px;background:#f1f5f9;border:1px solid var(--border-soft);border-radius:6px;padding:3px 8px;color:#1e293b;word-break:break-all}.lac-note{font-size:11.5px;color:#92400e;background:#fffbeb;border:1px solid #fde68a;border-radius:var(--radius-md);padding:8px 10px}@media (max-width: 1180px){.live-admission-grid{grid-template-columns:1fr}}:root{--brand-blue: #1677ff;--brand-blue-deep: #0f1b2d;--nav-bg: #0f1b2d;--nav-bg-2: #112240;--workspace-bg: #f5f7fa;--panel-bg: #ffffff;--border: #e5eaf0;--border-soft: #eef2f7;--text-1: #0f172a;--text-2: #334155;--text-3: #64748b;--text-4: #94a3b8;--green: #10b981;--red: #ef4444;--orange: #f59e0b;--purple: #8b5cf6;--badge-readonly-bg: #f1f5f9;--badge-readonly-fg: #64748b;--badge-demo-bg: #e6f0ff;--badge-demo-fg: #2563eb;--badge-plan-bg: #fef3c7;--badge-plan-fg: #b45309;--warn-bg: #fef2f2;--warn-border: #ef4444;--warn-fg: #ef4444;--shadow-card: 0 1px 3px rgba(15, 23, 42, .06), 0 1px 2px rgba(15, 23, 42, .04);--shadow-hover: 0 6px 18px rgba(15, 23, 42, .1);--radius-lg: 12px;--radius-md: 10px;--radius-pill: 999px;font-family:PingFang SC,Microsoft YaHei,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";color:var(--text-2);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%}body{background:var(--workspace-bg)}button{font-family:inherit}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#cdd6e2;border-radius:8px}::-webkit-scrollbar-thumb:hover{background:#b4c0d0}::-webkit-scrollbar-track{background:transparent}
