:root{color:#17211b;background:#f4f7f5;font-family:Inter,SF Pro Text,PingFang SC,Microsoft YaHei,Noto Sans CJK SC,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;--bg: #f4f7f5;--surface: #ffffff;--surface-subtle: #f8faf9;--surface-hover: #f0f5f2;--text: #17211b;--muted: #68746d;--muted-2: #8a958e;--border: #dfe6e2;--border-strong: #cdd8d2;--brand: #147a52;--brand-dark: #0e6341;--brand-soft: #e8f5ee;--blue: #276fd0;--blue-soft: #eaf2ff;--red: #c9483d;--red-soft: #fff0ee;--amber: #a86712;--amber-soft: #fff5df;--shadow: 0 12px 34px rgba(23, 33, 27, .12);--sidebar-width: 248px;--topbar-height: 82px}*{box-sizing:border-box}html,body,#root{width:100%;min-width:320px;min-height:100%;margin:0}body{min-height:100vh;overflow:hidden;background:var(--bg)}button,input,select,textarea{color:inherit;font:inherit;letter-spacing:0}button,select,label{-webkit-tap-highlight-color:transparent}button{border:0}button:not(:disabled),select:not(:disabled),label[for],.import-button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid rgba(20,122,82,.35);outline-offset:2px}a{color:inherit;text-decoration:none}.app-shell{display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);min-height:100vh;transition:grid-template-columns .18s ease}.app-shell.sidebar-collapsed{grid-template-columns:68px minmax(0,1fr)}.sidebar-wrap{position:relative;z-index:20;min-width:0}.sidebar{display:flex;flex-direction:column;width:100%;height:100vh;overflow:hidden;color:#dce9e1;background:#182c23;border-right:1px solid rgba(255,255,255,.06)}.brand{position:relative;display:flex;align-items:center;min-height:var(--topbar-height);padding:0 44px 0 18px;border-bottom:1px solid rgba(255,255,255,.08)}.brand-mark{display:grid;flex:0 0 36px;width:36px;height:36px;place-items:center;color:#fff;background:var(--brand);border-radius:7px}.brand-copy{display:flex;min-width:0;margin-left:11px;flex-direction:column;gap:3px}.brand-copy strong{overflow:hidden;color:#fff;font-size:14px;font-weight:650;white-space:nowrap}.brand-copy span{overflow:hidden;color:#8fa49a;font-size:10px;text-transform:uppercase;white-space:nowrap}.icon-button{display:inline-grid;width:32px;height:32px;padding:0;place-items:center;color:var(--muted);background:transparent;border-radius:6px}.icon-button:hover:not(:disabled){color:var(--text);background:var(--surface-hover)}.icon-button:disabled{cursor:not-allowed;opacity:.4}.sidebar .icon-button{color:#8fa49a}.sidebar .icon-button:hover{color:#fff;background:#ffffff14}.sidebar-collapse{position:absolute;right:8px;top:25px}.main-nav{display:grid;gap:4px;padding:16px 10px}.nav-group{display:grid;gap:4px}.nav-group+.nav-group{margin-top:10px;padding-top:10px;border-top:1px solid rgba(255,255,255,.07)}.nav-group-label{padding:0 12px 4px;color:#71867b;font-size:10px;letter-spacing:.04em}.nav-item,.project-link{display:grid;align-items:center;width:100%;min-height:40px;color:#b6c8be;background:transparent;border-radius:6px;text-align:left}.nav-item{grid-template-columns:22px minmax(0,1fr);gap:10px;padding:0 12px;font-size:13px}.nav-item:hover,.project-link:hover{color:#fff;background:#ffffff0f}.nav-item.is-active{color:#fff;background:#2daa732e;box-shadow:inset 3px 0 #31b476}.sidebar-section{min-height:0;padding:10px;border-top:1px solid rgba(255,255,255,.07)}.project-section{flex:1;overflow:auto;scrollbar-width:thin}.sidebar-section-title{display:flex;justify-content:space-between;padding:3px 10px 9px;color:#799087;font-size:11px}.project-link{grid-template-columns:18px minmax(0,1fr) auto;gap:8px;min-height:34px;padding:0 10px;font-size:12px}.project-link.is-active{color:#fff;background:#ffffff12}.project-link span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-link b{color:#81978c;font-size:11px;font-weight:500}.project-dot{display:block;width:8px;height:8px;margin-left:4px;background:#59a8dc;border-radius:50%}.project-dot-1{background:#e19b3b}.project-dot-2{background:#38a777}.project-dot-3{background:#c76b62}.sidebar-summary{display:grid;grid-template-columns:repeat(3,1fr);margin:10px;padding:12px 4px;background:#ffffff0e;border:1px solid rgba(255,255,255,.07);border-radius:7px}.sidebar-summary>div{display:grid;justify-items:center;gap:5px}.sidebar-summary>div+div{border-left:1px solid rgba(255,255,255,.08)}.sidebar-summary>div>span{display:grid;width:26px;height:26px;place-items:center;border-radius:6px}.sidebar-summary p{display:flex;margin:0;flex-direction:column;align-items:center;gap:1px}.sidebar-summary b{color:#fff;font-size:14px}.sidebar-summary small{color:#82978c;font-size:9px}.sidebar.is-collapsed .brand{padding:0 16px}.sidebar.is-collapsed .brand-copy,.sidebar.is-collapsed .nav-item span,.sidebar.is-collapsed .nav-group-label,.sidebar.is-collapsed .sidebar-section,.sidebar.is-collapsed .sidebar-summary{display:none}.sidebar.is-collapsed .sidebar-collapse{top:54px;right:18px;z-index:2;width:30px;height:22px;color:#a9bbb1;background:#182c23}.sidebar.is-collapsed .main-nav{padding-top:30px}.sidebar.is-collapsed .nav-item{grid-template-columns:1fr;justify-items:center;padding:0}.workspace{display:grid;min-width:0;height:100vh;grid-template-rows:var(--topbar-height) minmax(0,1fr);overflow:hidden}.topbar{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:24px;padding:0 24px;background:var(--surface);border-bottom:1px solid var(--border)}.topbar-heading{display:flex;min-width:180px;align-items:center;gap:10px}.topbar-heading h1{margin:0;color:var(--text);font-size:19px;font-weight:680;line-height:1.25}.topbar-heading p{margin:4px 0 0;color:var(--muted);font-size:11px;white-space:nowrap}.mobile-menu{display:none}.topbar-actions{display:flex;min-width:0;align-items:center;justify-content:flex-end;gap:8px}.sync-state{display:inline-flex;min-width:0;height:34px;padding:0 9px;align-items:center;gap:6px;color:var(--brand);background:var(--brand-soft);border:1px solid #cde9da;border-radius:6px;font-size:11px;white-space:nowrap}.sync-offline,.sync-error{color:var(--amber);background:var(--amber-soft);border-color:#f2dfb1}.sync-loading,.sync-syncing{color:var(--blue);background:var(--blue-soft);border-color:#d4e4fa}.is-spinning{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.search-box{display:flex;width:min(250px,22vw);min-width:150px;height:36px;align-items:center;gap:7px;padding:0 8px 0 10px;color:var(--muted);background:var(--surface-subtle);border:1px solid var(--border);border-radius:6px}.search-box:focus-within{background:#fff;border-color:#9ecab5;box-shadow:0 0 0 3px #147a5214}.search-box input{width:100%;min-width:0;height:32px;padding:0;background:transparent;border:0;outline:0;font-size:12px}.search-box button{display:grid;flex:0 0 24px;width:24px;height:24px;padding:0;place-items:center;color:var(--muted);background:transparent;border-radius:4px}.filter-control{display:flex;height:36px;align-items:center;gap:4px;padding-left:8px;color:var(--muted);background:var(--surface);border:1px solid var(--border);border-radius:6px}.filter-control select{max-width:132px;height:34px;padding:0 24px 0 2px;background:transparent;border:0;outline:0;font-size:12px}.type-filter{padding-left:2px}.primary-button,.secondary-button,.danger-button,.text-button,.toggle-button,.add-field-button{display:inline-flex;min-height:36px;padding:0 12px;align-items:center;justify-content:center;gap:7px;border-radius:6px;font-size:12px;font-weight:580;white-space:nowrap}.primary-button{color:#fff;background:var(--brand);box-shadow:0 1px 2px #0e63412e}.primary-button:hover{background:var(--brand-dark)}.secondary-button{color:#34433a;background:#fff;border:1px solid var(--border-strong)}.secondary-button:hover{background:var(--surface-subtle);border-color:#b9c8c0}.danger-button{color:var(--red);background:var(--red-soft);border:1px solid #f1ccc7}.danger-button:hover{background:#ffe5e1}.workspace-content{min-width:0;min-height:0;padding:18px;overflow:auto}.view-surface{min-width:0;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 1px 2px #17211b06}.empty-state{display:grid;min-height:180px;place-items:center;color:var(--muted);background:var(--surface);border:1px dashed var(--border-strong);border-radius:8px;font-size:13px}.status-badge{display:inline-flex;min-width:max-content;height:25px;padding:0 8px;align-items:center;gap:5px;color:#6e7a73;background:#f0f3f1;border:1px solid #e2e7e4;border-radius:5px;font-size:11px;font-weight:560;line-height:1}.status-badge.is-compact{height:21px;padding:0 6px;font-size:10px}.status-progress{color:var(--blue)!important;background:var(--blue-soft)!important;border-color:#d1e2fb!important}.status-overdue{color:var(--red)!important;background:var(--red-soft)!important;border-color:#f2d1cd!important}.status-completed{color:var(--brand)!important;background:var(--brand-soft)!important;border-color:#cfe9db!important}.status-cancelled{color:#867a72!important;background:#f3f0ee!important;border-color:#e4ded9!important}.tree-view{overflow:hidden}.tree-toolbar,.board-toolbar,.swimlane-toolbar,.list-toolbar{display:flex;min-height:52px;align-items:center;justify-content:space-between;gap:16px;padding:0 16px;border-bottom:1px solid var(--border)}.tree-toolbar>div:first-child,.swimlane-toolbar>div:first-child{display:flex;align-items:baseline;gap:10px}.tree-toolbar strong,.swimlane-toolbar strong{font-size:13px}.tree-toolbar>div:first-child span,.swimlane-toolbar>div:first-child span{color:var(--muted);font-size:11px}.tree-legend{display:flex;gap:16px;color:var(--muted);font-size:11px}.tree-legend span{display:inline-flex;align-items:center;gap:6px}.legend-dot{display:block;width:7px;height:7px;background:var(--brand);border-radius:50%}.legend-dot.is-type{background:var(--blue)}.legend-dot.is-task{background:#9aa59f}.tree-table{min-width:760px}.tree-header,.tree-row{display:grid;grid-template-columns:minmax(300px,1.8fr) minmax(110px,.65fr) minmax(140px,.8fr) minmax(150px,.75fr);align-items:center}.tree-header{min-height:36px;padding:0 16px;color:var(--muted);background:#fafcfb;border-bottom:1px solid var(--border);font-size:10px;font-weight:600}.tree-row{width:100%;min-height:45px;padding:0 16px;background:#fff;border-bottom:1px solid #edf1ef;text-align:left}.tree-row:hover{background:#f8fbf9}.tree-project:last-child .tree-row:last-child{border-bottom:0}.tree-project-row{color:#20342a;background:#fbfdfc}.tree-type-row{padding-left:42px;color:#30463b;background:#fff}.tree-task-row{min-height:42px;padding-left:70px}.tree-name,.tree-meta{display:flex;min-width:0;align-items:center;gap:7px}.tree-name>svg:nth-of-type(2),.tree-type-row .tree-name>svg:last-of-type{color:var(--brand)}.tree-type-row .tree-name>svg:last-of-type{color:var(--blue)}.tree-name b{overflow:hidden;font-size:12px;font-style:normal;font-weight:620;text-overflow:ellipsis;white-space:nowrap}.tree-name em{display:inline-flex;min-width:22px;height:20px;padding:0 6px;align-items:center;justify-content:center;color:var(--muted);background:#edf2ef;border-radius:4px;font-size:10px;font-style:normal}.task-title{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.tree-line{width:13px;height:13px;border-bottom:1px solid #cdd8d2;border-left:1px solid #cdd8d2}.muted-value,.tree-meta{overflow:hidden;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.progress-cell{display:grid;grid-template-columns:minmax(56px,100px) 34px;align-items:center;gap:8px;color:var(--muted);font-size:10px}.progress-track{height:6px;overflow:hidden;background:#e8eeea;border-radius:4px}.progress-track i{display:block;height:100%;background:var(--brand);border-radius:inherit}.board-view{min-width:0}.board-toolbar{min-height:48px;margin-bottom:12px;padding:0 2px;border:0}.board-summary{display:flex;gap:8px}.board-summary span{padding:6px 9px;color:var(--muted);background:#fff;border:1px solid var(--border);border-radius:5px;font-size:11px}.board-summary b{color:var(--text)}.toggle-button{min-height:32px;color:var(--muted);background:#fff;border:1px solid var(--border)}.toggle-button:hover,.toggle-button.is-active{color:var(--brand);border-color:#b8dcc9}.board-columns{display:grid;min-width:calc(var(--board-columns) * 260px);grid-template-columns:repeat(var(--board-columns),minmax(250px,1fr));align-items:start;gap:12px}.board-column{min-width:0;min-height:calc(100vh - 176px);padding:0 10px 10px;background:#edf2ef;border:1px solid #dce5e0;border-radius:8px;transition:border-color .12s ease,background .12s ease}.board-column.is-drag-over{background:#e8f5ee;border-color:#84c2a3}.board-column-header{display:flex;min-height:47px;align-items:center;justify-content:space-between}.board-column-header>span:last-child{display:grid;min-width:24px;height:22px;padding:0 6px;place-items:center;color:var(--muted);background:#fffc;border-radius:5px;font-size:10px}.board-card-list{display:grid;gap:8px}.task-card{padding:12px;background:#fff;border:1px solid #dce5e0;border-radius:7px;box-shadow:0 1px 2px #17211b09;cursor:pointer}.task-card:hover{border-color:#b8ccc1;box-shadow:0 5px 14px #17211b12;transform:translateY(-1px)}.task-card-topline,.task-card-meta,.task-card-footer{display:flex;align-items:center;justify-content:space-between}.task-card-topline{color:var(--muted-2)}.task-type{overflow:hidden;color:var(--brand);font-size:10px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.task-card h3{display:-webkit-box;margin:9px 0 6px;overflow:hidden;color:#1b2921;font-size:13px;font-weight:620;line-height:1.55;-webkit-box-orient:vertical;-webkit-line-clamp:2}.task-card>p{display:-webkit-box;margin:0 0 10px;overflow:hidden;color:var(--muted);font-size:11px;line-height:1.55;-webkit-box-orient:vertical;-webkit-line-clamp:2}.task-card-meta{padding:9px 0;color:var(--muted);border-top:1px solid #eef2ef;font-size:10px}.task-card-meta span,.task-card-footer>span{display:inline-flex;min-width:0;align-items:center;gap:5px}.priority-label{color:var(--amber)}.task-card-footer{justify-content:flex-start;gap:7px;color:var(--muted);font-size:10px}.task-card-footer>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar{display:grid;flex:0 0 25px;width:25px;height:25px;place-items:center;color:#fff;background:#4d8068;border-radius:50%;font-size:9px;font-weight:650}.board-empty{display:grid;min-height:82px;place-items:center;color:#91a098;border:1px dashed #c8d4cd;border-radius:7px;font-size:11px}.goal-board{min-width:0}.goal-columns{display:grid;min-width:calc(var(--goal-columns, 1) * 280px);grid-template-columns:repeat(var(--goal-columns, 1),minmax(260px,1fr));align-items:start;gap:12px}.goal-column{min-width:0;min-height:calc(100vh - 176px);padding:12px 12px 10px;background:#f8faf9;border:1px solid #e2e8e4;border-radius:8px;transition:border-color .12s ease,background .12s ease}.goal-column.is-drag-over{background:#e8f5ee;border-color:#84c2a3}.goal-column-header{padding-bottom:12px;margin-bottom:10px;border-bottom:1px solid #e2e8e4}.goal-column-title{display:flex;align-items:center;gap:8px;margin-bottom:10px;color:#17211b}.goal-column-title h2{margin:0;font-size:14px;font-weight:650}.goal-column-title svg{color:var(--brand);flex-shrink:0}.goal-column-stats{display:grid;gap:6px}.goal-progress{display:grid;grid-template-columns:minmax(60px,1fr) 42px;align-items:center;gap:8px}.goal-progress-track{width:100%;height:6px;background:#e2e8e4;border-radius:3px;overflow:hidden}.goal-progress-track i{display:block;height:100%;background:var(--brand);border-radius:inherit;transition:width .24s ease}.goal-progress span{font-size:11px;font-weight:620;color:var(--muted);text-align:right}.goal-counts{display:flex;flex-wrap:wrap;gap:5px;font-size:10px}.goal-counts>span{padding:2px 6px;color:var(--muted);background:#fff;border:1px solid var(--border);border-radius:4px}.goal-counts .count-active{color:#1f6fdb;background:#eaf2fd;border-color:#c4d8f5}.goal-counts .count-overdue{color:#d34c3f;background:#fdefed;border-color:#f2ccc7}.goal-card-list{display:grid;gap:6px}.goal-card{padding:10px 12px;background:#fff;border:1px solid #e2e8e4;border-radius:7px;cursor:pointer;transition:border-color .12s ease,box-shadow .12s ease}.goal-card:hover{border-color:#b8ccc1;box-shadow:0 3px 10px #17211b0f}.goal-card.is-overdue{border-left:3px solid #d34c3f}.goal-card-topline{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.goal-card-topline .grip-icon{color:#c4cec8;opacity:0;transition:opacity .12s ease}.goal-card:hover .grip-icon{opacity:1}.goal-card h3{display:-webkit-box;margin:0 0 8px;overflow:hidden;color:#1b2921;font-size:13px;font-weight:580;line-height:1.5;-webkit-box-orient:vertical;-webkit-line-clamp:2}.goal-card-meta{display:flex;align-items:center;justify-content:space-between;padding-top:8px;color:var(--muted);border-top:1px solid #f0f4f1;font-size:10px}.goal-card-meta span{display:inline-flex;align-items:center;gap:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-view{display:flex;min-height:calc(100vh - 118px);flex-direction:column;overflow:hidden}.list-toolbar{flex-wrap:wrap;padding-block:8px}.status-tabs{display:flex;min-width:0;align-items:center;gap:2px}.status-tabs button{display:inline-flex;height:32px;padding:0 8px;align-items:center;gap:5px;color:var(--muted);background:transparent;border-radius:5px;font-size:11px}.status-tabs button:hover{color:var(--text);background:var(--surface-hover)}.status-tabs button.is-active{color:var(--brand);background:var(--brand-soft);font-weight:620}.status-tabs span{color:inherit;opacity:.7;font-size:9px}.list-file-actions{display:flex;align-items:center;gap:7px}.list-result-count{margin-right:4px;color:var(--muted);font-size:11px}.import-button{position:relative;overflow:hidden}.import-button input{position:absolute;width:1px;height:1px;opacity:0}.table-scroll{flex:1;overflow:auto}.task-table{width:100%;min-width:940px;border-collapse:separate;border-spacing:0;table-layout:auto}.task-table th{position:sticky;z-index:2;top:0;height:38px;padding:0 10px;color:var(--muted);background:#f8faf9;border-bottom:1px solid var(--border);font-size:10px;font-weight:600;text-align:left;white-space:nowrap}.task-table th button{display:inline-flex;padding:0;align-items:center;gap:4px;color:inherit;background:transparent;font-weight:inherit}.task-table td{height:49px;max-width:220px;padding:5px 10px;color:#38463e;border-bottom:1px solid #edf1ef;font-size:11px;vertical-align:middle}.task-table tbody tr:hover td{background:#f8fbf9}.checkbox-column{width:40px;padding-left:15px!important}.title-column{width:31%;min-width:270px}.actions-column{width:42px}.task-table input[type=checkbox]{accent-color:var(--brand)}.table-task-title{display:flex;width:100%;padding:0;flex-direction:column;align-items:flex-start;gap:3px;background:transparent;text-align:left}.table-task-title span,.table-task-title small,.table-value{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table-task-title span{color:#1b2921;font-size:12px;font-weight:570}.table-task-title:hover span{color:var(--brand)}.table-task-title small{color:var(--muted-2);font-size:9px}.date-cell{display:inline-flex;align-items:center;gap:5px;color:var(--muted);white-space:nowrap}.table-more{width:27px;height:27px}.pagination{display:flex;min-height:48px;padding:0 14px;align-items:center;justify-content:space-between;color:var(--muted);border-top:1px solid var(--border);font-size:10px}.pagination>div{display:flex;align-items:center;gap:8px}.pagination b{min-width:48px;color:#445149;font-size:10px;font-weight:550;text-align:center}.swimlane-view{position:relative;min-height:calc(100vh - 118px);overflow:hidden}.timeline-scroll{height:calc(100vh - 171px);overflow:auto}.timeline-canvas{position:relative;min-height:100%}.timeline-header{position:sticky;z-index:6;top:0;display:grid;height:45px;grid-template-columns:190px minmax(0,1fr);color:var(--muted);background:#f8faf9;border-bottom:1px solid var(--border)}.lane-owner-header{position:sticky;z-index:7;left:0;display:flex;padding-left:16px;align-items:center;gap:7px;background:#f8faf9;border-right:1px solid var(--border);font-size:10px;font-weight:600}.date-axis{position:relative;height:100%;background-image:repeating-linear-gradient(to right,transparent 0,transparent 21px,#e9eeeb 21px,#e9eeeb 22px)}.date-axis span{position:absolute;bottom:8px;padding-left:5px;color:#7e8a83;font-size:9px;white-space:nowrap}.date-axis span.is-month{color:var(--text);font-weight:620}.today-line{position:absolute;z-index:5;top:45px;bottom:0;width:1px;pointer-events:none;background:#e4564a}.today-line span{position:sticky;top:49px;display:inline-block;padding:3px 5px;color:#fff;background:#e4564a;border-radius:4px;font-size:9px;transform:translate(-50%)}.swimlane-group{display:grid;grid-template-columns:190px minmax(0,1fr);border-bottom:1px solid var(--border)}.lane-owner{position:sticky;z-index:4;left:0;display:flex;min-height:58px;padding:12px 14px;align-items:flex-start;gap:9px;background:#fff;border-right:1px solid var(--border)}.lane-avatar{display:grid;flex:0 0 28px;width:28px;height:28px;place-items:center;color:var(--brand);background:var(--brand-soft);border-radius:50%}.lane-owner>div{display:flex;min-width:0;flex-direction:column;gap:3px}.lane-owner b{overflow:hidden;font-size:11px;font-weight:620;text-overflow:ellipsis;white-space:nowrap}.lane-owner small{color:var(--muted);font-size:9px}.lane-tasks{position:relative;background-color:#fff;background-image:repeating-linear-gradient(to right,transparent 0,transparent 21px,#eef2f0 21px,#eef2f0 22px)}.timeline-task{position:absolute;display:flex;height:29px;min-width:33px;padding:0 5px 0 9px;align-items:center;justify-content:space-between;gap:5px;overflow:hidden;color:#284134;background:#e7f3ec;border:1px solid #bcdcca;border-left:3px solid var(--brand);border-radius:5px;box-shadow:0 1px 2px #17211b0a;text-align:left}.timeline-task:hover{z-index:3;filter:brightness(.98);box-shadow:0 4px 11px #17211b1a}.timeline-task>span:first-child{position:absolute;overflow:hidden;font-size:10px;font-weight:570;text-overflow:ellipsis;white-space:nowrap}.timeline-task .status-badge{position:absolute;right:4px}.status-bar-进行中{color:#244b7f;background:#eaf2ff;border-color:#bfd5f4;border-left-color:var(--blue)}.status-bar-已逾期{color:#7a302a;background:#fff0ee;border-color:#f0c7c2;border-left-color:var(--red)}.status-bar-未开始{color:#4f5d55;background:#f0f3f1;border-color:#d6ded9;border-left-color:#849188}.status-bar-已取消{color:#6f655f;background:#f3f0ee;border-color:#ded7d2;border-left-color:#91857d}.overlay{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;background:#0c171157;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.drawer-overlay{display:flex;justify-content:flex-end}.task-drawer{display:flex;width:min(620px,100%);height:100%;flex-direction:column;background:#fff;box-shadow:-14px 0 40px #17211b29;animation:drawer-in .18s ease-out}@keyframes drawer-in{0%{transform:translate(24px);opacity:0}}.drawer-header,.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 22px;border-bottom:1px solid var(--border)}.drawer-header span,.modal-header>div>span{color:var(--brand);font-size:10px;font-weight:650}.drawer-header h2,.modal-header h2{max-width:500px;margin:5px 0 0;overflow:hidden;color:var(--text);font-size:18px;font-weight:680;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.modal-header p{margin:6px 0 0;color:var(--muted);font-size:11px}.task-form{display:flex;min-height:0;flex:1;flex-direction:column}.form-grid{display:grid;min-height:0;padding:20px 22px 28px;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;overflow-y:auto}.form-field{display:flex;min-width:0;flex-direction:column;gap:7px}.form-field.is-wide{grid-column:1 / -1}.form-field>label{color:#526057;font-size:11px;font-weight:570}.form-field>label b{margin-left:3px;color:var(--red)}.form-field input,.form-field select,.form-field textarea,.field-row input,.field-row select{width:100%;min-width:0;min-height:38px;padding:8px 10px;color:var(--text);background:#fff;border:1px solid var(--border-strong);border-radius:6px;outline:0;font-size:12px}.form-field textarea{resize:vertical;line-height:1.55}.form-field input:focus,.form-field select:focus,.form-field textarea:focus,.field-row input:focus,.field-row select:focus{border-color:#91c5aa;box-shadow:0 0 0 3px #147a5212}.date-input{position:relative}.date-input svg{position:absolute;z-index:1;top:12px;left:10px;color:var(--muted);pointer-events:none}.date-input input{padding-left:32px}.checkbox-field{display:flex;min-height:38px;align-items:center;gap:7px;color:var(--muted);font-size:12px}.checkbox-field input{width:auto;min-height:auto;accent-color:var(--brand)}.drawer-footer,.modal-footer{display:flex;min-height:68px;padding:0 22px;align-items:center;justify-content:space-between;gap:16px;background:#fbfcfb;border-top:1px solid var(--border)}.drawer-footer>div,.modal-footer>div{display:flex;gap:8px}.modal-overlay{display:grid;padding:24px;place-items:center}.field-modal{display:flex;width:min(900px,100%);max-height:min(780px,calc(100vh - 48px));flex-direction:column;overflow:hidden;background:#fff;border-radius:8px;box-shadow:var(--shadow)}.field-table-header,.field-row{display:grid;grid-template-columns:minmax(180px,1.2fr) 150px minmax(190px,1fr) 58px 38px;gap:10px;align-items:center}.field-table-header{min-height:38px;padding:0 18px;color:var(--muted);background:#f8faf9;border-bottom:1px solid var(--border);font-size:10px;font-weight:600}.field-list{min-height:0;padding:6px 18px;overflow-y:auto}.field-row{min-height:48px;border-bottom:1px solid #edf1ef}.field-row input,.field-row select{min-height:34px;padding:6px 8px;font-size:11px}.field-row input:disabled,.field-row select:disabled{color:#7b8780;background:#f4f6f5;cursor:not-allowed}.field-name-control{display:flex;min-width:0;align-items:center;gap:5px;color:#a2aca6}.visibility-toggle{display:grid;place-items:center}.visibility-toggle input{position:absolute;width:1px;height:1px;opacity:0}.visibility-toggle span{display:grid;width:28px;height:18px;padding:1px;place-items:center;color:#fff;background:#c4cdc8;border-radius:9px}.visibility-toggle input:checked+span{background:var(--brand)}.delete-field{color:var(--red)}.add-field-button{align-self:flex-start;margin:8px 18px 14px;color:var(--brand);background:var(--brand-soft);border:1px dashed #9dccb4}.text-button{min-height:32px;padding:0;color:var(--muted);background:transparent}.reset-button:hover{color:var(--red)}.toast-message{position:fixed;z-index:150;right:22px;bottom:22px;max-width:min(380px,calc(100vw - 44px));padding:11px 14px;color:#fff;background:#25382e;border-radius:6px;box-shadow:var(--shadow);font-size:12px;animation:toast-in .18s ease-out}@keyframes toast-in{0%{transform:translateY(8px);opacity:0}}.mobile-nav-backdrop{display:none}@media(max-width:1250px){.topbar{gap:14px;padding-inline:18px}.topbar-heading p,.sync-state span,.fields-button span,.type-filter{display:none}.sync-state{width:36px;padding:0;justify-content:center}.search-box{width:min(230px,25vw)}}@media(max-width:960px){:root{--topbar-height: 72px}body{overflow:auto}.app-shell,.app-shell.sidebar-collapsed{display:block}.sidebar-wrap{position:fixed;z-index:120;inset:0 auto 0 0;width:min(280px,86vw);transform:translate(-102%);transition:transform .18s ease}.sidebar-wrap.is-mobile-open{transform:translate(0)}.mobile-nav-backdrop{position:fixed;z-index:110;top:0;right:0;bottom:0;left:0;display:block;visibility:hidden;background:#0c171161;opacity:0;transition:opacity .18s ease,visibility .18s ease}.mobile-nav-backdrop.is-open{visibility:visible;opacity:1}.sidebar.is-collapsed .brand-copy,.sidebar.is-collapsed .sidebar-section,.sidebar.is-collapsed .sidebar-summary{display:flex}.sidebar.is-collapsed .sidebar-section{display:block}.sidebar.is-collapsed .sidebar-summary{display:grid}.sidebar.is-collapsed .nav-item span{display:inline}.sidebar.is-collapsed .brand{padding:0 44px 0 18px}.sidebar.is-collapsed .main-nav{padding-top:16px}.sidebar.is-collapsed .nav-item{grid-template-columns:22px minmax(0,1fr);justify-items:start;padding:0 12px}.sidebar-collapse{display:none}.workspace{min-height:100vh;height:auto;grid-template-rows:var(--topbar-height) minmax(calc(100vh - var(--topbar-height)),auto)}.mobile-menu{display:inline-grid;flex:0 0 34px}.topbar-heading{min-width:auto}.filter-control{display:none}.search-box{width:min(260px,32vw)}.workspace-content{min-height:calc(100vh - var(--topbar-height))}.board-column{min-height:calc(100vh - 168px)}}@media(max-width:680px){.topbar{padding:0 12px}.topbar-heading h1{font-size:16px}.topbar-actions{gap:5px}.sync-state,.fields-button,.search-box{display:none}.primary-button,.secondary-button{min-height:34px;padding-inline:10px}.topbar .primary-button span{display:none}.topbar .primary-button{width:36px;padding:0}.workspace-content{padding:10px}.tree-toolbar,.board-toolbar,.swimlane-toolbar,.list-toolbar{min-height:48px;padding-inline:10px}.tree-legend,.board-summary{display:none}.tree-view,.board-view{overflow-x:auto}.board-columns{gap:8px}.board-column{min-height:calc(100vh - 148px)}.board-column .goal-columns{gap:8px}.board-column .goal-column{min-height:calc(100vh - 148px)}.list-view,.swimlane-view{min-height:calc(100vh - 92px)}.list-toolbar{align-items:flex-start;flex-direction:column}.status-tabs{width:100%;overflow-x:auto}.list-file-actions{width:100%;justify-content:flex-end}.list-result-count{margin-right:auto}.timeline-scroll{height:calc(100vh - 144px)}.form-grid{grid-template-columns:1fr}.form-field.is-wide{grid-column:auto}.drawer-header,.modal-header,.form-grid{padding:16px}.drawer-footer,.modal-footer{padding:0 16px}.field-modal{max-height:100vh;border-radius:0}.modal-overlay{padding:0}.field-table-header{display:none}.field-list{padding:6px 12px}.field-row{grid-template-columns:minmax(130px,1fr) 116px 38px;gap:7px;padding:8px 0}.field-row>input:nth-of-type(1){display:none}.visibility-toggle{grid-column:3;grid-row:1}.delete-field{grid-column:3;grid-row:2}.field-row>select{grid-column:2;grid-row:1 / span 2}.modal-footer{min-height:74px}.modal-footer .reset-button{width:32px;overflow:hidden;color:var(--red);white-space:nowrap}.modal-footer .reset-button svg{flex:0 0 auto}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.portfolio-view,.dependency-view,.people-view{min-width:0}.portfolio-intro,.people-heading,.dependency-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:4px 2px 20px}.portfolio-kicker,.panel-eyebrow{color:var(--brand);font-size:10px;font-weight:720;letter-spacing:.08em}.portfolio-intro h2,.people-heading h2,.dependency-toolbar h2{margin:6px 0 7px;color:var(--text);font-size:24px;font-weight:700;line-height:1.2}.portfolio-intro p,.people-heading p,.dependency-toolbar p{margin:0;color:var(--muted);font-size:12px}.portfolio-intro-meta{display:flex;align-items:center;gap:14px;color:var(--muted);font-size:11px;white-space:nowrap}.portfolio-intro-meta span{display:inline-flex;align-items:center;gap:6px}.portfolio-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:14px}.portfolio-metric{display:flex;min-height:88px;align-items:center;gap:11px;padding:15px;background:var(--surface);border:1px solid var(--border);border-radius:8px}.metric-icon{display:grid;flex:0 0 33px;width:33px;height:33px;place-items:center;color:var(--brand);background:var(--brand-soft);border-radius:7px}.metric-blue .metric-icon{color:var(--blue);background:var(--blue-soft)}.metric-red .metric-icon{color:var(--red);background:var(--red-soft)}.metric-green .metric-icon{color:var(--brand);background:var(--brand-soft)}.portfolio-metric>div{display:flex;min-width:0;flex-direction:column;gap:3px}.portfolio-metric b{color:var(--text);font-size:22px;line-height:1}.portfolio-metric span:not(.metric-icon){color:var(--muted);font-size:11px}.portfolio-metric small{overflow:hidden;color:var(--muted-2);font-size:9px;text-overflow:ellipsis;white-space:nowrap}.portfolio-main-grid,.portfolio-bottom-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(300px,.9fr);gap:14px;margin-bottom:14px}.portfolio-bottom-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.portfolio-panel{min-width:0;background:var(--surface);border:1px solid var(--border);border-radius:8px}.portfolio-panel-header{display:flex;min-height:68px;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px 12px;border-bottom:1px solid var(--border)}.portfolio-panel-header h3{margin:5px 0 0;color:var(--text);font-size:15px;font-weight:680}.panel-count{color:var(--muted);font-size:10px}.panel-alert-icon{color:var(--red)}.panel-brand-icon{color:var(--brand)}.panel-blue-icon{color:var(--blue)}.project-status-table{overflow-x:auto}.project-status-head,.project-status-row{display:grid;min-width:0;grid-template-columns:minmax(150px,1.35fr) minmax(78px,.85fr) minmax(88px,.8fr) minmax(100px,1fr) 20px;align-items:center;gap:8px;padding:0 16px}.project-status-head{min-height:34px;color:var(--muted);background:#fafcfb;border-bottom:1px solid var(--border);font-size:10px;font-weight:650}.project-status-row{width:100%;min-height:66px;color:var(--text);background:var(--surface);border-bottom:1px solid #edf1ef;text-align:left}.project-status-row:last-child{border-bottom:0}.project-status-row:hover{background:#f8fbf9}.project-status-name,.project-status-next,.project-status-counts,.goal-progress-label,.portfolio-task-main,.portfolio-task-owner{display:flex;min-width:0;align-items:center}.project-status-name{gap:9px}.project-status-name>span,.project-status-next{overflow:hidden;flex-direction:column;align-items:flex-start;gap:3px}.project-status-name b,.project-status-next b{overflow:hidden;max-width:100%;font-size:12px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.project-status-name small,.project-status-next small{overflow:hidden;max-width:100%;color:var(--muted);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.project-status-dot{display:block;flex:0 0 9px;width:9px;height:9px;background:#5798c8;border-radius:50%}.project-status-dot-1{background:#d68b34}.project-status-dot-2{background:#4ba375}.project-status-dot-3{background:#bf6b62}.project-status-counts{gap:8px;color:var(--muted);font-size:10px;white-space:nowrap}.project-status-counts b{color:var(--blue);font-size:12px}.project-status-counts b.is-red{color:var(--red)}.project-health-status{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:10px;white-space:nowrap}.project-health-status i{display:block;width:7px;height:7px;background:var(--muted-2);border-radius:50%}.project-health-status.is-risk{color:var(--red)}.project-health-status.is-risk i{background:var(--red)}.project-health-status.is-active{color:var(--blue)}.project-health-status.is-active i{background:var(--blue)}.project-health-status.is-done{color:var(--brand)}.project-health-status.is-done i{background:var(--brand)}.project-status-next>span{color:var(--muted-2);font-size:10px}.portfolio-progress{display:grid;grid-template-columns:minmax(46px,1fr) 32px;align-items:center;gap:7px}.portfolio-progress-track,.person-load-track{height:6px;overflow:hidden;background:#e8eeea;border-radius:3px}.portfolio-progress-track i,.person-load-track i{display:block;height:100%;background:var(--brand);border-radius:inherit}.progress-blue{background:var(--blue)!important}.portfolio-progress>span{color:var(--muted);font-size:10px;text-align:right}.portfolio-focus-list{padding:3px 0}.portfolio-task-row{display:grid;width:100%;min-height:56px;grid-template-columns:minmax(0,1fr) 102px 76px auto;align-items:center;gap:8px;padding:7px 14px;color:var(--text);background:transparent;border-bottom:1px solid #edf1ef;text-align:left}.portfolio-task-row:last-child{border-bottom:0}.portfolio-task-row:hover,.person-next-task:hover{background:#f8fbf9}.portfolio-task-main{gap:8px}.portfolio-task-main>span:last-child{display:flex;min-width:0;flex-direction:column;gap:3px}.portfolio-task-main b,.portfolio-task-main small{overflow:hidden;max-width:100%;text-overflow:ellipsis;white-space:nowrap}.portfolio-task-main b{font-size:11px;font-weight:620}.portfolio-task-main small{color:var(--muted);font-size:9px}.portfolio-task-dot{display:block;flex:0 0 6px;width:6px;height:6px;background:var(--red);border-radius:50%}.portfolio-task-owner{gap:5px;overflow:hidden;color:var(--muted);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.mini-avatar{display:grid;flex:0 0 22px;width:22px;height:22px;place-items:center;color:#fff;background:#557f6d;border-radius:50%;font-size:8px;font-weight:650}.portfolio-task-date{color:var(--muted);font-size:10px;white-space:nowrap}.portfolio-empty{display:grid;min-height:100px;place-items:center;color:var(--muted-2);font-size:11px}.portfolio-signal-list,.portfolio-owner-list,.portfolio-guide-list{padding:5px 0}.portfolio-signal-row{display:grid;min-height:68px;grid-template-columns:31px minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 15px;border-bottom:1px solid #edf1ef}.portfolio-signal-row:last-child,.portfolio-owner-row:last-child,.portfolio-guide-list div:last-child{border-bottom:0}.portfolio-signal-icon{display:grid;width:30px;height:30px;place-items:center;color:var(--muted);background:#f1f4f2;border-radius:7px}.signal-red .portfolio-signal-icon{color:var(--red);background:var(--red-soft)}.signal-amber .portfolio-signal-icon{color:#a86712;background:#fff4df}.signal-blue .portfolio-signal-icon{color:var(--blue);background:var(--blue-soft)}.portfolio-signal-row>span:nth-child(2){display:flex;min-width:0;flex-direction:column;gap:4px}.portfolio-signal-row b{color:var(--text);font-size:11px;font-weight:650}.portfolio-signal-row small{overflow:hidden;color:var(--muted);font-size:9px;text-overflow:ellipsis;white-space:nowrap}.portfolio-signal-row strong{color:var(--text);font-size:20px;line-height:1}.portfolio-owner-row{display:grid;min-height:58px;grid-template-columns:25px minmax(0,1fr) minmax(100px,.9fr);align-items:center;gap:9px;padding:7px 15px;border-bottom:1px solid #edf1ef}.portfolio-owner-copy{display:flex;min-width:0;flex-direction:column;gap:3px}.portfolio-owner-copy b,.portfolio-owner-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portfolio-owner-copy b{color:var(--text);font-size:11px;font-weight:650}.portfolio-owner-copy small{color:var(--muted);font-size:9px}.portfolio-owner-load{display:grid;grid-template-columns:minmax(50px,1fr) 18px;align-items:center;gap:7px}.portfolio-owner-load strong{color:var(--text);font-size:11px;text-align:right}.portfolio-guide-list div{display:flex;min-height:52px;align-items:center;justify-content:space-between;gap:12px;padding:8px 15px;border-bottom:1px solid #edf1ef}.portfolio-guide-list b{color:var(--text);font-size:11px;font-weight:650}.portfolio-guide-list span{color:var(--muted);font-size:9px;text-align:right}.goal-progress-list{display:grid;gap:14px;padding:17px 16px 18px}.goal-progress-row{display:grid;gap:7px}.goal-progress-label{justify-content:space-between;gap:12px}.goal-progress-label b{overflow:hidden;color:var(--text);font-size:11px;font-weight:620;text-overflow:ellipsis;white-space:nowrap}.goal-progress-label span{flex:0 0 auto;color:var(--muted);font-size:10px}.gantt-view{min-width:0;min-height:calc(100vh - 118px);overflow:hidden}.gantt-scroll{height:calc(100vh - 171px);overflow:auto}.gantt-canvas{position:relative;min-height:100%}.gantt-header,.gantt-project-row,.gantt-goal-row,.gantt-task-row{display:grid;grid-template-columns:310px minmax(0,1fr)}.gantt-header{position:sticky;z-index:8;top:0;height:45px;color:var(--muted);background:#f8faf9;border-bottom:1px solid var(--border)}.gantt-label-header{position:sticky;z-index:9;left:0;display:flex;align-items:center;gap:7px;padding-left:16px;background:#f8faf9;border-right:1px solid var(--border);font-size:10px;font-weight:650}.gantt-axis,.gantt-row-track{position:relative;background-image:repeating-linear-gradient(to right,transparent 0,transparent 21px,#e9eeeb 21px,#e9eeeb 22px)}.gantt-axis span{position:absolute;bottom:8px;padding-left:5px;color:#7e8a83;font-size:9px;white-space:nowrap}.gantt-today-line{position:absolute;z-index:6;top:45px;bottom:0;width:1px;pointer-events:none;background:#e4564a}.gantt-today-line span{position:sticky;top:49px;display:inline-block;padding:3px 5px;color:#fff;background:#e4564a;border-radius:4px;font-size:9px;transform:translate(-50%)}.gantt-project-row{min-height:44px;background:#f3f8f5;border-bottom:1px solid #dfe9e3}.gantt-goal-row{min-height:34px;background:#fbfdfc;border-bottom:1px solid #edf2ef}.gantt-task-row{min-height:43px;background:#fff;border-bottom:1px solid #f0f3f1}.gantt-row-label,.gantt-task-label{position:sticky;z-index:4;left:0;min-width:0;border-right:1px solid var(--border)}.gantt-row-label{display:flex;align-items:center;gap:7px;padding:0 14px 0 16px;background:inherit}.gantt-row-label b,.gantt-row-label small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gantt-project-row .gantt-row-label b{color:#203c2d;font-size:12px;font-weight:680}.gantt-goal-row .gantt-row-label{padding-left:32px}.gantt-goal-row .gantt-row-label b{color:#3e5448;font-size:11px;font-weight:640}.gantt-row-label small{margin-left:auto;color:var(--muted);font-size:9px}.gantt-project-mark,.gantt-goal-mark{display:block;flex:0 0 7px;width:7px;height:7px;background:var(--brand);border-radius:2px}.gantt-goal-mark{background:var(--blue);border-radius:50%}.gantt-row-track{min-height:100%;background-color:#fff}.gantt-project-row .gantt-row-track{background-color:#f3f8f5}.gantt-goal-row .gantt-row-track{background-color:#fbfdfc}.gantt-project-progress{height:4px;margin-top:20px;background:var(--brand);border-radius:4px;opacity:.5}.gantt-task-label{display:flex;flex-direction:column;justify-content:center;gap:3px;padding:5px 12px 5px 50px;color:var(--text);background:#fff;text-align:left}.gantt-task-label:hover{background:#f8fbf9}.gantt-task-label>span{overflow:hidden;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.gantt-task-label small{display:inline-flex;align-items:center;gap:4px;overflow:hidden;color:var(--muted);font-size:9px;text-overflow:ellipsis;white-space:nowrap}.gantt-task-bar{position:absolute;top:9px;display:flex;height:25px;min-width:33px;padding:0 5px 0 8px;align-items:center;justify-content:space-between;gap:5px;overflow:hidden;color:#284134;background:#e7f3ec;border:1px solid #bcdcca;border-left:3px solid var(--brand);border-radius:5px;text-align:left}.gantt-task-bar:hover{z-index:3;box-shadow:0 4px 11px #17211b1a;filter:brightness(.98)}.gantt-task-bar>span:first-child{overflow:hidden;font-size:9px;font-weight:570;text-overflow:ellipsis;white-space:nowrap}.gantt-task-bar .status-badge{flex:0 0 auto}.dependency-view,.people-view{padding:4px 2px 24px}.dependency-toolbar select{min-width:180px;height:36px;padding:0 10px;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:6px;font-size:12px}.dependency-legend{display:flex;align-items:center;gap:16px;margin-bottom:12px;color:var(--muted);font-size:10px}.dependency-legend span{display:inline-flex;align-items:center;gap:6px}.dependency-dot{display:inline-block;width:7px;height:7px;background:#8a958e;border-radius:50%}.dependency-dot.is-project{background:var(--brand);border-radius:2px}.dependency-dot.is-goal{background:var(--blue)}.dependency-canvas{position:relative;padding:12px 0 20px}.dependency-root{display:flex;width:min(350px,100%);min-height:62px;align-items:center;gap:10px;padding:12px 15px;color:#fff;background:#1f6045;border-radius:8px;box-shadow:0 5px 12px #1f604529}.dependency-root>svg{flex:0 0 auto}.dependency-root div,.dependency-goal-head div{display:flex;min-width:0;flex-direction:column;gap:3px}.dependency-root b{font-size:13px}.dependency-root span{color:#c6e4d4;font-size:10px}.dependency-connector-root{width:1px;height:20px;margin-left:28px;background:#b9cfc2}.dependency-goal-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px}.dependency-goal{position:relative;min-width:0;padding:13px 13px 12px;background:var(--surface);border:1px solid var(--border);border-radius:8px}.dependency-goal-head{display:flex;align-items:center;gap:8px}.dependency-node-icon{display:grid;flex:0 0 28px;width:28px;height:28px;place-items:center;color:var(--blue);background:var(--blue-soft);border-radius:6px}.dependency-goal-head b{overflow:hidden;color:var(--text);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.dependency-goal-head small{color:var(--muted);font-size:9px}.dependency-line{width:1px;height:16px;margin:2px 0 0 14px;background:#bdd1c5}.dependency-task-list{display:flex;min-width:0;flex-direction:column;gap:7px}.dependency-task-wrap{display:grid;grid-template-columns:15px minmax(0,1fr);align-items:center;gap:5px}.dependency-arrow{color:var(--muted-2);transform:rotate(90deg)}.dependency-task{min-width:0;padding:9px 10px;color:var(--text);background:#fbfdfc;border:1px solid #e1e9e4;border-radius:6px;text-align:left}.dependency-task:hover{background:#f1f8f4;border-color:#bcd8c8}.dependency-task-title{display:flex;min-width:0;align-items:center;gap:6px}.dependency-task-title b{overflow:hidden;font-size:10px;font-weight:620;text-overflow:ellipsis;white-space:nowrap}.dependency-task-meta{display:flex;align-items:center;gap:6px;margin-top:7px;color:var(--muted);font-size:9px}.dependency-task-meta>span:not(.mini-avatar){display:inline-flex;align-items:center;gap:3px}.dependency-more{display:block;margin:7px 0 0 20px;color:var(--muted);font-size:10px}.people-heading-stat{display:flex;min-width:112px;align-items:center;gap:7px;padding:10px 12px;color:var(--brand);background:var(--brand-soft);border:1px solid #cde9da;border-radius:6px;font-size:11px}.people-heading-stat b{color:var(--text);font-size:18px}.people-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}.person-card{min-width:0;padding:14px;background:var(--surface);border:1px solid var(--border);border-radius:8px}.person-card-head{display:grid;width:100%;grid-template-columns:34px minmax(0,1fr) 16px;align-items:center;gap:9px;padding:0 0 13px;color:var(--text);background:transparent;text-align:left}.person-card-head:hover{color:var(--brand)}.person-avatar{display:grid;width:34px;height:34px;place-items:center;color:#fff;background:#557f6d;border-radius:50%;font-size:10px;font-weight:650}.person-card-head>span:nth-child(2){display:flex;min-width:0;flex-direction:column;gap:3px}.person-card-head b{overflow:hidden;font-size:12px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.person-card-head small{color:var(--muted);font-size:10px}.person-card-head>svg{color:var(--muted-2)}.person-load{padding:11px 0 12px;border-top:1px solid #edf1ef;border-bottom:1px solid #edf1ef}.person-load-label,.person-stats{display:flex;align-items:center;justify-content:space-between;gap:10px}.person-load-label{margin-bottom:7px;color:var(--muted);font-size:10px}.person-load-label b{color:var(--text)}.person-load-track i{background:var(--blue)}.person-stats{padding:10px 0;color:var(--muted);font-size:10px}.person-stats b{color:var(--text);font-size:12px}.person-stats .is-alert,.person-stats .is-alert b{color:var(--red)}.person-next-task{display:grid;width:100%;grid-template-columns:16px minmax(0,1fr) auto;align-items:center;gap:7px;padding:8px 7px;color:var(--text);background:#fafcfb;border:1px solid #edf1ef;border-radius:6px;text-align:left}.person-next-task>svg{color:var(--blue)}.person-next-task>span{display:flex;min-width:0;flex-direction:column;gap:3px}.person-next-task small{color:var(--muted);font-size:9px}.person-next-task b{overflow:hidden;font-size:10px;font-weight:620;text-overflow:ellipsis;white-space:nowrap}.person-next-task time{color:var(--muted);font-size:9px;white-space:nowrap}.person-next-empty{display:flex;min-height:40px;align-items:center;gap:6px;color:var(--muted-2);font-size:10px}.person-card-footer{display:flex;flex-wrap:wrap;gap:5px;padding-top:12px}@media(max-width:1100px){.portfolio-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.portfolio-main-grid,.portfolio-bottom-grid{grid-template-columns:1fr}}@media(max-width:680px){.portfolio-intro,.people-heading,.dependency-toolbar{align-items:flex-start;flex-direction:column;gap:12px;padding-bottom:14px}.portfolio-intro h2,.people-heading h2,.dependency-toolbar h2{font-size:20px}.portfolio-intro-meta{display:none}.portfolio-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.portfolio-metric{min-height:76px;padding:11px}.portfolio-metric b{font-size:19px}.portfolio-task-row{grid-template-columns:minmax(0,1fr) auto}.portfolio-task-owner,.portfolio-task-date{display:none}.portfolio-task-row .status-badge{grid-column:2;grid-row:1}.project-status-head,.project-status-row{min-width:620px}.portfolio-owner-row{grid-template-columns:25px minmax(0,1fr) minmax(90px,.8fr)}.portfolio-guide-list span{max-width:48%}.gantt-view{min-height:calc(100vh - 92px)}.gantt-scroll{height:calc(100vh - 144px)}.dependency-view,.people-view{padding-inline:0}.dependency-legend{flex-wrap:wrap;gap:9px 14px}}.okr-view{min-width:0;padding:4px 2px 28px}.okr-intro{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding:12px 2px 16px}.eyebrow-label{display:block;margin-bottom:7px;color:#477665;font-size:10px;font-weight:700;letter-spacing:.08em}.okr-intro h2{max-width:720px;margin:0;color:var(--text);font-size:22px;font-weight:680;line-height:1.28}.okr-intro p{margin:7px 0 0;color:var(--muted);font-size:12px}.okr-intro-actions{display:flex;flex:0 0 auto;gap:8px}.okr-intro-actions .secondary-button.is-active{color:var(--blue);background:var(--blue-soft);border-color:#b8d3f4}.okr-relation-hint,.okr-new-objective{display:flex;min-height:42px;align-items:center;gap:8px;margin-bottom:10px;padding:0 12px;color:#315e8e;background:#f0f6ff;border:1px dashed #b9d0ed;border-radius:7px;font-size:11px}.okr-new-objective{color:var(--text);background:#fff;border-style:solid;border-color:var(--border)}.okr-new-objective>svg{flex:0 0 auto;color:var(--brand)}.okr-new-objective input,.okr-objective-editor input{min-width:0;height:32px;padding:0 9px;background:#fbfdfc;border:1px solid var(--border);border-radius:5px;outline:0;font-size:11px}.okr-new-objective input:nth-of-type(1){width:58px}.okr-new-objective input:nth-of-type(2){flex:1}.okr-new-objective input:nth-of-type(3){width:130px}.okr-board-scroll{min-width:0;overflow:auto;padding-bottom:5px}.okr-board-canvas{position:relative;min-width:max(100%,calc(var(--okr-columns, 1) * 360px));min-height:520px}.okr-objective-grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(var(--okr-columns, 1),minmax(320px,1fr));align-items:start;gap:14px}.okr-relation-lines{position:absolute;z-index:2;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:visible;pointer-events:none}.okr-relation-lines path{fill:none;stroke:#7091ad;stroke-width:1.6;stroke-dasharray:7 6;opacity:.78}.okr-objective-column{position:relative;min-width:0;min-height:480px;padding:12px;background:#f7faf8;border:1px solid #dce6e0;border-radius:8px;transition:background .14s ease,border-color .14s ease}.okr-objective-column:hover{border-color:#c5d8cc}.okr-objective-column:has(.okr-project-lane.is-relation-mode:hover){background:#f3f9f5}.okr-objective-head{display:flex;min-width:0;align-items:flex-start;gap:9px;padding:2px 1px 12px;border-bottom:1px solid #dde7e1}.okr-objective-code{display:grid;flex:0 0 32px;width:32px;height:32px;place-items:center;color:#fff;border-radius:6px;font-size:11px;font-weight:700}.okr-objective-copy{display:flex;min-width:0;flex:1;flex-direction:column;gap:4px}.okr-objective-copy>strong{color:var(--text);font-size:12px;font-weight:650;line-height:1.45}.okr-objective-copy>span{color:var(--muted);font-size:10px}.okr-objective-head>.icon-button{flex:0 0 28px;width:28px;height:28px}.okr-objective-editor{display:grid;min-width:0;gap:5px}.okr-objective-editor>div{display:flex;gap:5px}.okr-objective-editor .primary-button,.okr-objective-editor .secondary-button{min-height:28px;padding-inline:8px;font-size:10px}.okr-objective-summary{display:flex;align-items:center;gap:7px;padding:9px 1px 10px;color:var(--muted);font-size:10px}.okr-objective-summary span{padding-right:7px;border-right:1px solid #d8e1db}.okr-objective-summary b{margin-left:auto;color:var(--brand);font-size:12px}.okr-project-list{display:grid;gap:10px}.okr-project-lane{position:relative;min-width:0;padding:10px;background:#fff;border:1px solid #dbe5df;border-radius:7px;box-shadow:0 1px 2px #17211b08;cursor:pointer;transition:border-color .14s ease,box-shadow .14s ease,transform .14s ease}.okr-project-lane:hover{border-color:#aac9b7;box-shadow:0 6px 15px #17211b12;transform:translateY(-1px)}.okr-project-lane.is-relation-mode{cursor:crosshair}.okr-project-lane.is-relation-selected{border-color:#5c96c9;box-shadow:0 0 0 3px #276fd01f}.okr-project-head{display:flex;min-width:0;align-items:center;gap:8px}.okr-project-icon{display:grid;flex:0 0 27px;width:27px;height:27px;place-items:center;color:var(--brand);background:var(--brand-soft);border-radius:5px}.okr-project-title{display:flex;min-width:0;flex:1;flex-direction:column;gap:3px}.okr-project-title strong{overflow:hidden;color:var(--text);font-size:12px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.okr-project-title span{color:var(--muted);font-size:10px}.okr-project-grip{flex:0 0 auto;color:#b4c0b9}.okr-project-progress{display:grid;grid-template-columns:minmax(0,1fr) 34px;align-items:center;gap:7px;margin:9px 0}.okr-project-progress>div{height:5px;overflow:hidden;background:#e8eee9;border-radius:3px}.okr-project-progress i{display:block;height:100%;background:var(--brand);border-radius:inherit}.okr-project-progress span{color:var(--muted);font-size:10px;text-align:right}.okr-project-task-list{display:grid;gap:6px}.okr-task-card{display:block;width:100%;min-width:0;padding:9px;color:var(--text);background:#fbfdfc;border:1px solid #e3eae5;border-radius:6px;text-align:left;cursor:pointer}.okr-task-card:hover{background:#f2f8f4;border-color:#bcd8c8}.okr-task-card-topline,.okr-task-card-meta{display:flex;align-items:center;justify-content:space-between;gap:8px}.okr-task-type{overflow:hidden;color:var(--brand);font-size:9px;text-overflow:ellipsis;white-space:nowrap}.okr-task-card>strong{display:-webkit-box;margin:7px 0;overflow:hidden;font-size:11px;font-weight:620;line-height:1.45;-webkit-box-orient:vertical;-webkit-line-clamp:2}.okr-task-card-meta{color:var(--muted);font-size:9px}.okr-task-card-meta span:first-child{display:inline-flex;min-width:0;align-items:center;gap:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.okr-task-objectives{display:flex;flex-wrap:wrap;gap:4px;margin-top:7px}.okr-task-objectives span,.okr-task-objectives em{padding:2px 5px;color:#315e8e;background:#edf4ff;border:1px solid #d4e4fa;border-radius:3px;font-size:9px;font-style:normal}.okr-task-objectives em{color:#825d1e;background:#fff5df;border-color:#f0dfb5}.okr-more-tasks{padding:4px 2px 0;color:var(--muted);font-size:10px}.okr-drop-project{display:grid;min-height:90px;place-items:center;color:#91a098;border:1px dashed #bfd0c5;border-radius:7px;font-size:11px}.okr-relations-panel{display:grid;grid-template-columns:210px minmax(0,1fr);gap:20px;margin-top:16px;padding:15px 16px;background:#fff;border:1px solid var(--border);border-radius:8px}.okr-relations-panel h3{margin:0;font-size:14px}.okr-relations-list{display:grid;gap:7px;align-content:start}.okr-relation-item{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) minmax(90px,.7fr) 28px;align-items:center;gap:8px;min-height:34px;padding:4px 5px 4px 9px;color:var(--text);border:1px dashed #b9cad7;border-radius:5px;font-size:10px}.okr-relation-item>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.okr-relation-item>svg{color:#6a8ba4}.okr-relation-item small{overflow:hidden;color:var(--muted);text-overflow:ellipsis;white-space:nowrap}.okr-no-relations{color:var(--muted);font-size:11px}.okr-task-field{margin:14px 0 0;padding:12px;border:1px solid var(--border);border-radius:7px}.okr-task-field legend{padding:0 4px;color:var(--text);font-size:12px;font-weight:650}.okr-task-field p{margin:0 0 9px;color:var(--muted);font-size:10px}.okr-task-options{display:grid;gap:6px}.okr-task-options label{display:flex;min-width:0;align-items:flex-start;gap:7px;padding:7px 8px;color:var(--muted);background:#fbfdfc;border:1px solid #e1e9e4;border-radius:5px;font-size:10px}.okr-task-options label.is-selected{color:#315e8e;background:#f1f6ff;border-color:#c8dbf4}.okr-task-options input{flex:0 0 auto;margin-top:1px;accent-color:var(--blue)}.okr-task-options label span{display:flex;min-width:0;gap:6px}.okr-task-options label b{flex:0 0 auto;color:var(--blue)}@media(max-width:900px){.okr-intro{align-items:flex-start;flex-direction:column}.okr-relations-panel{grid-template-columns:1fr;gap:12px}}@media(max-width:680px){.okr-view{padding-inline:0}.okr-intro h2{font-size:19px}.okr-intro-actions{width:100%}.okr-intro-actions button{flex:1}.okr-new-objective{align-items:stretch;flex-wrap:wrap;padding:8px}.okr-new-objective input:nth-of-type(2){flex-basis:calc(100% - 48px)}.okr-new-objective input:nth-of-type(3){flex:1;width:auto}.okr-new-objective .primary-button,.okr-new-objective .secondary-button{min-height:32px}.okr-relation-item{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) 28px}.okr-relation-item small{display:none}}
