:root{--bg:#0b1220;--bg-soft:#131b2e;--panel:#1e293b;--panel-2:#26334a;--glass:#1e293bc7;--line:#334155;--line-strong:#475569;--line-soft:#272f42;--text:#f8fafc;--text-dim:#cbd5e1;--text-mute:#94a3b8;--accent:#3b82f6;--accent-2:#22d3ee;--accent-3:#a371f7;--accent-soft:#172554;--ok:#22c55e;--warn:#f59e0b;--danger:#ef4444;--ring:#fff;--shadow:0 10px 24px #0206178c;--radius:14px;--radius-lg:16px;--radius-md:12px;--radius-sm:8px;--scroll:#38465a;--scroll-hover:#6b7887;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--dur:.2s;--dur-slow:.28s;--ease:cubic-bezier(.2, .7, .3, 1);--mono:"Cascadia Mono", ui-monospace, Consolas, "Courier New", monospace;--sans:"Segoe UI", "Microsoft YaHei", system-ui, sans-serif;--fs-xs:12px;--fs-sm:13px;--fs-base:16px;--fs-lg:17px;--fs-xl:20px;--topbar-h:64px;--stepper-h:62px;--page-w:1180px}html[data-theme=light]{--bg:#f8fafc;--bg-soft:#eef2f8;--panel:#fff;--panel-2:#f1f5f9;--glass:#ffffffe0;--line:#cbd5e1;--line-strong:#94a3b8;--line-soft:#e9eef6;--text:#0f172a;--text-dim:#475569;--text-mute:#5b6b80;--accent:#1e40af;--accent-2:#0e7490;--accent-3:#7c3aed;--accent-soft:#dbeafe;--ok:#0b7a4d;--warn:#9a6700;--danger:#c2261f;--ring:#1e40af;--shadow:0 10px 24px #0f172a1f;--scroll:#cbd5e1;--scroll-hover:#94a3b8}*{box-sizing:border-box}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-corner{background:0 0}::-webkit-scrollbar-thumb{background:var(--scroll);background-clip:content-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--scroll-hover);background-clip:content-box}@supports ((-moz-appearance:none)){*{scrollbar-width:thin;scrollbar-color:var(--scroll) transparent}}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:var(--fs-base)/1.5 var(--sans);-webkit-font-smoothing:antialiased;overflow:hidden}:focus-visible{outline:2px solid var(--ring);outline-offset:2px;border-radius:var(--radius-sm)}button,[role=button],a,select,summary{cursor:pointer}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.aurora{z-index:0;pointer-events:none;position:fixed;inset:0;overflow:hidden}.aurora i{filter:blur(90px);opacity:.32;border-radius:50%;display:block;position:absolute}.aurora i:first-child{background:radial-gradient(circle, color-mix(in srgb, var(--accent) 60%, transparent), transparent 68%);width:46vw;height:46vw;top:-18vw;left:-12vw}.aurora i:nth-child(2){background:radial-gradient(circle, color-mix(in srgb, var(--accent-3) 42%, transparent), transparent 70%);width:40vw;height:40vw;top:8vh;right:-10vw}.aurora:after{content:"";opacity:.16;background-image:linear-gradient(color-mix(in srgb, var(--line) 70%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--line) 70%, transparent) 1px, transparent 1px);background-size:56px 56px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(circle at 50% 0,#000 0%,#0000 78%);mask-image:radial-gradient(circle at 50% 0,#000 0%,#0000 78%)}html[data-theme=light] .aurora i{opacity:.22}html[data-theme=light] .aurora:after{opacity:.4}.app{z-index:1;flex-direction:column;height:100vh;display:flex;position:relative}.shell{width:100%;max-width:var(--page-w);margin:0 auto;padding:0 22px}.topbar{height:var(--topbar-h);background:color-mix(in srgb, var(--panel) 78%, transparent);border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);flex:none;align-items:center;gap:12px;padding:0 22px;display:flex;position:relative}.topbar:after{content:"";background:linear-gradient(90deg, transparent, var(--accent), var(--accent-2), transparent);opacity:.6;background-size:200% 100%;height:1.5px;animation:9s linear infinite rail;position:absolute;bottom:-1px;left:0;right:0}@keyframes rail{to{background-position:200% 0}}.topbar .inner{width:100%;max-width:var(--page-w);align-items:center;gap:12px;margin:0 auto;display:flex}.logo{background:linear-gradient(135deg, var(--accent), var(--accent-3));width:32px;height:32px;box-shadow:0 0 20px color-mix(in srgb, var(--accent) 55%, transparent);border-radius:10px;flex:none;position:relative}.logo:before{content:"";border:2px solid #ffffffeb;border-color:#0000 #ffffffeb #ffffffeb #0000;border-radius:50%;animation:9s linear infinite spin;position:absolute;inset:6px}@keyframes spin{to{transform:rotate(360deg)}}.brand-text{flex-direction:column;min-width:0;line-height:1.2;display:flex}.brand-text b{font-size:var(--fs-lg);letter-spacing:.2px;white-space:nowrap;font-weight:600}.brand-text span{font:var(--fs-xs)/1 var(--mono);color:var(--text-mute);letter-spacing:.06em}.topbar .grow{flex:auto}.ghost-btn{cursor:pointer;border:1px solid var(--line);border-radius:var(--radius-sm);min-width:44px;height:44px;color:var(--text-dim);font:inherit;transition:color var(--dur) var(--ease), border-color var(--dur) var(--ease);background:0 0;justify-content:center;align-items:center;gap:6px;padding:0 12px;display:inline-flex;position:relative}.ghost-btn:hover{color:var(--text);border-color:color-mix(in srgb, var(--accent) 50%, var(--line-strong))}.ghost-btn.on{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 58%, var(--line-strong))}.badge-dot{background:var(--danger);color:#fff;min-width:18px;height:18px;font:600 var(--fs-xs)/18px var(--mono);text-align:center;border-radius:999px;padding:0 4px;position:absolute;top:-5px;right:-5px}.segmented{border:1px solid var(--line);border-radius:var(--radius-sm);display:inline-flex;overflow:hidden}.segmented button{color:var(--text-dim);font:inherit;cursor:pointer;min-height:42px;transition:background var(--dur) var(--ease), color var(--dur) var(--ease);background:0 0;border:0;align-items:center;padding:8px 12px;display:inline-flex}.segmented button:hover{color:var(--text);background:color-mix(in srgb, var(--panel-2) 70%, transparent)}.segmented button.active{background:var(--accent-soft);color:var(--accent)}.dot{background:var(--text-mute);border-radius:50%;flex:none;width:8px;height:8px}.dot.ok{background:var(--ok);box-shadow:0 0 0 3px color-mix(in srgb, var(--ok) 18%, transparent), 0 0 10px color-mix(in srgb, var(--ok) 60%, transparent)}.dot.bad{background:var(--danger);box-shadow:0 0 0 3px color-mix(in srgb, var(--danger) 18%, transparent), 0 0 10px color-mix(in srgb, var(--danger) 60%, transparent)}.main{flex:auto;min-height:0;padding-bottom:26px;overflow:auto}.section{width:100%;max-width:var(--page-w);margin:0 auto;padding:0 22px}.section.split{border-top:1px dashed var(--line-soft);margin-top:16px;padding-top:16px}.sec-title{align-items:baseline;gap:var(--space-3);margin:var(--space-5) 0 var(--space-3);display:flex}.sec-title h2{font-size:var(--fs-xl);letter-spacing:.2px;margin:0;font-weight:600}.sec-title h2:before{content:"";vertical-align:-2px;background:linear-gradient(180deg, var(--accent-2), var(--accent));border-radius:2px;width:3px;height:16px;margin-right:9px;display:inline-block}.sec-title .grow{flex:auto}.card{border-radius:var(--radius);border:1px solid color-mix(in srgb, var(--line-strong) 85%, transparent);background:var(--panel);box-shadow:var(--shadow), 0 0 0 1px #ffffff0a;position:relative;overflow:hidden}.card:before{content:"";opacity:.55;background:linear-gradient(90deg, transparent, var(--line-strong), transparent);height:1px;position:absolute;top:0;left:0;right:0}.screen{flex-direction:column;flex:auto;gap:10px;min-height:0;padding:10px 20px 12px;display:flex;position:relative}.screen-grid{flex:auto;grid-template-columns:292px minmax(0,1fr) 292px;gap:12px;min-height:0;display:grid}.screen-col{flex-direction:column;gap:10px;min-height:0;display:flex;overflow:auto}.hud{padding:var(--space-3) var(--space-4);border-radius:var(--radius);border:1px solid var(--line);background:var(--panel);box-shadow:var(--shadow);position:relative}.hud:before{content:"";left:var(--space-3);right:var(--space-3);background:linear-gradient(90deg, transparent, var(--line-strong), transparent);height:1px;position:absolute;top:0}.hud h3{color:var(--text-dim);letter-spacing:.06em;align-items:center;gap:6px;margin:0 0 10px;font-size:12.5px;font-weight:600;display:flex}.hud-flow{flex-direction:column;gap:9px;display:flex}.hud-stage{grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.hud-no{font:10.5px/1 var(--mono);color:var(--accent)}.hud-name{text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;overflow:hidden}.hud-count{font:10.5px/1 var(--mono);color:var(--text-mute)}.hud-count.ok{color:var(--ok)}.hud-branches{flex-wrap:wrap;grid-column:2/-1;align-items:center;gap:4px 8px;display:flex}.hud-branch{border-left:1px dashed color-mix(in srgb, var(--line-strong) 65%, transparent);align-items:center;gap:4px;padding-left:7px;display:inline-flex}.hud-branch:first-child{border-left:0;padding-left:0}.hud-lane{font:9px/1 var(--mono);color:var(--text-mute);font-style:normal}.hud-branch.fork .hud-lane{color:var(--accent)}.hud-chain{align-items:center;gap:3px;display:inline-flex}.hud-chain i{background:var(--line);border-radius:50%;flex:none;width:7px;height:7px}.hud-chain i.hud-link{background:color-mix(in srgb, var(--line-strong) 85%, transparent);border-radius:1px;width:6px;height:2px}.hud-chain i.online{background:var(--ok);box-shadow:0 0 8px color-mix(in srgb, var(--ok) 70%, transparent)}.hud-chain i.partial{background:var(--accent-2)}.hud-chain i.offline{background:var(--danger)}.hud-chain i.planned{border:1px dashed var(--line);background:0 0}.hud-foot{font:11px/1.5 var(--mono);color:var(--text-mute);margin:10px 0 0}.hud-list,.hud-todos,.hud-keys{flex-direction:column;gap:7px;margin:0;padding:0;list-style:none;display:flex}.hud-list li{align-items:center;gap:7px;font-size:12.5px;display:flex}.hud-list .name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.hud-list code{font:10.5px/1 var(--mono);color:var(--text-mute)}.hud-list .meta{font:10.5px/1 var(--mono);color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;max-width:96px;overflow:hidden}.hud-todos li{color:var(--text-dim);align-items:center;gap:7px;font-size:12.5px;display:flex}.hud-todos i{background:var(--text-mute);border-radius:50%;flex:none;width:6px;height:6px}.hud-todos i.high{background:var(--danger)}.hud-todos i.normal{background:var(--accent)}.hud-todos i.low{background:var(--ok)}.hud-keys li{align-items:baseline;gap:8px;font-size:12px;display:flex}.hud-keys span{color:var(--text-mute)}.hud-keys b{font:12px/1.4 var(--mono);color:var(--text);margin-left:auto}.clock-hud{flex-direction:row;flex:none;align-items:baseline;gap:8px;margin-left:auto;padding:6px 12px;display:flex}.clock{font:500 17px/1.2 var(--mono);letter-spacing:.12em;color:var(--accent);text-shadow:0 0 14px color-mix(in srgb, var(--accent) 55%, transparent)}.kpi-grid{grid-template-columns:1fr 1fr;gap:9px 10px;display:grid}.kpi-cell{border:1px solid var(--line-soft);background:color-mix(in srgb, var(--bg-soft) 42%, transparent);border-radius:10px;padding:8px 9px;position:relative}.kpi-cell .countup{font:600 20px/1.1 var(--mono);color:var(--accent)}.kpi-cell .unit{font:10.5px/1 var(--mono);color:var(--text-mute);margin-left:4px}.kpi-cell small{color:var(--text-mute);margin-top:4px;font-size:11px;display:block}.screen-stage{border-radius:var(--radius);border:1px solid var(--line);background:radial-gradient(120% 80% at 50% 8%, color-mix(in srgb, var(--accent) 15%, transparent), transparent 62%), radial-gradient(80% 60% at 50% 100%, color-mix(in srgb, var(--accent-2) 12%, transparent), transparent 70%), color-mix(in srgb, var(--bg-soft) 72%, #000 4%);min-height:0;box-shadow:inset 0 0 90px #00000080, var(--shadow);position:relative;overflow:hidden}.screen-stage:after{content:"";pointer-events:none;opacity:.35;background:repeating-linear-gradient(180deg, color-mix(in srgb, var(--accent) 9%, transparent) 0 1px, transparent 1px 4px);mix-blend-mode:screen;position:absolute;inset:0}.stage-canvas{cursor:grab;width:100%;height:100%;display:block}.hotspot{z-index:3;border:1px solid color-mix(in srgb, var(--accent) 42%, transparent);background:color-mix(in srgb, var(--bg-soft) 78%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--text);white-space:nowrap;cursor:pointer;border-radius:999px;align-items:center;gap:7px;padding:5px 10px 5px 8px;font:12px/1 inherit;transition:opacity .2s,border-color .2s,box-shadow .2s;display:inline-flex;position:absolute;top:0;left:0;transform:translate(-9999px,-9999px)}.hotspot:hover,.hotspot.on{border-color:color-mix(in srgb, var(--accent) 85%, transparent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 16%, transparent), 0 8px 22px #00000073}.hs-dot{background:var(--accent);width:7px;height:7px;box-shadow:0 0 10px color-mix(in srgb, var(--accent) 80%, transparent);border-radius:50%;animation:1.8s ease-in-out infinite hs-pulse}@keyframes hs-pulse{50%{opacity:.7;transform:scale(1.35)}}.hs-meta{font:10px/1 var(--mono);color:var(--text-dim)}.hs-no{font:10px/1 var(--mono);color:var(--accent)}.hs-mark{font:11px/1 var(--mono);color:var(--text-dim);font-style:normal}.hs-mark.fork{color:var(--accent)}.stage-tip{z-index:3;color:var(--text-dim);border:1px solid var(--line);background:color-mix(in srgb, var(--bg-soft) 72%, transparent);border-radius:999px;padding:5px 11px;font-size:11.5px;position:absolute;bottom:46px;left:50%;transform:translate(-50%)}.design-pop{z-index:4;text-align:left;border:1px solid color-mix(in srgb, var(--accent) 48%, transparent);background:color-mix(in srgb, var(--bg-soft) 92%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);width:300px;box-shadow:0 20px 50px #0000008c, 0 0 0 1px color-mix(in srgb, var(--accent) 18%, transparent);border-radius:12px;margin:-34px 0 0 22px;padding:12px 13px 12px 15px;transition:opacity .2s;animation:.22s cubic-bezier(.2,.7,.3,1) pop-in;position:absolute;top:0;left:0}@keyframes pop-in{0%{opacity:0;transform:translateY(6px)scale(.97)}}.pop-bar{background:var(--line-strong);border-radius:12px 0 0 12px;width:3px;position:absolute;top:0;bottom:0;left:0}.design-pop.online .pop-bar{background:var(--ok)}.design-pop.partial .pop-bar{background:var(--accent-2)}.design-pop.planned .pop-bar{background:repeating-linear-gradient(180deg, var(--text-mute) 0 5px, transparent 5px 10px)}.design-pop.offline .pop-bar{background:var(--danger)}.pop-where{font:10px/1.45 var(--mono);color:var(--text-dim);margin:0 0 8px}.pop-links{flex-direction:column;gap:5px;margin:0 0 10px;padding:0;list-style:none;display:flex}.stage-lane{align-items:flex-start;gap:5px;display:flex}.stage-lane+.stage-lane{border-top:1px dashed color-mix(in srgb, var(--line-strong) 45%, transparent);padding-top:5px}.lane-items{flex-wrap:wrap;align-items:center;gap:4px;min-width:0;display:inline-flex}.lane-arrow{font:10px/1 var(--mono);color:var(--text-dim);font-style:normal}.pop-links button{border:1px solid var(--line);color:var(--text-dim);text-align:left;cursor:pointer;max-width:100%;transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease);background:0 0;border-radius:7px;align-items:center;gap:6px;padding:4px 7px;font:11.5px/1.35 inherit;display:inline-flex}.pop-links button:hover{background:color-mix(in srgb, var(--accent) 14%, transparent);border-color:color-mix(in srgb, var(--accent) 40%, transparent)}.pop-links button.restricted{opacity:.6;border-style:dashed}.pop-links i{background:var(--line);border-radius:50%;flex:none;width:6px;height:6px}.pop-links i.online{background:var(--ok)}.pop-links i.partial{background:var(--accent-2)}.pop-links i.planned{border:1px dashed var(--line);background:0 0}.pop-links i.offline{background:var(--danger)}.pop-links .pl-lane{font:9px/1 var(--mono);color:var(--text-dim);border:1px solid var(--line);border-radius:4px;flex:none;margin-top:1px;padding:3px 4px;font-style:normal}.pop-links .pl-lane.fork{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 42%, transparent)}.pop-links .pl-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pop-links em{font:10px/1 var(--mono);color:var(--text-dim);flex:none;font-style:normal}.design-pop header{align-items:center;gap:8px;margin-bottom:7px;display:flex}.pop-zone{font:10.5px/1 var(--mono);color:var(--accent);letter-spacing:.08em}.design-pop header .link{margin-left:auto;font-size:11px}.pop-name{margin-bottom:5px;font-size:13.5px;font-weight:600;display:block}.pop-desc{color:var(--text-dim);margin:0 0 9px;font-size:11.5px;line-height:1.55}.pop-metrics{gap:14px;margin-bottom:10px;display:flex}.pop-metrics span{color:var(--text-mute);font-size:11px}.pop-metrics b{font:600 15px/1.2 var(--mono);color:var(--text);display:block}.pop-foot{align-items:center;gap:8px;display:flex}.pop-foot .primary-btn{margin-left:auto}.primary-btn{cursor:pointer;border:1px solid color-mix(in srgb, var(--accent) 55%, transparent);background:color-mix(in srgb, var(--accent) 18%, transparent);color:var(--text);border-radius:9px;padding:6px 13px;font:12px/1.3 inherit;transition:background .16s,border-color .16s}.primary-btn:hover{background:color-mix(in srgb, var(--accent) 30%, transparent)}.muted{color:var(--text-mute);font-size:12px}.stage-error{z-index:5;border:1px solid color-mix(in srgb, var(--danger) 45%, transparent);background:color-mix(in srgb, var(--danger) 14%, var(--bg-soft));border-radius:10px;padding:10px 12px;font-size:12px;position:absolute;inset:auto 16px 16px}.stage-tools{z-index:4;flex-wrap:wrap;align-items:center;gap:6px;display:flex;position:absolute;bottom:12px;left:12px;right:12px}.spec-row{cursor:pointer;text-align:left;border:1px solid var(--line-soft);background:color-mix(in srgb, var(--bg-soft) 48%, transparent);width:100%;color:var(--text);border-radius:10px;flex-direction:column;gap:3px;margin-top:10px;padding:8px 10px;font-family:inherit;display:flex}.spec-row:hover{border-color:color-mix(in srgb, var(--accent) 42%, transparent)}.spec-row.on{border-color:color-mix(in srgb, var(--accent) 62%, transparent);background:color-mix(in srgb, var(--accent) 12%, transparent)}.sr-head{color:var(--text-mute);justify-content:space-between;align-items:center;gap:6px;display:flex}.sr-label{font:10.5px/1 var(--mono);letter-spacing:.06em}.sr-val{align-items:baseline;gap:6px;min-width:0;display:flex}.sr-val b{font:600 14px/1.2 var(--mono);color:var(--accent)}.sr-val em{font-style:normal;font:10.5px/1.3 var(--mono);color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sr-id{font:10px/1 var(--mono);color:var(--text-mute)}.stage-tools button{cursor:pointer;border:1px solid var(--line);background:color-mix(in srgb, var(--bg-soft) 74%, transparent);width:30px;height:28px;color:var(--text-dim);font:11.5px/1 var(--mono);border-radius:8px;place-items:center;display:grid}.stage-tools button:hover{color:var(--text);border-color:color-mix(in srgb, var(--accent) 50%, transparent)}.stage-tools button.on{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 62%, transparent)}.spec-picker{border:1px solid color-mix(in srgb, var(--accent) 38%, transparent);background:color-mix(in srgb, var(--bg-soft) 88%, transparent);border-radius:10px;flex-direction:column;max-height:232px;margin-top:8px;animation:.2s cubic-bezier(.2,.7,.3,1) pop-in;display:flex;overflow:hidden}.spec-picker header{border-bottom:1px solid var(--line-soft);align-items:center;gap:8px;padding:9px 11px;display:flex}.spec-picker input{border:1px solid var(--line);background:color-mix(in srgb, var(--bg) 60%, transparent);min-width:0;color:var(--text);border-radius:8px;flex:1;padding:6px 9px;font:12px/1.3 inherit}.spec-picker input:focus{border-color:color-mix(in srgb, var(--accent) 60%, transparent);outline:none}.spec-picker ul{flex:1;min-height:0;margin:0;padding:4px;list-style:none;overflow:auto}.spec-picker li{cursor:pointer;border:1px solid #0000;border-radius:9px;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:2px 8px;padding:6px 8px;display:grid}.spec-picker li:hover{background:color-mix(in srgb, var(--accent) 12%, transparent)}.spec-picker li.on{border-color:color-mix(in srgb, var(--accent) 55%, transparent);background:color-mix(in srgb, var(--accent) 14%, transparent)}.spec-picker li b{font:600 12.5px/1.4 var(--mono);color:var(--text);grid-column:1}.spec-picker li em{font-style:normal;font:10px/1.4 var(--mono);color:var(--text-mute);grid-column:2}.spec-picker li span{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;font-size:11.5px;overflow:hidden}.spec-picker li.empty{text-align:center;color:var(--text-mute);cursor:default;padding:14px 8px;font-size:12px;display:block}.spec-picker .hint{border-top:1px solid var(--line-soft);font:10.5px/1.5 var(--mono);color:var(--text-mute);margin:0;padding:7px 11px}.screen-flow{padding:var(--space-2) var(--space-3);border-radius:var(--radius);border:1px solid var(--line);background:var(--panel);align-items:center;gap:6px;display:flex;overflow:hidden}.flow-node{align-items:center;gap:8px;min-width:0;display:flex}.fn-no{font:10.5px/1 var(--mono);color:var(--accent)}.fn-text{align-items:baseline;gap:5px;min-width:0;display:inline-flex}.fn-text b{white-space:nowrap;font-size:12.5px;font-weight:600}.fn-mark{font:11px/1 var(--mono);color:var(--text-mute);font-style:normal}.fn-mark.fork{color:var(--accent)}.fn-link{background-image:linear-gradient(90deg, color-mix(in srgb, var(--accent) 75%, transparent) 0 8px, transparent 8px 16px);background-size:16px 2px;border-radius:2px;flex:1;min-width:26px;height:2px;margin:0 4px;animation:1.1s linear infinite fn-run}@keyframes fn-run{to{background-position:16px 0}}.view-switch button{align-items:center;gap:5px;padding:6px 10px;display:inline-flex}@media (width<=1400px){.screen-grid{grid-template-columns:244px minmax(0,1fr) 244px}}@media (width<=1120px){.screen-grid{grid-template-columns:minmax(0,1fr)}.screen-col{flex-direction:row;overflow:auto}.screen-col .hud{flex:220px}.screen-col.right{order:3}}.section.flow{gap:var(--space-4);flex-direction:column;display:flex}.stepper{z-index:6;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow);flex-wrap:wrap;display:flex;position:sticky;top:0}.steps{align-items:center;gap:var(--space-1);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.steps li{align-items:center;display:flex}.steps li:not(:last-child):after{content:"";background:var(--line-strong);border-radius:2px;width:12px;height:2px;margin:0 4px}.stepper-item{border-radius:var(--radius-sm);min-height:40px;color:var(--text-dim);cursor:pointer;font:var(--fs-sm)/1.3 inherit;white-space:nowrap;transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease), color var(--dur) var(--ease);background:0 0;border:1px solid #0000;align-items:center;gap:8px;padding:6px 10px;display:inline-flex;position:relative;overflow:hidden}.stepper-item:hover{background:var(--panel-2);border-color:var(--line);color:var(--text)}.stepper-item.on{color:var(--text);border-color:color-mix(in srgb, var(--accent) 55%, transparent);background:color-mix(in srgb, var(--accent) 12%, transparent)}.s-no{font:600 var(--fs-xs)/1 var(--mono);color:var(--text-mute)}.stepper-item.on .s-no{color:var(--accent)}.s-name{letter-spacing:.2px;font-weight:600}.s-cnt{font:var(--fs-xs)/1 var(--mono);color:var(--text-mute)}.s-cnt b{color:inherit}.stepper-item.done .s-cnt{color:var(--ok)}.s-bar{background:var(--line-strong);height:2px;transition:width var(--dur) var(--ease);position:absolute;bottom:0;left:0}.stepper-item.done .s-bar{background:var(--ok)}.stepper-item.branch .s-name:after{content:"‖";color:var(--text-mute);margin-left:6px;font-size:11px}.legend{align-items:center;gap:var(--space-2) var(--space-4);padding-left:var(--space-1);font:var(--fs-xs)/1 var(--mono);color:var(--text-mute);flex-wrap:wrap;display:flex}.legend b{color:var(--text-dim)}.legend .sw{background:var(--line-strong);border-radius:2px;width:8px;height:8px;margin-right:5px;display:inline-block}.legend .sw.online{background:var(--ok)}.legend .sw.partial{background:var(--accent-2)}.legend .sw.planned{background:var(--text-mute);opacity:.5}.legend .dash{background:var(--line);width:1px;height:14px}.stage{scroll-margin-top:calc(var(--stepper-h) + var(--space-3));padding:var(--space-4) var(--space-4) var(--space-5);border:1px solid var(--line);border-radius:var(--radius-lg);background:linear-gradient(180deg, color-mix(in srgb, var(--panel) 94%, transparent), var(--panel));position:relative}.stage+.stage{margin-top:var(--space-1)}.stage+.stage:before{content:"";left:25px;top:calc(-1 * var(--space-5));height:var(--space-5);background:repeating-linear-gradient(180deg, color-mix(in srgb, var(--line-strong) 80%, transparent) 0 4px, transparent 4px 8px);width:2px;position:absolute}.stage-head{align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.stage-no{border-radius:var(--radius-sm);width:34px;height:34px;font:600 var(--fs-sm)/1 var(--mono);color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);background:color-mix(in srgb, var(--accent) 12%, transparent);flex:none;place-items:center;display:grid}.stage-label{font-size:var(--fs-lg);letter-spacing:.3px;margin:0;font-weight:600}.stage-meta{align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-left:auto;display:flex}.pill{border:1px solid var(--line);white-space:nowrap;font:var(--fs-xs)/1 var(--mono);color:var(--text-mute);border-radius:999px;padding:5px 9px}.pill.ok{color:var(--ok);border-color:color-mix(in srgb, var(--ok) 40%, transparent)}.stage-body{--rail-w:26px;--tag-w:88px}.lane,.split,.join{grid-template-columns:var(--rail-w) minmax(0, 1fr);display:grid}.lane.tagged,.split,.join{grid-template-columns:var(--rail-w) var(--tag-w) minmax(0, 1fr)}.lane+.lane,.lane+.split,.split+.join,.lane+.join,.lane+.lane.tagged{margin-top:var(--space-3)}.rail{position:relative}.rail:before{content:"";width:2px;left:8px;top:calc(-1 * var(--space-3));bottom:calc(-1 * var(--space-3));background:color-mix(in srgb, var(--line-strong) 85%, transparent);position:absolute}.rail:after{content:"";width:calc(var(--rail-w) - 12px);background:color-mix(in srgb, var(--line-strong) 85%, transparent);height:2px;position:absolute;top:50%;left:8px}.stage-body>:first-child .rail:before{top:50%}.stage-body>:last-child .rail:before{bottom:50%}.rail.fork:before,.rail.fork:after{background:var(--accent)}.lane-tag,.fork-tag,.join-tag{padding-right:var(--space-3);text-align:right;font:var(--fs-xs)/1.4 var(--mono);color:var(--text-dim);align-self:center;position:relative}.lane-tag b{color:var(--text);font-weight:600;display:block}.lane-tag i{color:var(--text-mute);font-style:normal}.lane-tag:before{content:"";left:calc(-1 * var(--rail-w) + 9px);background:var(--panel);border:2px solid var(--line-strong);border-radius:50%;width:7px;height:7px;margin:-3.5px 0 0 -3.5px;position:absolute;top:50%}.fork-tag{color:var(--accent)}.fork-tag:before{content:"";left:calc(-1 * var(--rail-w) + 9px);background:var(--accent);width:9px;height:9px;box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent);border-radius:50%;margin:-4.5px 0 0 -4.5px;position:absolute;top:50%}.join-tag:before{content:"";left:calc(-1 * var(--rail-w) + 9px);background:var(--panel);border:2px solid var(--accent);width:9px;height:9px;margin:-4.5px 0 0 -4.5px;position:absolute;top:50%;transform:rotate(45deg)}.lane-cards{align-items:stretch;gap:var(--space-2);flex-wrap:wrap;min-width:0;display:flex}.lane-cards .node{flex:300px;max-width:560px}.stage:not(.branched) .lane-cards .node{max-width:640px}.flow-arrow{color:var(--accent);opacity:.8;flex:none;align-self:center}.split-sep{color:var(--accent);opacity:.8;flex:none;align-self:center;font-size:16px}.node{gap:var(--space-2);padding:var(--space-4) var(--space-4) var(--space-3) calc(var(--space-4) + 4px);cursor:pointer;transition:transform var(--dur) var(--ease), border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);flex-direction:column;display:flex;position:relative;overflow:hidden}.node:hover,.node:focus-visible{border-color:color-mix(in srgb, var(--fc,var(--accent)) 55%, var(--line-strong));box-shadow:var(--shadow), 0 0 0 1px color-mix(in srgb, var(--fc,var(--accent)) 28%, transparent);transform:translateY(-2px)}.node:focus-visible{outline-offset:0}.node-bar{background:var(--line-strong);width:3px;position:absolute;top:0;bottom:0;left:0}.node.online .node-bar{background:var(--ok)}.node.partial .node-bar{background:var(--accent-2)}.node.planned .node-bar{background:repeating-linear-gradient(180deg, var(--text-mute) 0 5px, transparent 5px 10px)}.node.offline .node-bar{background:var(--danger)}.node.sim{border-style:dashed}.node.restricted{opacity:.55;filter:saturate(.45)}.node.restricted:hover{border-color:var(--line);box-shadow:none;transform:none}.node.restricted .cta{pointer-events:none}.node-head{align-items:flex-start;gap:var(--space-3);display:flex}.node-ico{border-radius:var(--radius-sm);color:#fff;background:linear-gradient(135deg, var(--fc,var(--accent)), color-mix(in srgb, var(--fc,var(--accent)) 42%, #0b1220));flex:none;place-items:center;width:36px;height:36px;display:grid}.node-title{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.node-name{font-size:var(--fs-lg);font-weight:600;line-height:1.3}.node-flow{letter-spacing:.06em;font:var(--fs-xs)/1.3 var(--mono);color:var(--text-mute);flex-wrap:wrap;align-items:center;gap:6px;display:flex}.node-role{color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 42%, transparent);border-radius:999px;padding:2px 6px;font-style:normal}.node-role.sim{color:var(--accent-2);border-color:color-mix(in srgb, var(--accent-2) 42%, transparent)}.node-desc{color:var(--text-dim);font-size:var(--fs-sm);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;line-height:1.5;display:-webkit-box;overflow:hidden}.node-caps{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.node-caps li{border:1px solid var(--line);font:var(--fs-xs)/1.2 var(--mono);color:var(--text-mute);border-radius:999px;padding:3px 8px}.node-caps li.more{color:var(--text-dim)}.node-caps li.ref{color:var(--accent-2);border-style:dashed;border-color:color-mix(in srgb, var(--accent-2) 45%, transparent);align-items:center;gap:4px;display:inline-flex}.node-steps{flex-wrap:wrap;align-items:center;gap:4px 6px;margin:0;padding:0;list-style:none;display:flex}.node-steps li{align-items:center;gap:5px;display:inline-flex}.node-steps li:not(:last-child):after{content:"";background:var(--line-strong);width:10px;height:1px}.node-steps .step-label{border:1px solid var(--line);min-height:28px;color:var(--text-mute);cursor:default;font:var(--fs-xs)/1.2 inherit;background:0 0;border-radius:999px;align-items:center;gap:5px;padding:4px 8px;display:inline-flex}.node-steps li.linked .step-label{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 40%, transparent);cursor:pointer}.node-steps li.linked .step-label:hover{background:color-mix(in srgb, var(--accent) 14%, transparent)}.node-steps .dot-no{width:14px;height:14px;font:600 9px/1 var(--mono);color:var(--text);background:color-mix(in srgb, var(--text-mute) 34%, transparent);border-radius:50%;flex:none;place-items:center;display:grid}.node-steps .step-val{font:600 var(--fs-xs)/1 var(--mono);color:var(--text-dim)}.node-foot{align-items:center;gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--line-soft);flex-wrap:wrap;margin-top:auto;display:flex}.node-metrics{gap:var(--space-3);display:flex}.node-metrics span{flex-direction:column;line-height:1.25;display:flex}.node-metrics b{font:600 15px/1.25 var(--mono)}.node-metrics i{font-style:normal;font-size:var(--fs-xs);color:var(--text-mute)}.cta{border:1px solid var(--line-strong);border-radius:var(--radius-sm);min-height:40px;color:var(--text-dim);cursor:pointer;font:600 var(--fs-sm)/1 inherit;transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease), color var(--dur) var(--ease);background:0 0;align-items:center;gap:5px;margin-left:auto;padding:8px 13px;display:inline-flex}.cta.ghost{color:var(--text-mute);border-style:dashed}.node:hover .cta,.node:focus-visible .cta:not(.ghost){background:var(--accent);border-color:var(--accent);color:#fff}.node:hover .cta.ghost{color:var(--text-dim);border-color:var(--line-strong)}.badge{font:var(--fs-xs)/1 var(--mono);white-space:nowrap;border:1px solid var(--line);color:var(--text-mute);border-radius:999px;padding:5px 9px}.badge.online{color:var(--ok);border-color:color-mix(in srgb, var(--ok) 45%, transparent);background:color-mix(in srgb, var(--ok) 12%, transparent)}.badge.partial{color:var(--accent-2);border-color:color-mix(in srgb, var(--accent-2) 45%, transparent);background:color-mix(in srgb, var(--accent-2) 12%, transparent)}.badge.planned{color:var(--text-mute);border-style:dashed}.badge.offline{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 45%, transparent);background:color-mix(in srgb, var(--danger) 10%, transparent)}.badge.restricted{color:var(--text-mute);background:0 0;border-style:dotted}.link{color:var(--accent);cursor:pointer;font:var(--fs-sm)/1.4 inherit;white-space:nowrap;border-radius:var(--radius-sm);min-height:36px;transition:color var(--dur) var(--ease);background:0 0;border:0;padding:8px 4px}.link:hover{text-decoration:underline}.star{opacity:.45;flex:none}.star.on{opacity:1;color:var(--warn)}.kpis{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;display:grid}.kpi{padding:13px 15px}.kpi .k-label{color:var(--text-mute);font-size:11.5px}.kpi .k-value{font:600 23px/1.3 var(--mono);background:linear-gradient(120deg, var(--text), color-mix(in srgb, var(--accent-2) 70%, var(--text)));color:#0000;-webkit-background-clip:text;background-clip:text;margin:3px 0 1px}.kpi .k-value small{color:var(--text-mute);-webkit-text-fill-color:var(--text-mute);margin-left:4px;font-size:11.5px}.kpi .k-hint{color:var(--text-mute);font-size:10.5px}.kpi.pending .k-value{-webkit-text-fill-color:var(--text-mute);background:0 0;font-size:15px}.resources{grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:12px;display:grid}.res{cursor:default;align-items:center;gap:11px;padding:13px 15px;display:flex}.res-ico{width:34px;height:34px;color:var(--accent);background:color-mix(in srgb, var(--accent) 14%, transparent);border:1px solid color-mix(in srgb, var(--accent) 30%, transparent);border-radius:10px;flex:none;place-items:center;display:grid}.res .r-text{flex:1;min-width:0}.res b{font-size:13px;font-weight:600;display:block}.res small{color:var(--text-mute);font-size:11.5px}.res .r-count{font:600 15px/1 var(--mono);color:var(--text-dim)}.foot{width:100%;max-width:var(--page-w);margin:var(--space-5) auto 0;padding:var(--space-4) 22px var(--space-2);align-items:center;gap:var(--space-4);border-top:1px solid var(--line-soft);color:var(--text-mute);font:var(--fs-xs)/1.6 var(--mono);flex-wrap:wrap;display:flex}.foot .grow{flex:auto}.svc-strip{gap:var(--space-4);flex-wrap:wrap;display:flex}.svc-strip span{align-items:center;gap:6px;display:inline-flex}.scrim{z-index:40;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#03060b8c;animation:.18s both fade;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.drawer{z-index:41;border-left:1px solid var(--line);background:color-mix(in srgb, var(--panel) 97%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);flex-direction:column;width:min(446px,92vw);animation:.22s cubic-bezier(.2,.7,.3,1) both slide;display:flex;position:fixed;top:0;bottom:0;right:0;box-shadow:-20px 0 60px #00000080}@keyframes slide{0%{opacity:.4;transform:translate(28px)}}.drawer-head{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:14px 16px;display:flex;position:relative}.drawer-head:after{content:"";background:linear-gradient(90deg, color-mix(in srgb, var(--accent) 70%, transparent), transparent);height:1px;position:absolute;bottom:-1px;left:0;right:0}.drawer-head h3{margin:0;font-size:15px}.drawer-head .count{font:11px/1 var(--mono);color:var(--text-mute)}.drawer-body{flex:1;padding:13px 16px 20px;overflow:auto}.close-x{margin-left:auto}.empty{color:var(--text-mute);padding:16px 4px;font-size:12.5px}.todo{border:1px solid var(--line-soft);background:color-mix(in srgb, var(--panel-2) 55%, transparent);border-radius:12px;align-items:flex-start;gap:10px;margin-bottom:9px;padding:11px 12px;transition:all .16s;display:flex}.todo:hover{border-color:color-mix(in srgb, var(--accent) 42%, var(--line));background:color-mix(in srgb, var(--accent) 9%, transparent);box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 18%, transparent)}.todo .txt{flex:1;min-width:0}.todo b{margin-bottom:2px;font-size:13px;font-weight:500;display:block}.todo small{color:var(--text-mute);font-size:11.5px}.todo .tag{font:10.5px/1 var(--mono);color:var(--text-mute);border:1px solid var(--line);border-radius:999px;height:fit-content;padding:3px 7px}.prio{border-radius:50%;flex:none;width:7px;height:7px;margin-top:7px}.prio.high{background:var(--danger);box-shadow:0 0 9px color-mix(in srgb, var(--danger) 80%, transparent)}.prio.normal{background:var(--warn);box-shadow:0 0 9px color-mix(in srgb, var(--warn) 70%, transparent)}.prio.low{background:var(--text-mute)}.row{border-bottom:1px dashed var(--line-soft);align-items:center;gap:9px;padding:8px 4px;display:flex}.row:last-child{border-bottom:0}.row .name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.row .meta{font:11px/1.4 var(--mono);color:var(--text-mute)}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{font:11px/1 var(--mono);border:1px solid var(--line);color:var(--text-dim);border-radius:999px;padding:4px 8px}.chip.step{cursor:default}.chip.step.linked{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 40%, transparent);cursor:pointer}.chip.step.linked:hover{background:color-mix(in srgb, var(--accent) 14%, transparent)}.chip.step b{color:var(--text-mute);margin-left:5px;font-weight:600}.detail-rows{flex-direction:column;gap:10px;display:flex}.detail-row{gap:10px;display:flex}.detail-row .dk{width:72px;color:var(--text-mute);flex:none;font-size:12px}.detail-row .dv{flex:1;min-width:0;font-size:13px}.search-overlay{z-index:45;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#03060b9e;justify-content:center;align-items:flex-start;padding-top:10vh;animation:.16s both fade;display:flex;position:fixed;inset:0}.search-panel{flex-direction:column;width:min(700px,94vw);max-height:72vh;display:flex}.search-input{border-bottom:1px solid var(--line-soft);align-items:center;gap:10px;padding:13px 16px;display:flex}.search-input input{color:var(--text);background:0 0;border:0;outline:0;flex:1;font-size:15px}.search-results{padding:6px;overflow:auto}.hit{cursor:pointer;border-radius:10px;align-items:center;gap:10px;padding:9px 12px;display:flex}.hit:hover{background:color-mix(in srgb, var(--accent) 12%, transparent)}.hit .hte{font:10.5px/1 var(--mono);color:var(--text-mute);border:1px solid var(--line);border-radius:999px;padding:3px 7px}.hit .htxt{flex:1;min-width:0}.hit .htxt b{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;display:block;overflow:hidden}.hit .htxt small{color:var(--text-mute);font:11px/1.4 var(--mono)}.search-hint{color:var(--text-mute);border-top:1px solid var(--line-soft);padding:9px 15px;font-size:11.5px}.toasts{z-index:60;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:18px;right:18px}.toast{border:1px solid var(--line);background:color-mix(in srgb, var(--panel) 96%, transparent);max-width:380px;box-shadow:var(--shadow);border-radius:12px;padding:10px 14px;font-size:12.5px;animation:.2s both slide}.toast.bad{border-color:color-mix(in srgb, var(--danger) 55%, transparent)}.toast.ok{border-color:color-mix(in srgb, var(--ok) 55%, transparent)}.skeleton{background:linear-gradient(90deg, var(--line-soft), var(--line), var(--line-soft));background-size:200% 100%;border-radius:6px;height:14px;animation:1.2s linear infinite sk}@keyframes sk{to{background-position:-200% 0}}@media (width<=1180px){.stage-body{--tag-w:84px}}@media (width<=900px){.brand-text span{display:none}.stage-body{--rail-w:18px;--tag-w:0px}.lane.tagged,.split,.join{grid-template-columns:var(--rail-w) minmax(0, 1fr)}.stage-body .rail{grid-row:1/span 2}.lane-tag,.fork-tag,.join-tag{text-align:left;grid-area:1/2;justify-self:stretch;padding:0 0 6px}.lane-tag b,.lane-tag i{display:inline}.lane-tag b{margin-right:4px}.lane-cards{grid-area:2/2}.lane-cards .node,.stage:not(.branched) .lane-cards .node{max-width:none}.stepper{position:static}}@media (width<=700px){.shell,.section,.foot{padding-left:14px;padding-right:14px}.stage{padding:var(--space-3) var(--space-3) var(--space-4)}.stage-no{width:28px;height:28px;font-size:11px}.stage-meta{margin-left:0}.lane-cards{flex-direction:column;align-items:stretch}.flow-arrow{align-self:flex-start;margin:0 0 0 8px;transform:rotate(90deg)}.steps li:not(:last-child):after{width:8px;margin:0 2px}.stepper-item{padding:6px 8px}}
