:root{--canvas: #eef0f6;--surface: #ffffff;--surface-2: #f7f8fc;--surface-3: #eceef5;--line: #e7e9f1;--line-strong: #d4d8e4;--text: #14151a;--text-2: #454957;--text-3: #5f6579;--ink: #17181c;--accent: #5b5bd6;--accent-ink: #4545bf;--accent-soft: #eeeefd;--ok: #1c7a3a;--ok-soft: #e5f6ea;--warn: #a8480a;--warn-soft: #ffeadb;--warn-solid: #c2410c;--danger: #b42323;--danger-soft: #ffeaea;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 20px;--shadow-xs: 0 1px 2px rgb(20 21 26 / 5%);--shadow-sm: 0 1px 2px rgb(20 21 26 / 4%), 0 2px 8px rgb(20 21 26 / 4%);--shadow-md: 0 2px 4px rgb(20 21 26 / 4%), 0 10px 28px rgb(20 21 26 / 10%);--ease: cubic-bezier(.2, .7, .2, 1);--mono: "SF Mono", ui-monospace, Menlo, Consolas, monospace;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,sans-serif;font-size:14px;line-height:1.5;color:var(--text);background:var(--canvas);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.hue-0{--h-ink: #4545bf;--h-soft: #eeeefd;--h-wash: #f6f6fe;--h-dot: #6366f1}.hue-1{--h-ink: #0b7a75;--h-soft: #e3f5f3;--h-wash: #f0faf9;--h-dot: #14b8a6}.hue-2{--h-ink: #8a5a00;--h-soft: #fff3d6;--h-wash: #fffaeb;--h-dot: #f5a524}.hue-3{--h-ink: #b4234f;--h-soft: #ffe8ef;--h-wash: #fff5f8;--h-dot: #f43f73}.hue-4{--h-ink: #17679f;--h-soft: #e3f1fc;--h-wash: #f1f8fe;--h-dot: #38a1e8}.hue-5{--h-ink: #6b3fc4;--h-soft: #f1eaff;--h-wash: #f8f4ff;--h-dot: #8b5cf6}.hue-6{--h-ink: #1c7a3a;--h-soft: #e5f6ea;--h-wash: #f2fbf5;--h-dot: #22a85a}.hue-7{--h-ink: #a8480a;--h-soft: #ffeadb;--h-wash: #fff6ef;--h-dot: #f2762e}.hue-none{--h-ink: #4a5262;--h-soft: #eceef3;--h-wash: #f6f7fa;--h-dot: #8a91a3}.s-suggested{--s-ink: #6b3fc4;--s-wash: #f1eaff;--s-dot: #8b5cf6}.s-todo{--s-ink: #4a5262;--s-wash: #eceef3;--s-dot: #7b8194}.s-doing{--s-ink: #8a5a00;--s-wash: #fff3d6;--s-dot: #d99200}.s-awaiting_approval{--s-ink: #a8480a;--s-wash: #ffeadb;--s-dot: #e8590c}.s-review{--s-ink: #1c7a3a;--s-wash: #e5f6ea;--s-dot: #2f9e44}.s-done{--s-ink: #4545bf;--s-wash: #eeeefd;--s-dot: #5b5bd6}.s-shelved{--s-ink: #565c6e;--s-wash: #f0f1f5;--s-dot: #a0a4b3}*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:#cdd1de transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{border:3px solid transparent;border-radius:6px;background:#cdd1de padding-box}::-webkit-scrollbar-thumb:hover{background:#aeb4c6 padding-box}::selection{background:#dcdcfa}html,body,#root{height:100%}body,h1,h2,h3,h4,p,ul,ol,dl,dd{margin:0}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}code,pre{font-family:var(--mono);font-size:12px}svg{flex:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}:focus:not(:focus-visible){outline:none}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}.muted{color:var(--text-3)}.danger{color:var(--danger)}.nowrap{white-space:nowrap}.right{text-align:right!important}.num{font-variant-numeric:tabular-nums}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.shell{display:flex;height:100vh;overflow:hidden;background:var(--canvas)}.splash{display:grid;place-items:center;min-height:100vh}.splash>.loading{max-width:560px}.sidebar{width:232px;flex:none;display:flex;flex-direction:column;gap:2px;padding:16px 12px 12px}.brand{display:flex;align-items:center;gap:10px;padding:4px 10px 18px;font-size:17px;font-weight:600;letter-spacing:.02em}.brand-mark{flex:none;display:inline-grid;place-items:center;width:28px;height:28px;border-radius:9px;background:linear-gradient(140deg,#6e6ee6,#4545bf);color:#fff;font-size:15px;font-weight:600;box-shadow:0 2px 6px #5b5bd659}.brand-mark-lg{width:40px;height:40px;border-radius:13px;font-size:21px}.nav-group{display:flex;flex-direction:column;gap:2px}.nav-section{padding:18px 12px 6px;font-size:12px;letter-spacing:.06em;color:var(--text-3)}.nav-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:10px;color:var(--text-2);font-size:14px;transition:background .15s,color .15s}.nav-item:hover{background:#fff9;color:var(--text)}.nav-item.active{background:var(--surface);color:var(--text);font-weight:500;box-shadow:var(--shadow-xs)}.nav-item.active svg{color:var(--accent)}.nav-label{white-space:nowrap}.nav-badge{margin-left:auto;min-width:20px;padding:0 6px;border-radius:10px;background:var(--warn-solid);color:#fff;font-size:11.5px;font-weight:500;line-height:20px;text-align:center}.me{margin-top:auto;display:flex;align-items:center;gap:10px;padding:8px 10px;border:none;background:none;border-radius:12px;text-align:left;transition:background .15s}.me:hover{background:#fff9}.me-text{display:flex;flex-direction:column;min-width:0;line-height:1.3}.me-name{font-size:13.5px;font-weight:500}.me-role{font-size:12px;color:var(--text-3)}.me-switch{margin-left:auto;color:var(--text-3)}.main{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden;margin:8px 8px 8px 0;background:var(--surface);border:1px solid rgb(20 21 26 / 5%);border-radius:var(--r-xl);box-shadow:var(--shadow-sm)}.page{display:flex;flex-direction:column;height:100%;min-height:0;animation:rise .22s var(--ease) both}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.page-head{flex:none;display:flex;align-items:flex-start;gap:16px;padding:24px 28px 16px}.page-head-compact{align-items:center;padding:18px 28px 0}.page-head-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.page-title{font-size:24px;font-weight:600;line-height:1.3;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-sub{font-size:13.5px;color:var(--text-3)}.page-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:10px;padding-top:2px}.crumbs{display:flex;align-items:center;min-width:0;font-size:13px;color:var(--text-3)}.crumb-item{display:inline-flex;align-items:center;min-width:0}.crumb-sep{margin:0 2px;color:#a3a8bb}.crumb{color:var(--text-3);border-radius:6px;padding:1px 4px;margin:0 -4px;transition:color .15s,background .15s}.crumb:hover{color:var(--text);background:var(--surface-3)}.crumb-current{padding:1px 0;color:var(--text);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.segmented{display:inline-flex;gap:2px;padding:3px;border-radius:12px;background:var(--surface-3)}.segmented button,.segmented a{display:inline-flex;align-items:center;gap:6px;border:none;background:none;padding:5px 13px;border-radius:9px;font-size:13px;color:var(--text-2);white-space:nowrap;transition:color .15s,background .15s,box-shadow .15s}.segmented button:hover,.segmented a:hover{color:var(--text)}.segmented .active{background:var(--surface);color:var(--text);font-weight:500;box-shadow:var(--shadow-xs)}.segmented-count{padding:0 6px;border-radius:8px;background:#14151a12;color:var(--text-2);font-size:11.5px;line-height:17px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 14px;border:1px solid var(--line-strong);border-radius:10px;background:var(--surface);color:var(--text);font-size:13px;font-weight:500;white-space:nowrap;transition:background .15s,border-color .15s,transform .1s}.btn:hover{background:var(--surface-2);border-color:#bcc2d3}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:default;transform:none}.btn-primary{background:var(--ink);border-color:var(--ink);color:#fff}.btn-primary:hover{background:#2b2d36;border-color:#2b2d36}.btn-sm{padding:4px 11px;border-radius:8px;font-size:12.5px}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.avatar{flex:none;display:inline-grid;place-items:center;border-radius:50%;color:#fff;font-weight:600;line-height:1;-webkit-user-select:none;user-select:none}.avatar-siliu{background:linear-gradient(140deg,#6e6ee6,#4545bf);border-radius:32%}.avatar-ring{box-shadow:0 0 0 2px var(--ring, var(--surface))}.avatar-more{background:var(--surface-3);color:var(--text-2)}.avatar-stack{display:inline-flex;align-items:center}.avatar-stack .avatar+.avatar{margin-left:-2px}.person{display:inline-flex;align-items:center;gap:7px;min-width:0}.person-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-icon{flex:none}.pill{display:inline-flex;align-items:center;gap:6px;padding:2px 10px 2px 8px;border-radius:999px;background:var(--s-wash);color:var(--s-ink);font-size:12.5px;font-weight:500;white-space:nowrap}.chip{display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:1px 10px 1px 8px;border-radius:999px;background:var(--h-soft);color:var(--h-ink);font-size:12px;font-weight:500;line-height:20px}.chip-dot{flex:none;width:6px;height:6px;border-radius:50%;background:var(--h-dot)}.chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge{display:inline-flex;align-items:center;gap:5px;flex:none;padding:1px 8px;border-radius:999px;background:var(--surface-3);color:var(--text-2);font-size:11.5px;font-weight:500;line-height:18px;white-space:nowrap}.badge-working{background:var(--accent-soft);color:var(--accent-ink)}.badge-warn{background:var(--warn-soft);color:var(--warn)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.pulse{width:6px;height:6px;border-radius:50%;background:var(--accent);animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.8)}}.tag{display:inline-flex;align-items:center;gap:4px;padding:0 8px;border-radius:6px;background:var(--surface-3);color:var(--text-2);font-size:12px;font-weight:500;line-height:20px;white-space:nowrap}.tag-pending,.tag-open,.tag-level-approval{background:var(--warn-soft);color:var(--warn)}.tag-approved,.tag-executed{background:var(--ok-soft);color:var(--ok)}.tag-rejected,.tag-failed{background:var(--danger-soft);color:var(--danger)}.tag-level-write{background:var(--accent-soft);color:var(--accent-ink)}.tag-superseded{background:var(--surface-3);color:var(--text-3)}.dot{display:inline-block;width:7px;height:7px;margin-right:7px;border-radius:50%;background:#9aa0b4}.dot-succeeded{background:#2f9e44}.dot-failed{background:#e03131}.dot-running{background:var(--accent);animation:pulse 1.4s ease-in-out infinite}.dot-awaiting_approval{background:#e8590c}.empty-state{display:flex;flex-direction:column;align-items:center;gap:6px;padding:64px 24px;text-align:center}.empty-icon{display:grid;place-items:center;width:52px;height:52px;margin-bottom:8px;border-radius:18px;background:var(--surface-3);color:var(--text-3)}.empty-title{font-size:15px;font-weight:500}.empty-text{max-width:440px;font-size:13.5px;color:var(--text-3);line-height:1.65}.loading{display:flex;flex-direction:column;gap:12px;width:100%;padding:28px}.skeleton{border-radius:12px;background:linear-gradient(90deg,var(--surface-3) 25%,#f6f7fb 50%,var(--surface-3) 75%);background-size:200% 100%;animation:shimmer 1.4s linear infinite}@keyframes shimmer{to{background-position:-200% 0}}.progress{display:flex;flex-direction:column;gap:6px}.progress-text{display:flex;justify-content:space-between;font-size:12.5px;color:var(--text-2)}.progress-track{height:6px;border-radius:999px;background:#14151a14;overflow:hidden}.progress-mini{height:4px}.progress-fill{height:100%;border-radius:inherit;background:var(--h-dot, var(--accent));transition:width .4s var(--ease)}.login{display:grid;place-items:center;min-height:100vh;padding:24px;background:radial-gradient(900px 500px at 15% 10%,#e1e1fb 0%,transparent 60%),radial-gradient(800px 500px at 90% 95%,#d9efe9 0%,transparent 60%),var(--canvas)}.login-card{width:380px;max-width:100%;padding:36px 28px 28px;border:1px solid rgb(20 21 26 / 5%);border-radius:24px;background:#ffffffeb;box-shadow:var(--shadow-md);text-align:center;animation:rise .3s var(--ease) both}.login-card .brand-mark{margin:0 auto 14px}.login-title{font-size:22px;font-weight:600;letter-spacing:.02em}.login-sub{margin:4px 0 22px;font-size:13.5px;color:var(--text-3)}.login-list{display:flex;flex-direction:column;gap:8px}.login-member{display:flex;align-items:center;gap:12px;padding:11px 14px;border:1px solid var(--line);border-radius:14px;background:var(--surface);text-align:left;transition:border-color .15s,background .15s,transform .15s var(--ease),box-shadow .15s}.login-member:hover{border-color:#c4c4f2;background:var(--accent-soft);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.login-member-name{flex:1;min-width:0;font-size:14.5px;font-weight:500}.login-go{color:var(--text-3);opacity:0;transition:opacity .15s,transform .15s}.login-member:hover .login-go,.login-member:focus-visible .login-go{opacity:1;transform:translate(2px)}@media(max-width:1000px){.sidebar{width:68px;padding:16px 10px 12px;align-items:stretch}.nav-label,.brand-name,.nav-section,.me-text,.me-switch{display:none}.nav-item{justify-content:center;padding:10px 0;position:relative}.nav-badge{position:absolute;top:2px;right:2px;min-width:16px;padding:0 4px;font-size:10.5px;line-height:16px}.brand{justify-content:center;padding:4px 0 14px}.me{justify-content:center;padding:6px 0}.page-head{padding:20px 20px 14px}}@media(max-width:640px){.shell{flex-direction:column}.sidebar{width:auto;flex-direction:row;align-items:center;padding:8px 10px;overflow-x:auto}.sidebar .nav-group{flex-direction:row}.brand{padding:0 6px 0 2px}.nav-item{padding:8px 10px}.me{margin-top:0;margin-left:auto}.main{margin:0 6px 6px;border-radius:16px}.page-head{flex-wrap:wrap;padding:16px 16px 12px}.page-title{font-size:21px}}.login-feishu{width:100%;justify-content:center;padding:10px 16px;margin-top:6px}.login-form{display:flex;flex-direction:column;gap:12px}.login-field{display:flex;flex-direction:column;gap:6px;text-align:left}.login-field span{font-size:12.5px;color:var(--text-3)}.login-field input{padding:10px 13px;border:1px solid var(--line);border-radius:12px;background:var(--surface);font:inherit;font-size:14.5px;transition:border-color .15s,box-shadow .15s}.login-field input:focus{outline:none;border-color:#b9b9ef;box-shadow:0 0 0 3px var(--accent-soft)}.login-error{margin:-2px 0 0;font-size:13px;color:var(--danger, #c0392b);text-align:left}.login-hint{display:flex;align-items:center;justify-content:center;gap:6px;margin:0 0 14px;font-size:13px;color:var(--text-3)}.login-alt{display:block;width:100%;margin:12px 0 0;padding:0;border:0;background:none;font:inherit;font-size:12.5px;color:var(--text-3);text-align:center;cursor:pointer}.login-alt:hover{color:var(--text-2);text-decoration:underline}.login-form .login-feishu{margin-top:4px}.stats{flex:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:0 28px 16px}.stat{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}.stat-icon{flex:none;display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:var(--s-wash)}.stat-value{font-size:22px;font-weight:600;line-height:1.15}.stat-label{font-size:12.5px;color:var(--text-3)}.toolbar{flex:none;display:flex;align-items:center;gap:12px;padding:0 28px 14px}.toolbar-hint{margin-left:auto;font-size:12.5px;color:var(--text-3)}.board{flex:1;min-height:0;display:flex;gap:12px;padding:0 20px 16px;overflow-x:auto}.lane{flex:1 0 216px;max-width:340px;display:flex;flex-direction:column;min-height:0;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface-2)}.lane-head{display:flex;align-items:center;gap:8px;padding:13px 14px 10px}.lane-title{font-size:13.5px;font-weight:600}.lane-count{margin-left:auto;padding:0 8px;border-radius:10px;background:var(--s-wash);color:var(--s-ink);font-size:12px;font-weight:500;line-height:20px}.lane-body{display:flex;flex-direction:column;gap:8px;min-height:0;padding:0 8px 10px;overflow-y:auto}.lane-empty{padding:22px 0;font-size:12.5px;text-align:center;color:var(--text-3)}.card{display:flex;flex-direction:column;gap:10px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:var(--shadow-xs);transition:transform .15s var(--ease),box-shadow .15s,border-color .15s}.card:hover{transform:translateY(-1px);border-color:var(--line-strong);box-shadow:var(--shadow-sm)}.card-live{border-color:#c6c6f3;box-shadow:0 0 0 3px #5b5bd614,var(--shadow-xs)}.card-tags{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0}.card-title{font-size:14px;font-weight:500;line-height:1.55;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.card-bottom{display:flex;align-items:center;gap:10px;min-width:0;font-size:12.5px;color:var(--text-2)}.card-time{margin-left:auto;flex:none;color:var(--text-3)}.meta-item{display:inline-flex;align-items:center;gap:3px;flex:none;color:var(--text-3)}.skeleton-card{height:84px}@media(max-width:1000px){.stats{grid-template-columns:repeat(2,minmax(0,1fr));padding:0 20px 14px}.toolbar{padding:0 20px 12px}.toolbar-hint{display:none}}.scroll{flex:1;min-height:0;overflow-y:auto;padding:4px 28px 40px}.callout{display:flex;align-items:center;gap:14px;margin-bottom:20px;padding:14px 16px;border:1px solid #dcdcf8;border-radius:var(--r-md);background:linear-gradient(100deg,#f4f4fe,#f8f8ff)}.callout-icon{flex:none;display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:var(--accent-soft);color:var(--accent-ink)}.callout-text{flex:1;min-width:0}.callout-title{font-size:14px;font-weight:600}.callout-title a:hover{color:var(--accent-ink);text-decoration:underline;text-underline-offset:3px}.callout-sub{margin-top:1px;font-size:13px;color:var(--text-2)}.note{margin:-8px 0 20px;padding:10px 14px;border-radius:10px;background:var(--surface-2);font-size:13px;line-height:1.6;color:var(--text-2)}.line{margin-bottom:30px}.line-title{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:14px;font-weight:600}.line-dot{width:9px;height:9px;border-radius:50%;background:var(--h-dot)}.line-count{font-size:12.5px;font-weight:400;color:var(--text-3)}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:14px}.project-card{--ring: var(--h-wash);display:flex;flex-direction:column;gap:10px;padding:16px;border:1px solid var(--h-soft);border-radius:var(--r-lg);background:var(--h-wash);transition:transform .18s var(--ease),box-shadow .18s,border-color .18s}.project-card:hover{transform:translateY(-2px);border-color:var(--h-dot);box-shadow:var(--shadow-md)}.project-card-top{display:flex;align-items:center;justify-content:space-between}.project-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:12px;background:var(--h-soft);color:var(--h-ink)}.project-time{font-size:12px;color:var(--text-3)}.project-name{font-size:16px;font-weight:600;line-height:1.4}.project-desc{font-size:13px;line-height:1.6;color:var(--text-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.project-card .progress{margin-top:auto;padding-top:4px}.project-foot{display:flex;align-items:center;gap:10px;min-height:24px;font-size:12.5px;color:var(--text-2)}.project-foot-meta{margin-left:auto;display:inline-flex;align-items:center;gap:8px}.project-suggest{padding:0 8px;border-radius:10px;background:#f1eaff;color:#6b3fc4;font-size:12px;line-height:20px}.project-strip{flex:none;display:flex;align-items:center;flex-wrap:wrap;gap:14px 18px;padding:0 28px 14px;font-size:13px;color:var(--text-2)}.project-strip .progress{flex-direction:row;align-items:center;gap:10px;width:260px}.project-strip .progress-track{flex:1}.project-strip .progress-text{justify-content:flex-start;gap:8px;white-space:nowrap}@media(max-width:1000px){.scroll{padding:4px 20px 32px}.project-strip{padding:0 20px 12px}}.map-canvas{flex:1;min-height:360px;position:relative;margin:4px 28px 24px;border:1px solid var(--line);border-radius:var(--r-lg);background:#fbfbfd;overflow:hidden}.map-flow{width:100%;height:100%}.map-canvas .react-flow{font-family:inherit}.map-canvas .react-flow__attribution{background:transparent;font-size:10px;color:#aab0bf}.map-canvas .react-flow__attribution a{color:#aab0bf}.map-canvas .react-flow__edge-path{stroke-linecap:round}.map-canvas .react-flow__controls{overflow:hidden;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-sm)}.map-canvas .react-flow__controls-button{width:32px;height:32px;border:0;border-bottom:1px solid var(--line);background:#fff;color:var(--text-2)}.map-canvas .react-flow__controls-button:last-child{border-bottom:0}.map-canvas .react-flow__controls-button:hover{background:var(--surface-2)}.map-canvas .react-flow__controls-button svg{fill:currentColor;max-width:12px;max-height:12px}.mx-handle{width:6px;height:6px;min-width:0;min-height:0;border:0;background:transparent;opacity:0}.mx-node{position:relative;box-sizing:border-box;display:flex;align-items:center;gap:10px;padding:0 14px;border:2px solid var(--h-dot);border-radius:14px;background:#fff;box-shadow:var(--shadow-xs);color:var(--text);text-decoration:none;transition:transform .18s var(--ease),box-shadow .18s var(--ease)}.mx-node:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.mx-node:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.mx-company{--h-dot: var(--accent)}.mx-project{padding-left:12px}.mx-tag{position:absolute;top:-11px;right:12px;padding:0 9px;border-radius:999px;background:var(--h-dot);color:#fff;font-size:11px;font-weight:600;line-height:18px;white-space:nowrap}.mx-tag-accent{background:var(--accent)}.mx-tag-soft{background:var(--h-soft);color:var(--h-ink)}.mx-mark{flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--h-soft);color:var(--h-ink);font-size:14px;font-weight:600}.mx-mark-accent{background:var(--accent);color:#fff}.mx-mark-soft{width:30px;height:30px;background:var(--h-wash);color:var(--h-ink)}.mx-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.mx-name{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mx-sub{padding-right:26px;font-size:12px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mx-badge{position:absolute;right:12px;bottom:-12px;box-sizing:border-box;min-width:24px;height:24px;padding:0 7px;border:2px solid #fbfbfd;border-radius:999px;background:#9aa1b1;color:#fff;font-size:12px;font-weight:600;line-height:20px;text-align:center}.mx-badge-strong{background:#2b2d36}.mx-badge-done{background:var(--ok)}@media(max-width:1000px){.map-canvas{margin:4px 20px 20px}}.detail{flex:1;min-height:0;display:flex;gap:0}.detail-main{flex:1;min-width:0;overflow-y:auto;padding:20px 40px 64px 28px}.detail-main>*{max-width:740px}.detail-meta{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:14px}.detail-title{margin-bottom:12px;font-size:26px;font-weight:600;line-height:1.35;letter-spacing:-.01em;overflow-wrap:anywhere}.detail-desc{color:var(--text-2);line-height:1.8;white-space:pre-wrap}.detail-section{margin-top:36px}.detail-section h2{display:flex;align-items:center;gap:8px;margin-bottom:14px;font-size:15px;font-weight:600}.detail-side{flex:none;width:320px;overflow-y:auto;margin:4px 20px 20px 0;padding:18px 20px 22px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface-2);align-self:flex-start;max-height:calc(100% - 24px)}.detail-side h3{margin:4px 0 10px;font-size:13px;font-weight:600;color:var(--text-2)}.detail-side h3:not(:first-child){margin-top:24px;padding-top:18px;border-top:1px solid var(--line)}.prop{display:flex;align-items:center;min-height:36px;font-size:13.5px}.prop-label{width:68px;flex:none;color:var(--text-3)}.prop-value{display:inline-flex;align-items:center;flex-wrap:wrap;gap:7px;min-width:0}.prop-link{color:var(--accent-ink);font-weight:500}.prop-link:hover{text-decoration:underline;text-underline-offset:3px}.side-note{margin-top:12px;padding:11px 13px;border-radius:12px;background:var(--surface);border:1px solid var(--line);font-size:13px;color:var(--text-2);line-height:1.65}.detail-side .stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:0}.detail-side .stats>div{display:flex;flex-direction:column;gap:2px;padding:9px 10px;border-radius:12px;background:var(--surface);border:1px solid var(--line)}.detail-side .stats b{font-size:15px;font-weight:600}.detail-side .stats span{font-size:12px;color:var(--text-3)}.log{margin-top:12px;font-size:13px}.log summary{cursor:pointer;color:var(--text-2);padding:4px 0}.log pre{max-height:320px;overflow:auto;margin-top:8px;padding:12px;border-radius:12px;background:var(--ink);color:#e6e8f0;white-space:pre-wrap;word-break:break-all;line-height:1.6}.outputs-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}.outputs-list li{display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface);font-size:13.5px}.outputs-list a{color:var(--accent-ink);min-width:0;overflow-wrap:anywhere}.outputs-list a:hover{text-decoration:underline;text-underline-offset:3px}.output-icon{display:grid;place-items:center;width:30px;height:30px;flex:none;border-radius:10px;background:var(--surface-3);color:var(--text-2)}.output-kind{color:var(--text-3);font-size:12.5px}.timeline{margin:0;padding:0;list-style:none;position:relative}.timeline:before{content:"";position:absolute;left:11.5px;top:14px;bottom:14px;width:1.5px;background:var(--line)}.timeline li{position:relative;display:flex;gap:14px;padding:8px 0;font-size:13.5px;line-height:1.65}.timeline .avatar{position:relative;margin-top:1px;box-shadow:0 0 0 4px var(--surface)}.timeline-body{flex:1;min-width:0;color:var(--text-2)}.timeline-body b{color:var(--text);font-weight:500}.comment{margin-top:6px;padding:11px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);color:var(--text);white-space:pre-wrap}.inline-status{display:inline-flex;align-items:center;gap:4px;color:var(--text);font-weight:500}.op-line{display:inline-flex;align-items:flex-start;gap:7px}.op-line .dot{flex:none;margin:8px 0 0}.proposal{margin-bottom:12px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}.proposal p{margin-top:6px;line-height:1.7}.proposal-old{opacity:.6}.proposal-head{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:8px}.proposal-gate,.proposal-warn{display:flex;align-items:flex-start;gap:7px;padding:8px 12px;border-radius:10px;font-size:13px}.proposal-gate{background:var(--danger-soft);color:var(--danger)}.proposal-warn{background:var(--warn-soft);color:var(--warn)}.proposal-gate svg,.proposal-warn svg{margin-top:2px}.params{margin-top:10px;padding:10px 12px;border-radius:10px;background:var(--surface-2);font-size:13px;display:grid;gap:4px}.params div,.proposal .params{display:grid}.proposal .params{grid-template-columns:56px 1fr}.params div{grid-template-columns:56px 1fr;gap:10px}.params dt{color:var(--text-3)}.params dd{color:var(--text-2);word-break:break-all}@media(max-width:1000px){.detail{flex-direction:column;overflow-y:auto}.detail-main{overflow:visible;padding:16px 20px 24px}.detail-side{width:auto;align-self:stretch;margin:0 20px 20px;max-height:none;overflow:visible}}.link{color:var(--accent-ink)}.link:hover{text-decoration:underline;text-underline-offset:3px}.table-card{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);overflow:auto}.table{width:100%;border-collapse:separate;border-spacing:0;font-size:13.5px}.table th{position:sticky;top:0;z-index:1;padding:11px 14px;background:var(--surface-2);border-bottom:1px solid var(--line);text-align:left;font-weight:500;font-size:12.5px;color:var(--text-3);white-space:nowrap}.table td{padding:11px 14px;border-bottom:1px solid var(--line);vertical-align:top}.table tr:last-child td{border-bottom:none}.table tbody tr{transition:background .12s}.table tbody tr:hover td{background:var(--surface-2)}.cell-sub{max-width:420px;margin-top:2px;font-size:12.5px;color:var(--text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cell-task{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-table td{padding:9px 14px;vertical-align:middle}.file-name{display:inline-flex;align-items:center;gap:10px;color:var(--text)}.file-name:hover{color:var(--accent-ink)}.file-icon{color:#8a91a8}.file-icon-dir{color:#6f86c4;fill:#dfe6f8}.cell-commit{max-width:0;width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.commit-subject{color:var(--text-2)}.commit-subject:hover{color:var(--accent-ink)}.file-body{flex:1;overflow-y:auto;padding:8px 28px 64px}.file-body>.prose{max-width:860px}.version-banner{display:flex;align-items:center;gap:8px;margin-bottom:16px;padding:10px 14px;border-radius:12px;background:#fff7e0;color:#7a5200;font-size:13.5px}.version-banner a{margin-left:auto;color:var(--accent-ink);font-weight:500}.prose{line-height:1.8;font-size:15px}.prose h1{font-size:26px;margin:0 0 16px}.prose h2{font-size:19px;margin:30px 0 10px;padding-bottom:7px;border-bottom:1px solid var(--line)}.prose h3{font-size:16px;margin:22px 0 8px}.prose p,.prose ul,.prose ol{margin:10px 0}.prose a{color:var(--accent-ink);text-decoration:underline;text-underline-offset:3px}.prose code{padding:1px 6px;border-radius:6px;background:var(--surface-3)}.prose pre{padding:14px 16px;border-radius:12px;background:var(--surface-2);border:1px solid var(--line);overflow-x:auto}.prose pre code{padding:0;background:none}.prose table{border-collapse:collapse;margin:14px 0;font-size:14px}.prose th,.prose td{border:1px solid var(--line);padding:7px 12px;text-align:left}.prose th{background:var(--surface-2);font-weight:500}.prose blockquote{margin:12px 0;padding:2px 16px;border-left:3px solid var(--line-strong);color:var(--text-2)}.prose img{max-width:100%;border-radius:8px}.code{margin:0;padding:12px 0;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-2);overflow-x:auto;line-height:1.65}.code-line{display:flex;white-space:pre}.code-no{flex:none;width:52px;padding-right:16px;text-align:right;color:#6b7184;-webkit-user-select:none;user-select:none}.image-preview{padding:16px;border:1px solid var(--line);border-radius:var(--r-md);background:repeating-conic-gradient(#f3f4f8 0% 25%,#fff 0% 50%) 0 0 / 16px 16px;text-align:center}.image-preview img{max-width:100%;max-height:70vh}.commit-list{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);overflow:hidden}.commit-row{display:flex;align-items:center;gap:14px;padding:13px 16px;border-bottom:1px solid var(--line);transition:background .12s}.commit-row:last-child{border-bottom:none}.commit-row:hover{background:var(--surface-2)}.commit-main{flex:1;min-width:0}.commit-title{font-weight:500}.commit-title:hover{color:var(--accent-ink)}.commit-meta{margin:-4px 0 16px}.row-meta{margin-top:3px;font-size:13px;color:var(--text-3)}.row-meta a{color:var(--accent-ink)}.row-meta .person{gap:6px}.hash{font-family:var(--mono);font-size:12.5px;color:var(--accent-ink)}.diff-summary{margin-top:24px;font-size:13.5px;color:var(--text-2)}.add{color:var(--ok)}.del{color:var(--danger)}.changed-files{margin:10px 0 20px;padding:0;list-style:none;border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;background:var(--surface)}.changed-files li{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid var(--line);font-size:13.5px}.changed-files li:last-child{border-bottom:none}.changed-files li a{color:var(--text)}.changed-files li a:hover{color:var(--accent-ink)}.changed-files .muted{margin-left:auto;font-size:12.5px}.file-status{flex:none;padding:0 8px;border-radius:6px;font-size:12px;line-height:20px;font-weight:500}.file-status-added{color:var(--ok);background:var(--ok-soft)}.file-status-modified{color:#8a5a00;background:#fff3d6}.file-status-deleted{color:var(--danger);background:var(--danger-soft)}.file-status-renamed{color:var(--accent-ink);background:var(--accent-soft)}.diff-file{margin-bottom:16px;border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}.diff-head{padding:9px 14px;background:var(--surface-2);border-bottom:1px solid var(--line);font-size:13px;font-weight:500}.diff{margin:0;overflow-x:auto;line-height:1.6}.diff-line{padding:0 14px;white-space:pre}.diff-add{background:#e7f6ea;color:#17602b}.diff-del{background:#fdebeb;color:#9a2020}.diff-hunk{background:#f1f1fb;color:var(--text-3)}.inbox{display:flex;flex-direction:column;gap:26px}.inbox-section{display:flex;flex-direction:column;gap:10px;max-width:920px}.inbox-title{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:14.5px;font-weight:600}.inbox-title svg{color:var(--accent)}.inbox-hint{flex-basis:100%;margin-left:24px;margin-top:-4px;font-size:12.5px;font-weight:400;color:var(--text-3)}.inbox-section-quiet .inbox-title{color:var(--text-2);font-weight:500}.inbox-section-quiet .inbox-title svg{color:var(--text-3)}.inbox-results{display:flex;flex-direction:column;gap:6px;max-width:920px}.more-link{display:inline-flex;align-items:center;gap:2px;align-self:flex-start;margin-left:4px;font-size:13px;color:var(--accent-ink)}.more-link:hover{text-decoration:underline;text-underline-offset:3px}.decision{position:relative;display:flex;gap:14px;padding:16px 18px 16px 20px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-xs);overflow:hidden}.decision:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--d-bar)}.decision-warn{--d-bar: #f08c4a;--d-ink: var(--warn);--d-soft: var(--warn-soft)}.decision-danger{--d-bar: #e5484d;--d-ink: var(--danger);--d-soft: var(--danger-soft)}.decision-accent{--d-bar: #7c7cf0;--d-ink: var(--accent-ink);--d-soft: var(--accent-soft)}.decision-icon{flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:11px;background:var(--d-soft);color:var(--d-ink)}.decision-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.decision-title{font-size:15px;font-weight:600;line-height:1.5;overflow-wrap:anywhere}.decision-meta{display:flex;flex-wrap:wrap;align-items:center;gap:0 4px;font-size:13px;color:var(--text-3)}.decision-meta .person{gap:6px;color:var(--text-3)}.decision-text{margin-top:4px;color:var(--text-2);line-height:1.7;overflow-wrap:anywhere}.decision-facts{font-size:12.5px;color:var(--text-3)}.decision-list{margin:4px 0 0;padding:8px 12px 8px 28px;border-radius:10px;background:var(--surface-2);font-size:13.5px;color:var(--text-2);line-height:1.8}.decision-params,.decision .proposal-gate,.decision .proposal-warn{margin-top:6px}.decision-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:10px}.decision-buttons{display:flex;gap:8px}.decision-buttons .btn{min-width:72px;justify-content:center}.decision-wait{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--text-3)}.decision-result{display:inline-flex;align-items:flex-start;gap:7px;padding:7px 12px;border-radius:10px;background:var(--ok-soft);color:var(--ok);font-size:13.5px;line-height:1.5}.decision-result svg{flex:none;margin-top:2px}.decision-result-bad{background:var(--danger-soft);color:var(--danger)}.btn-danger{border-color:#f1c4c4;color:var(--danger)}.btn-danger:hover{background:var(--danger-soft);border-color:#e8a9a9}.rows{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);overflow:hidden}.row{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line);transition:background .12s}.row:last-child{border-bottom:none}.row:hover{background:var(--surface-2)}.row>.status-icon{align-self:flex-start;margin-top:3px}.row-main{flex:1;min-width:0}.row-title{font-weight:500;line-height:1.5;overflow-wrap:anywhere}.row-title:hover{color:var(--accent-ink)}.row .row-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px}.row-actions{flex:none;display:flex;gap:8px}.rows-quiet{background:transparent}.rows-quiet .row{padding:9px 16px}.rows-quiet .row-title{font-weight:400;color:var(--text-2)}.next-steps{display:flex;flex-direction:column;gap:10px;margin-top:18px}.next-step{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:var(--r-md);background:var(--s-wash);color:var(--s-ink)}.next-step>svg{flex:none}.next-text{flex:1;min-width:0;display:flex;flex-direction:column}.next-text b{font-weight:600}.next-text span{font-size:13px;color:var(--text-2)}.check{display:inline-flex;align-items:center;gap:8px;margin-bottom:12px;font-size:13px;color:var(--text-2);cursor:pointer}.check input{width:15px;height:15px;accent-color:var(--accent)}@media(max-width:640px){.row{flex-wrap:wrap}.row-actions{width:100%;justify-content:flex-end}.decision{padding:14px}.decision-icon{display:none}.next-step{flex-wrap:wrap}}.connect{display:flex;align-items:center;gap:12px;max-width:920px;padding:12px 14px 12px 16px;border:1px solid #d9dbf7;border-radius:var(--r-lg);background:var(--accent-soft);color:var(--accent-ink)}.connect svg{flex:none}.connect-text{flex:1;min-width:0;font-size:13.5px;line-height:1.6;color:var(--text)}.connect .btn{flex:none}.connect-warn{border-color:#f3d2b5;background:var(--warn-soft);color:var(--warn)}.connect-ok{border-color:#c6e7d2;background:var(--ok-soft);color:var(--ok)}.connect-footer{max-width:920px;margin:0;font-size:12.5px;color:var(--text-3)}.link-button{margin-left:6px;padding:0;border:0;background:none;color:var(--accent-ink);font:inherit;cursor:pointer}.link-button:hover{text-decoration:underline;text-underline-offset:3px}.link-button:disabled{opacity:.55;cursor:default}@media(max-width:640px){.connect{flex-wrap:wrap}}
