:root{font-family:Inter,SF Pro Text,PingFang SC,Microsoft YaHei,system-ui,sans-serif;color:#18181b;background:#f6f6f4;font-synthesis:none;text-rendering:optimizeLegibility;--canvas: #f6f6f4;--surface: #ffffff;--surface-subtle: #fafaf9;--surface-hover: #f4f4f3;--ink: #18181b;--ink-soft: #3f3f46;--muted: #6b7280;--faint: #a1a1aa;--border: #e4e4e7;--border-strong: #d4d4d8;--primary: #2f343b;--primary-hover: #20242a;--active: #334155;--done: #56806f;--blocked: #c65f4d;--warning: #a06b24;--focus: #4f6b91;--radius-sm: 6px;--radius: 8px;--radius-lg: 12px;--shadow-dialog: 0 24px 60px rgba(24, 24, 27, .18);--ease: .18s ease;--ease-out-quart: cubic-bezier(.22, 1, .36, 1);--sidebar-expanded: 252px;--sidebar-rail: 76px}*{box-sizing:border-box}html{min-width:0;background:var(--canvas)}body{margin:0;min-width:320px;min-height:100vh;background:var(--canvas)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}button,input,select,textarea{transition:border-color var(--ease),background-color var(--ease),color var(--ease),opacity var(--ease),box-shadow var(--ease)}:focus-visible{outline:3px solid rgba(79,107,145,.28);outline-offset:2px}::selection{color:#fff;background:#3f4854}.skip-link{position:fixed;top:8px;left:8px;z-index:200;padding:9px 12px;color:#fff;font-size:12px;font-weight:600;text-decoration:none;background:var(--primary);border-radius:var(--radius-sm);transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.auth-bootstrap{display:flex;min-height:100vh;min-height:100dvh;align-items:center;justify-content:center;gap:10px;color:var(--muted);font-size:13px;background:var(--canvas)}.auth-bootstrap .brand-mark{margin-right:8px}.auth-page{display:grid;min-height:100vh;min-height:100dvh;grid-template-columns:minmax(280px,.68fr) minmax(500px,1.32fr);background:var(--surface)}.auth-context{display:flex;min-width:0;align-items:center;justify-content:center;padding:clamp(32px,5vw,76px);background:#efefed;border-right:1px solid var(--border-strong)}.auth-brand{display:inline-flex;align-items:center;gap:12px;color:var(--ink);font-size:20px;font-weight:680;letter-spacing:.04em}.auth-brand>span{display:grid;width:38px;height:38px;color:#fff;background:var(--primary);border-radius:var(--radius-sm);place-items:center}.auth-panel{display:flex;min-width:0;align-items:center;justify-content:center;padding:clamp(32px,6vw,88px);background:#fff}.auth-card{width:min(100%,430px)}.auth-card-header{margin-bottom:22px}.auth-card-header h1{margin:0;color:var(--ink);font-size:clamp(26px,3vw,32px);font-weight:660;letter-spacing:-.04em}.auth-tabs{position:relative;display:grid;grid-template-columns:repeat(2,1fr);margin-bottom:24px;border-bottom:1px solid var(--border)}.auth-tabs button{position:relative;min-height:44px;padding:0 10px;color:var(--muted);background:transparent;border:0}.auth-tabs button:hover,.auth-tabs button[aria-selected=true]{color:var(--ink)}.auth-tabs button>span{position:absolute;right:0;bottom:-1px;left:0;height:2px;background:var(--primary)}.auth-tabs em{position:relative;z-index:1;font-size:13px;font-style:normal;font-weight:620}.auth-form{display:flex;flex-direction:column;gap:3px}.auth-error-summary{margin-bottom:14px;padding:11px 12px;color:#8f4036;background:#fff5f3;border:1px solid #edcec8;border-radius:var(--radius-sm);outline:0}.auth-error-summary:focus-visible{box-shadow:0 0 0 3px #a64e4126}.auth-error-summary strong,.auth-error-summary span{display:block;font-size:12px;line-height:1.5}.auth-error-summary strong{font-weight:650}.auth-error-summary span{margin-top:2px;color:#a05a4e}.auth-error-summary ul{margin:6px 0 0;padding-left:18px}.auth-error-summary li+li{margin-top:3px}.auth-error-summary a{color:inherit;font-size:11px;line-height:1.45;text-decoration-color:#8f403661;text-underline-offset:2px}.auth-error-summary a:hover{text-decoration-color:currentColor}.auth-field{display:flex;min-width:0;flex-direction:column}.auth-field>label{margin-bottom:7px;color:var(--ink-soft);font-size:12px;font-weight:600}.auth-input-wrap{position:relative;display:flex;min-width:0}.auth-input-wrap>input,.auth-password-control input,.auth-code-control input{width:100%;height:46px;padding:0 12px;color:var(--ink);font-size:14px;background:#fff;border:1px solid #94949d;border-radius:var(--radius-sm);outline:0}.auth-input-wrap>.auth-input-icon+input{padding-left:39px}.auth-input-wrap>.auth-input-icon+.auth-password-control input{padding-left:39px}.auth-input-icon{position:absolute;top:50%;left:12px;z-index:1;display:grid;color:#8a8f96;pointer-events:none;transform:translateY(-50%);place-items:center}.auth-input-wrap input:hover{border-color:#b4b4ba}.auth-input-wrap input:focus{border-color:#7b8796;box-shadow:0 0 0 3px #4f6b911f}.auth-field.invalid input{border-color:#c67a6d}.auth-field.invalid input:focus{box-shadow:0 0 0 3px #a64e4121}.auth-field-message{min-height:24px;padding:5px 1px 3px;color:var(--muted);font-size:11px;line-height:1.4}.auth-field-error{color:#a34e41}.auth-field-success{color:#46695b}.auth-password-control{position:relative;width:100%}.auth-password-control input{padding-right:46px}.auth-password-control>button{position:absolute;top:1px;right:1px;display:grid;width:44px;height:44px;padding:0;color:var(--muted);background:transparent;border:0;border-radius:var(--radius-sm);place-items:center}.auth-password-control>button:hover{color:var(--ink);background:var(--surface-hover)}.auth-code-control{display:grid;width:100%;grid-template-columns:minmax(0,1fr) 122px;gap:8px}.auth-code-control>button{display:inline-flex;height:46px;align-items:center;justify-content:center;gap:6px;color:var(--ink-soft);font-size:12px;font-weight:620;white-space:nowrap;background:var(--surface-subtle);border:1px solid #94949d;border-radius:var(--radius-sm)}.auth-code-control>button:hover:not(:disabled){color:var(--ink);background:var(--surface-hover);border-color:#b7b7bc}.auth-submit{display:inline-flex;width:100%;min-height:46px;margin-top:8px;align-items:center;justify-content:center;gap:8px;color:#fff;font-size:13px;font-weight:650;background:var(--primary);border:1px solid var(--primary);border-radius:var(--radius-sm)}.auth-submit:hover:not(:disabled){background:var(--primary-hover)}.app-shell{display:flex;min-height:100vh}.sidebar{--sidebar-size: var(--sidebar-expanded);--sidebar-padding-x: 14px;position:sticky;top:0;z-index:30;display:flex;flex:0 0 var(--sidebar-size);flex-direction:column;height:100vh;padding:22px var(--sidebar-padding-x) 14px;overflow:visible;background:var(--surface);border-right:1px solid var(--border);transition:flex-basis .19s var(--ease-out-quart),padding .19s var(--ease-out-quart),transform .22s var(--ease-out-quart)}.brand{display:flex;align-items:center;min-height:34px;padding:0 8px;gap:10px;font-size:15px;font-weight:650;letter-spacing:-.02em}.brand-mark{display:grid;flex:0 0 auto;width:30px;height:30px;color:#fff;background:var(--primary);border-radius:var(--radius-sm);place-items:center}.brand-symbol{display:block;width:100%;height:100%;border-radius:inherit;object-fit:contain}.sidebar-copy{max-width:180px;overflow:hidden;opacity:1;white-space:nowrap;transition:max-width .16s var(--ease-out-quart),opacity .1s ease}.sidebar-toggle{position:absolute;top:24px;right:-15px;z-index:2;width:30px;height:30px;color:var(--ink-soft);background:#fff;border:1px solid var(--border-strong);border-radius:50%;box-shadow:0 3px 9px #18181b14}.sidebar-toggle:hover{background:var(--surface-subtle);border-color:#b9bbc0}.mobile-close{display:none!important;margin-left:auto}.workspace-switch{display:flex;align-items:center;width:100%;min-height:54px;margin:22px 0 18px;padding:8px 10px;gap:10px;color:var(--ink);text-align:left;background:var(--surface-subtle);border:1px solid var(--border);border-radius:var(--radius)}.workspace-switch:hover{background:var(--surface-hover);border-color:var(--border-strong)}.workspace-switch>span{display:flex;min-width:0;flex:1;flex-direction:column;gap:2px}.workspace-switch strong{overflow:hidden;font-size:13px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.workspace-switch small{color:var(--muted);font-size:12px}.workspace-avatar,.project-glyph{display:grid;flex:0 0 auto;width:30px;height:30px;color:var(--ink-soft);font-size:12px;font-weight:650;background:#ececea;border-radius:var(--radius-sm);place-items:center}.nav-section{display:flex;flex-direction:column;gap:3px}.nav-item{display:flex;align-items:center;width:100%;min-height:40px;padding:8px 10px;gap:11px;color:var(--muted);font-size:13px;text-align:left;background:transparent;border:0;border-radius:var(--radius-sm)}.nav-item{position:relative;isolation:isolate}.nav-item:hover{color:var(--ink);background:var(--surface-hover)}.nav-item.active{color:var(--ink);font-weight:600;background:transparent}.nav-active-surface,.project-active-surface{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background:#ededeb;border:1px solid #e1e1de;border-radius:var(--radius-sm)}.project-active-surface{background:#f1f1ef;border-color:#e5e5e2;border-radius:var(--radius)}.nav-item>:not(.nav-active-surface),.project-link>:not(.project-active-surface){position:relative;z-index:1}.nav-item em{min-width:22px;margin-left:auto;padding:2px 7px;color:var(--ink-soft);font-size:11px;font-style:normal;text-align:center;background:#e2e2df;border-radius:999px}.project-nav{min-height:0;margin-top:26px;overflow:hidden}.nav-caption{display:flex;align-items:center;justify-content:space-between;padding:0 8px 8px 10px;color:var(--muted);font-size:12px;font-weight:600}.nav-caption button{display:grid;width:32px;height:32px;padding:0;color:var(--muted);background:transparent;border:0;border-radius:var(--radius-sm);place-items:center}.nav-caption button:hover{color:var(--ink);background:var(--surface-hover)}.project-list{max-height:min(34vh,310px);overflow:auto;scrollbar-width:thin}.project-list-empty{display:block;padding:10px;color:var(--faint);font-size:11px}.project-link{position:relative;isolation:isolate;display:flex;align-items:center;width:100%;min-height:52px;padding:7px 9px;gap:10px;color:var(--muted);text-align:left;background:transparent;border:0;border-radius:var(--radius)}.project-link:hover{background:var(--surface-hover)}.project-link.current{color:var(--ink);background:transparent}.project-link.current .project-glyph{color:#fff;background:var(--primary)}.project-link>span:last-child{display:flex;min-width:0;flex:1;flex-direction:column;gap:3px}.project-link strong{overflow:hidden;color:inherit;font-size:13px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.project-link small{color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}.sidebar-bottom{display:flex;margin-top:auto;flex-direction:column;gap:2px}.profile{display:flex;align-items:center;min-height:58px;margin-top:10px;padding:12px 8px 2px;gap:10px;border-top:1px solid var(--border)}.profile>span:nth-child(2){display:flex;min-width:0;flex:1;flex-direction:column;gap:2px}.profile strong{font-size:13px;font-weight:600}.profile small{color:var(--muted);font-size:11px}.logout-item{color:#76514b}.logout-item:hover{color:#943f33;background:#fff3f1}.avatar{display:inline-grid;flex:0 0 auto;width:30px;height:30px;color:var(--ink-soft);font-size:12px;font-weight:650;line-height:1;background:#e9e9e7;border:1px solid #dededb;border-radius:50%;place-items:center}.avatar.small{width:24px;height:24px;font-size:10px}.avatar.unassigned{color:var(--faint);background:var(--surface-subtle);border-style:dashed}.icon-button{display:inline-grid;width:38px;height:38px;padding:0;color:var(--muted);background:transparent;border:0;border-radius:var(--radius-sm);place-items:center}.icon-button:hover{color:var(--ink);background:var(--surface-hover)}.main-content{min-width:0;overflow-x:clip;flex:1}.main-content:focus{outline:0}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;height:64px;padding:0 30px;background:#ffffffeb;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.menu-button{display:none;margin-right:8px}.breadcrumb{display:flex;min-width:0;align-items:center;gap:7px;color:var(--muted);font-size:13px}.breadcrumb strong{display:block;overflow:hidden;color:var(--ink);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.top-actions{display:flex;align-items:center;margin-left:auto;gap:10px}.search-box{display:flex;align-items:center;width:268px;height:38px;padding:0 10px;gap:8px;color:var(--muted);background:var(--surface-subtle);border:1px solid var(--border);border-radius:var(--radius)}.search-box:focus-within{background:#fff;border-color:#9ca3af;box-shadow:0 0 0 3px #4f6b911f}.search-box input{min-width:0;flex:1;color:var(--ink);font-size:13px;background:transparent;border:0;outline:0}.search-box:has(input:disabled){opacity:.66}.search-box input::placeholder{color:#8b8f97}.search-box kbd{padding:2px 5px;color:#858991;font-size:10px;font-family:inherit;background:#ececeb;border:1px solid #dededd;border-radius:4px}.top-icon{position:relative}.notification-dot{position:absolute;top:8px;right:8px;width:6px;height:6px;background:var(--blocked);border:2px solid #fff;border-radius:50%}.page-stage{min-width:0;min-height:calc(100vh - 64px);transform-origin:top center}.page-body{width:100%;max-width:1600px;margin:0 auto;padding:32px 32px 52px}.page-loading{display:flex;align-items:center;justify-content:center;min-height:calc(100vh - 64px);gap:10px;color:var(--muted);font-size:14px}.workspace-state{display:flex;min-height:calc(100vh - 64px);align-items:center;justify-content:center;flex-direction:column;padding:48px 24px;text-align:center}.workspace-state-icon{display:grid;width:58px;height:58px;margin-bottom:20px;color:var(--ink-soft);background:#ececea;border:1px solid #dfdfdc;border-radius:16px;place-items:center}.workspace-state-eyebrow{margin:0 0 8px!important;color:var(--muted)!important;font-size:11px!important;font-weight:650;letter-spacing:.08em;text-transform:uppercase}.workspace-state h1{margin:0;color:var(--ink);font-size:clamp(26px,3vw,36px);font-weight:660;letter-spacing:-.04em}.workspace-state>p{max-width:440px;margin:10px 0 24px;color:var(--muted);font-size:14px;line-height:1.65}.workspace-state.error-state .workspace-state-icon{color:#9f4c3e;background:#fff1ef;border-color:#f0d2cd}.spinner{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.project-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:26px}.project-meta{display:flex;align-items:center;margin-bottom:10px;gap:10px;color:var(--muted);font-size:12px}.project-heading h1,.portfolio-heading h1{margin:0;color:var(--ink);font-size:clamp(25px,2.2vw,32px);font-weight:660;letter-spacing:-.035em}.project-heading p,.portfolio-heading p{max-width:690px;margin:7px 0 0;color:var(--muted);font-size:14px;line-height:1.55}.heading-actions{display:flex;align-items:center;gap:8px}.heading-icon{width:40px;height:40px;background:#fff;border:1px solid var(--border-strong)}.button{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 14px;gap:7px;font-size:13px;font-weight:600;border-radius:var(--radius-sm)}.button.primary{color:#fff;background:var(--primary);border:1px solid var(--primary)}.button.primary:hover{background:var(--primary-hover)}.button.secondary{color:var(--ink-soft);background:#fff;border:1px solid var(--border-strong)}.button.secondary:hover{color:var(--ink);background:var(--surface-subtle);border-color:#b7b7bc}.button.danger-ghost{color:#a54c40;background:transparent;border:1px solid transparent}.button.danger-ghost:hover{background:#fff3f1;border-color:#f1d0ca}.status-badge{display:inline-flex;align-items:center;width:fit-content;min-height:24px;padding:3px 8px;gap:6px;color:var(--muted);font-size:11px;font-weight:550;white-space:nowrap;background:#f1f1ef;border:1px solid #e2e2df;border-radius:999px}.status-badge i{width:6px;height:6px;background:var(--faint);border-radius:50%}.status-badge.state-active{color:#334155;background:#eef1f4;border-color:#d8dde3}.status-badge.state-active i{background:var(--active)}.status-badge.state-done{color:#46695b;background:#edf4f0;border-color:#d7e5de}.status-badge.state-done i{background:var(--done)}.status-badge.state-blocked{color:#9f4c3e;background:#fff1ef;border-color:#f0d2cd}.status-badge.state-blocked i{background:var(--blocked)}.summary-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.summary-item{position:relative;min-width:0;padding:18px 20px}.summary-item+.summary-item:before{position:absolute;top:18px;bottom:18px;left:0;width:1px;content:"";background:var(--border)}.summary-item>span{display:block;margin-bottom:8px;color:var(--muted);font-size:12px}.summary-item>strong{color:var(--ink);font-size:24px;font-weight:650;font-variant-numeric:tabular-nums;letter-spacing:-.03em}.summary-item>strong small{margin-left:3px;color:var(--muted);font-size:12px;font-weight:500}.summary-item p{overflow:hidden;margin:5px 0 0;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.summary-progress{position:absolute;right:20px;bottom:18px;left:20px;height:3px;overflow:hidden;background:#ececea;border-radius:999px}.summary-progress i{display:block;height:100%;background:var(--primary);border-radius:inherit}.summary-item:first-child{padding-bottom:30px}.assistant-note{display:flex;align-items:center;min-height:48px;margin-bottom:16px;padding:8px 10px;gap:10px;background:#efefed;border:1px solid #e1e1de;border-radius:var(--radius)}.assistant-icon{display:grid;flex:0 0 auto;width:30px;height:30px;color:var(--ink-soft);background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);place-items:center}.assistant-note p{display:flex;min-width:0;flex:1;margin:0;gap:8px;color:var(--muted);font-size:12px;line-height:1.45}.assistant-note p strong{color:var(--ink);white-space:nowrap}.assistant-note>button{min-height:32px;padding:0 9px;color:var(--ink-soft);font-size:12px;font-weight:600;background:transparent;border:0;border-radius:var(--radius-sm)}.assistant-note>button:hover{color:var(--ink);background:#ffffffa6}.workspace-layout{display:grid;grid-template-columns:minmax(0,1fr) 288px;align-items:start;gap:16px}.plan-panel{min-width:0;overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.plan-toolbar{display:flex;min-height:58px;align-items:center;justify-content:space-between;padding:9px 12px 9px 16px;gap:14px;border-bottom:1px solid var(--border)}.view-tabs{display:inline-flex;padding:3px;gap:2px;background:#f0f0ee;border-radius:var(--radius)}.view-tabs button{position:relative;isolation:isolate;min-height:32px;padding:0 12px;color:var(--muted);font-size:12px;font-weight:550;background:transparent;border:0;border-radius:var(--radius-sm)}.view-tabs button:hover{color:var(--ink)}.view-tabs button.selected{color:var(--ink);background:transparent}.view-tab-surface{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background:#fff;border:1px solid #e4e4e2;border-radius:var(--radius-sm);box-shadow:0 1px 2px #18181b14}.view-tab-label{position:relative;z-index:1}.plan-view-stage{min-width:0;transform-origin:top center}.toolbar-actions{display:flex;align-items:center;gap:7px}.select-control{display:flex;align-items:center;height:34px;padding-left:9px;gap:4px;color:var(--muted);background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm)}.select-control:focus-within{border-color:#9ca3af;box-shadow:0 0 0 3px #4f6b911a}.select-control select{height:100%;padding:0 26px 0 3px;color:var(--ink-soft);font-size:12px;background:transparent;border:0;outline:0}.result-line{display:flex;align-items:center;min-height:42px;padding:0 16px;gap:7px;color:var(--muted);font-size:12px;border-bottom:1px solid var(--border)}.result-line strong{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}.result-line button{min-height:30px;margin-left:auto;padding:0 8px;color:var(--muted);font-size:11px;background:transparent;border:0;border-radius:var(--radius-sm)}.result-line button:hover{color:var(--ink);background:var(--surface-hover)}.gantt-scroll{max-width:100%;overflow:auto;scrollbar-color:#cbcbd0 transparent}.gantt{display:grid;min-width:calc(320px + var(--timeline-width));grid-template-columns:320px var(--timeline-width)}.gantt-header{position:sticky;top:0;z-index:5;height:63px;background:var(--surface-subtle);border-bottom:1px solid var(--border)}.gantt-header.task-side{left:0;z-index:8;display:flex;align-items:center;justify-content:space-between;padding:0 16px;color:var(--ink-soft);font-size:12px;font-weight:600;border-right:1px solid var(--border)}.gantt-header.task-side small{color:var(--muted);font-size:11px;font-weight:500}.timeline-side{overflow:hidden}.month-row{display:flex;height:29px;border-bottom:1px solid var(--border)}.month-row span{display:flex;align-items:center;padding:0 9px;color:var(--muted);font-size:11px;font-weight:550;border-right:1px solid var(--border)}.day-row{display:flex;height:34px}.day-row>span{display:flex;flex:0 0 34px;align-items:center;justify-content:center;gap:3px;color:var(--ink-soft);font-size:11px;font-variant-numeric:tabular-nums;border-right:1px solid #efefed}.day-row>span small{color:var(--faint);font-size:9px}.day-row>span.weekend{color:var(--muted);background:#f4f4f2}.day-row>span.today{color:#fff;font-weight:650;background:var(--primary)}.day-row>span.today small{color:#d7d9dc}.gantt-task{position:sticky;left:0;z-index:4;display:flex;align-items:center;width:320px;height:58px;padding:0 13px 0 16px;gap:10px;color:var(--ink);text-align:left;background:#fff;border:0;border-right:1px solid var(--border);border-bottom:1px solid #eeeeec}.gantt-task:hover{background:var(--surface-subtle)}.task-state{display:inline-block;flex:0 0 auto;width:8px;height:8px;background:var(--faint);border:2px solid transparent;border-radius:50%}.task-state.state-active{background:var(--active)}.task-state.state-done{background:var(--done)}.task-state.state-blocked{background:var(--blocked)}.task-state.state-pending{background:#fff;border-color:#a1a1aa}.gantt-task-copy{display:flex;min-width:0;flex:1;flex-direction:column;gap:4px}.gantt-task-copy strong{overflow:hidden;font-size:12px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.gantt-task-copy small,.compact-progress{color:var(--muted);font-size:10px;font-variant-numeric:tabular-nums}.gantt-track{position:relative;display:flex;height:58px;border-bottom:1px solid #eeeeec}.gantt-track>i{display:block;flex:0 0 34px;height:100%;border-right:1px solid #f0f0ee}.gantt-track>i.weekend{background:#fafaf8}.gantt-track>i.today{background:#2f343b0e;border-right-color:#8d9298}.gantt-bar{position:absolute;top:18px;height:22px;overflow:hidden;color:#fff;background:var(--active);border:0;border-radius:4px}.gantt-bar:hover{filter:brightness(.92)}.gantt-bar>span{position:absolute;inset:0 auto 0 0;background:#ffffff38}.gantt-bar em{position:relative;z-index:1;display:block;overflow:hidden;padding:0 7px;font-size:9px;font-style:normal;font-weight:600;line-height:22px;text-overflow:ellipsis;white-space:nowrap}.gantt-bar.state-pending{color:#3f3f46;background:#d8d8d6}.gantt-bar.state-done{background:var(--done)}.gantt-bar.state-blocked{background:var(--blocked)}.gantt-legend{display:flex;align-items:center;min-height:42px;padding:0 16px;gap:16px;color:var(--muted);font-size:11px;border-top:1px solid var(--border)}.gantt-legend>span{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.gantt-legend i{width:8px;height:8px;border-radius:2px}.legend-current{background:var(--primary)}.legend-progress{background:var(--active)}.legend-blocked{background:var(--blocked)}.gantt-legend p{margin-left:auto}.table-wrap{overflow:auto}.task-table{width:100%;min-width:900px;border-collapse:collapse}.task-table th{height:40px;padding:0 12px;color:var(--muted);font-size:11px;font-weight:550;text-align:left;background:var(--surface-subtle);border-bottom:1px solid var(--border)}.task-table td{max-width:220px;height:54px;padding:7px 12px;overflow:hidden;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid #eeeeec}.task-table tbody tr:hover{background:#fafaf9}.task-title{display:flex;align-items:center;max-width:260px;padding:5px 0;gap:8px;overflow:hidden;color:var(--ink);font-size:12px;font-weight:600;text-align:left;text-overflow:ellipsis;white-space:nowrap;background:transparent;border:0}.owner-cell{display:inline-flex;align-items:center;gap:7px;color:var(--ink-soft)}.table-progress{display:flex;align-items:center;gap:7px}.table-progress>span{width:64px;height:4px;overflow:hidden;background:#e6e6e4;border-radius:999px}.table-progress i{display:block;height:100%;background:var(--primary)}.table-progress em{width:30px;color:var(--muted);font-size:10px;font-style:normal}.board{display:grid;min-width:840px;grid-template-columns:repeat(4,minmax(190px,1fr));gap:1px;overflow:auto;background:var(--border)}.board-column{min-height:390px;padding:12px;background:#f8f8f6}.board-column>header{display:flex;align-items:center;justify-content:space-between;min-height:30px;margin-bottom:8px;color:var(--ink-soft);font-size:12px;font-weight:600}.board-column>header>span{display:inline-flex;align-items:center;gap:7px}.board-column>header em{color:var(--muted);font-size:11px;font-style:normal;font-weight:500}.board-stack{display:flex;flex-direction:column;gap:8px}.board-card{display:block;width:100%;padding:12px;color:var(--ink);text-align:left;background:#fff;border:1px solid var(--border);border-radius:var(--radius)}.board-card:hover{border-color:#c2c2c5;background:#fdfdfc}.board-card>strong{display:block;min-height:36px;font-size:12px;font-weight:600;line-height:1.5}.board-card>span{display:block;margin-top:8px;color:var(--muted);font-size:10px;font-variant-numeric:tabular-nums}.board-card-footer{display:flex;align-items:center;justify-content:space-between;margin-top:14px}.board-card-footer>span{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:10px}.board-card-footer em{color:var(--muted);font-size:10px;font-style:normal;font-variant-numeric:tabular-nums}.card-progress{height:3px;margin-top:9px;overflow:hidden;background:#e9e9e7;border-radius:999px}.card-progress i{display:block;height:100%;background:var(--primary)}.column-empty{padding:24px 8px;color:var(--faint);font-size:11px;text-align:center;border:1px dashed var(--border-strong);border-radius:var(--radius)}.calendar{min-width:760px;overflow:auto}.calendar-title{display:flex;align-items:center;justify-content:space-between;min-height:52px;padding:0 16px;border-bottom:1px solid var(--border)}.calendar-title strong{font-size:13px}.calendar-title span{color:var(--muted);font-size:11px}.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr)}.calendar-weekdays span{padding:9px 10px;color:var(--muted);font-size:10px;background:var(--surface-subtle);border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.calendar-grid>div{min-height:104px;padding:7px;overflow:hidden;background:#fff;border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.calendar-grid>div>span{display:grid;width:24px;height:24px;margin-bottom:4px;color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums;border-radius:50%;place-items:center}.calendar-grid>div.outside{background:#fafaf9}.calendar-grid>div.outside>span{color:var(--faint)}.calendar-grid>div.today>span{color:#fff;background:var(--primary)}.calendar-task{display:block;width:100%;margin:3px 0;padding:4px 6px;overflow:hidden;color:var(--ink-soft);font-size:9px;text-align:left;text-overflow:ellipsis;white-space:nowrap;background:#eeefef;border:0;border-left:3px solid var(--active);border-radius:3px}.calendar-task.state-done{border-left-color:var(--done)}.calendar-task.state-blocked{border-left-color:var(--blocked)}.calendar-task.state-pending{border-left-color:var(--faint)}.project-rail{display:flex;flex-direction:column;gap:12px}.rail-section{padding:16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.rail-section>header{display:flex;min-height:38px;align-items:flex-start;justify-content:space-between;margin-bottom:7px}.rail-section>header>div{display:flex;flex-direction:column;gap:4px}.rail-section>header span{color:var(--muted);font-size:11px}.rail-section>header strong{font-size:14px;font-weight:650}.milestone-list,.risk-list,.workload-list{display:flex;flex-direction:column}.milestone-item,.risk-item{display:flex;align-items:center;min-height:50px;gap:10px;border-top:1px solid #eeeeec}.milestone-mark{display:grid;flex:0 0 auto;width:24px;height:24px;padding:0;color:#fff;background:#fff;border:2px solid #bcbcc1;border-radius:50%;place-items:center}.milestone-mark.state-done{background:var(--done);border-color:var(--done)}.milestone-mark.state-active{background:#fff;border-color:var(--active);box-shadow:inset 0 0 0 4px #fff}.milestone-item>div,.risk-item>div{display:flex;min-width:0;flex:1;flex-direction:column;gap:3px}.milestone-item strong,.risk-item strong{overflow:hidden;font-size:11px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.milestone-item small,.risk-item small{color:var(--muted);font-size:10px}.risk-level{display:grid;flex:0 0 auto;width:26px;height:24px;color:var(--muted);font-size:10px;font-weight:650;background:#efefed;border-radius:5px;place-items:center}.risk-level.level-高{color:#a34e41;background:#fff0ee}.risk-level.level-中{color:#8a5b1f;background:#f9f1e4}.risk-level.level-低{color:#4a6c5e;background:#edf4f0}.rail-action{min-height:30px;padding:0 7px;color:var(--muted);font-size:10px;font-weight:600;background:transparent;border:0;border-radius:var(--radius-sm)}.rail-action:hover{color:var(--ink);background:var(--surface-hover)}.workload-item{padding:9px 0;border-top:1px solid #eeeeec}.workload-item>div{display:flex;align-items:center;gap:7px;color:var(--ink-soft);font-size:11px}.workload-item>div em{margin-left:auto;color:var(--muted);font-size:10px;font-style:normal;font-variant-numeric:tabular-nums}.workload-item>span{display:block;height:4px;margin-top:8px;overflow:hidden;background:#e9e9e7;border-radius:999px}.workload-item>span i{display:block;height:100%;background:var(--primary);border-radius:inherit}.empty-inline{padding:17px 0 10px;color:var(--muted);font-size:11px;line-height:1.5}.empty-state{display:flex;min-height:360px;align-items:center;justify-content:center;flex-direction:column;padding:40px;color:var(--muted);text-align:center}.empty-state>span{display:grid;width:42px;height:42px;margin-bottom:14px;color:var(--muted);background:#efefed;border-radius:50%;place-items:center}.empty-state strong{color:var(--ink-soft);font-size:14px}.empty-state p{margin:6px 0 0;font-size:12px}.empty-state .button{margin-top:18px}.portfolio-heading{margin-bottom:26px}.portfolio-heading>div>span{display:block;margin-bottom:8px;color:var(--muted);font-size:12px}.portfolio-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:16px}.portfolio-projects,.focus-list{padding:18px;background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg)}.portfolio-projects>header,.focus-list>header{margin-bottom:14px}.portfolio-projects>header span,.focus-list>header span{color:var(--muted);font-size:11px}.portfolio-projects h2,.focus-list h2{margin:4px 0 0;font-size:16px;font-weight:650;letter-spacing:-.015em}.project-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.project-card{display:block;min-height:190px;padding:16px;color:var(--ink);text-align:left;background:var(--surface-subtle);border:1px solid var(--border);border-radius:var(--radius)}.project-card:hover{background:#f6f6f4;border-color:#c8c8cc}.project-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.project-card>strong{font-size:14px;font-weight:650}.project-card-progress{display:flex;align-items:center;gap:9px}.project-card-progress>span{flex:1;height:4px;overflow:hidden;background:#e2e2e0;border-radius:999px}.project-card-progress i{display:block;height:100%;background:var(--primary)}.project-card-progress em{color:var(--muted);font-size:10px;font-style:normal}.project-card footer{display:flex;align-items:center;margin-top:16px;gap:12px;color:var(--muted);font-size:10px}.project-card footer svg{margin-left:auto}.focus-item{display:flex;align-items:center;min-height:58px;gap:10px;border-top:1px solid #eeeeec}.focus-item>div{display:flex;min-width:0;flex:1;flex-direction:column;gap:4px}.focus-item strong{overflow:hidden;font-size:11px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.focus-item small{color:var(--muted);font-size:10px}.focus-item em{color:var(--muted);font-size:10px;font-style:normal}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;overflow:auto;padding:24px;background:#18181b7a;place-items:center}.dialog{width:min(540px,calc(100vw - 32px));max-height:calc(100vh - 48px);overflow:auto;background:#fff;border:1px solid #d4d4d8;border-radius:var(--radius-lg);box-shadow:var(--shadow-dialog)}.task-dialog{width:min(620px,calc(100vw - 32px))}.compact-dialog{width:min(480px,calc(100vw - 32px))}.member-dialog{width:min(620px,calc(100vw - 32px))}.dialog-header{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 22px 16px;border-bottom:1px solid var(--border)}.dialog-header>div{min-width:0}.dialog-header span{display:block;margin-bottom:5px;color:var(--muted);font-size:11px}.dialog-header h2{margin:0;overflow:hidden;font-size:19px;font-weight:650;letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap}.dialog-body{padding:20px 22px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.field{display:flex;min-width:0;flex-direction:column;gap:7px}.field.full{margin-bottom:16px}.field>span{color:var(--ink-soft);font-size:12px;font-weight:550}.field input,.field select,.field textarea{width:100%;min-height:42px;padding:9px 10px;color:var(--ink);font-size:13px;background:#fff;border:1px solid var(--border-strong);border-radius:var(--radius-sm);outline:0}.field textarea{resize:vertical;line-height:1.5}.field input:hover,.field select:hover,.field textarea:hover{border-color:#b7b7bc}.field input:focus,.field select:focus,.field textarea:focus{border-color:#7b8796;box-shadow:0 0 0 3px #4f6b911f}.input-suffix{position:relative}.input-suffix input{padding-right:42px}.input-suffix em{position:absolute;top:50%;right:10px;color:var(--muted);font-size:11px;font-style:normal;transform:translateY(-50%)}.range-field{margin-top:18px}.range-field>span{display:flex;align-items:center;justify-content:space-between}.range-field>span strong{color:var(--ink);font-size:12px;font-variant-numeric:tabular-nums}.range-field input[type=range]{min-height:28px;padding:0;accent-color:var(--primary);border:0}.field-error{margin:8px 0 0;color:#a34e41;font-size:11px}.dialog-footer{display:flex;align-items:center;justify-content:space-between;padding:14px 22px;background:var(--surface-subtle);border-top:1px solid var(--border)}.dialog-footer>div{display:flex;align-items:center;gap:8px}.member-dialog-body{padding:18px 22px 8px}.member-project-context{display:flex;align-items:center;min-height:58px;margin-bottom:14px;padding:10px 12px;gap:11px;background:var(--surface-subtle);border:1px solid var(--border);border-radius:var(--radius)}.member-project-context>span{display:grid;flex:0 0 auto;width:34px;height:34px;color:var(--ink-soft);background:#ececea;border-radius:var(--radius-sm);place-items:center}.member-project-context>div{display:flex;min-width:0;flex:1;flex-direction:column;gap:3px}.member-project-context strong{overflow:hidden;font-size:12px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.member-project-context small{color:var(--muted);font-size:11px}.member-project-context em{color:var(--muted);font-size:11px;font-style:normal;white-space:nowrap}.member-search{display:flex;align-items:center;height:42px;margin-bottom:10px;padding:0 11px;gap:8px;color:var(--muted);border:1px solid var(--border-strong);border-radius:var(--radius-sm)}.member-search:focus-within{border-color:#7b8796;box-shadow:0 0 0 3px #4f6b911f}.member-search input{min-width:0;flex:1;color:var(--ink);font-size:13px;background:transparent;border:0;outline:0}.member-error{display:flex;min-height:42px;margin-bottom:10px;align-items:center;padding:8px 10px;gap:8px;color:#93473b;font-size:11px;line-height:1.4;background:#fff5f3;border:1px solid #edcec8;border-radius:var(--radius-sm)}.member-list{max-height:min(390px,48vh);overflow:auto;border-top:1px solid var(--border);scrollbar-width:thin}.member-row{position:relative;display:flex;min-height:66px;align-items:center;padding:9px 4px;gap:10px;cursor:pointer;border-bottom:1px solid var(--border)}.member-row:hover{background:var(--surface-subtle)}.member-row:focus-within{z-index:1;outline:3px solid rgba(79,107,145,.25);outline-offset:-3px}.member-row>input{position:absolute;width:1px;height:1px;opacity:0}.member-row:has(input:disabled){cursor:default}.member-avatar{display:grid;flex:0 0 auto;width:32px;height:32px;color:var(--ink-soft);font-size:11px;font-weight:650;background:#ececea;border:1px solid #dfdfdc;border-radius:50%;place-items:center}.member-copy{display:flex;min-width:0;flex:1;flex-direction:column;gap:3px}.member-copy strong,.member-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.member-copy strong{color:var(--ink);font-size:12px;font-weight:630}.member-copy small{color:var(--muted);font-size:11px}.member-meta{color:var(--muted);font-size:10px;white-space:nowrap}.member-check{display:grid;flex:0 0 auto;width:22px;height:22px;color:#fff;background:transparent;border:1px solid var(--border-strong);border-radius:5px;place-items:center}.member-row.selected .member-check{background:var(--primary);border-color:var(--primary)}.member-loading,.member-empty{display:flex;min-height:120px;align-items:center;justify-content:center;gap:8px;color:var(--muted);font-size:12px}.member-footer-note{color:var(--muted);font-size:10px;line-height:1.4}.toast{position:fixed;right:24px;bottom:24px;z-index:140;display:flex;align-items:center;min-height:44px;max-width:min(380px,calc(100vw - 32px));padding:9px 14px 9px 9px;gap:9px;color:#fff;font-size:12px;font-weight:550;background:#272b31;border:1px solid #3c4149;border-radius:var(--radius);box-shadow:0 12px 30px #18181b33}.toast>span{display:grid;width:26px;height:26px;background:#ffffff1a;border-radius:var(--radius-sm);place-items:center}.toast.error{background:#8f4036;border-color:#a85044}.nav-scrim{display:none}.sidebar [data-tooltip]{position:relative}.sidebar [data-tooltip]:after{position:absolute;top:50%;left:calc(100% + 12px);z-index:120;width:max-content;max-width:190px;padding:6px 8px;color:#fff;font-size:11px;font-weight:550;line-height:1.3;pointer-events:none;content:attr(data-tooltip);background:#272b31;border:1px solid #3c4149;border-radius:var(--radius-sm);box-shadow:0 6px 18px #18181b24;opacity:0;transform:translate(4px,-50%);visibility:hidden;transition:opacity .12s ease,transform .15s var(--ease-out-quart),visibility 0s linear .15s}@media(min-width:1280px){.sidebar.collapsed{--sidebar-size: var(--sidebar-rail);--sidebar-padding-x: 11px;overflow:visible}.sidebar.collapsed .sidebar-copy{max-width:0;opacity:0;pointer-events:none}.sidebar.collapsed .brand,.sidebar.collapsed .workspace-switch,.sidebar.collapsed .nav-item,.sidebar.collapsed .project-link,.sidebar.collapsed .profile{justify-content:center;gap:0}.sidebar.collapsed .brand{padding:0}.sidebar.collapsed .workspace-switch{padding:8px 0}.sidebar.collapsed .nav-item{padding-right:0;padding-left:0}.sidebar.collapsed .nav-item em{position:absolute;top:3px;right:2px;z-index:2;min-width:16px;padding:1px 4px;font-size:9px}.sidebar.collapsed .project-nav{margin-top:22px}.sidebar.collapsed .nav-caption{justify-content:center;padding-right:0;padding-left:0}.sidebar.collapsed .project-link,.sidebar.collapsed .profile{padding-right:0;padding-left:0}.sidebar.collapsed [data-tooltip]:hover:after,.sidebar.collapsed [data-tooltip]:focus-visible:after{opacity:1;transform:translateY(-50%);visibility:visible;transition-delay:.42s,.42s,0s}}.capacity-records{display:flex;margin-top:9px;flex-wrap:wrap;gap:5px}.capacity-records button{display:inline-flex;min-height:28px;align-items:center;padding:0 7px;gap:5px;color:var(--ink-soft);font-size:9px;background:#f4f4f2;border:1px solid var(--border);border-radius:5px}.capacity-records button:not(:disabled):hover{color:var(--ink);border-color:#b8bbc0}.capacity-records time{color:var(--muted)}@media(max-width:1279px){.workspace-layout{grid-template-columns:minmax(0,1fr)}.project-rail{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.portfolio-grid{grid-template-columns:minmax(0,1fr) 290px}}@media(min-width:1024px)and (max-width:1279px){.sidebar{--sidebar-size: var(--sidebar-rail);--sidebar-padding-x: 11px;overflow:visible}.sidebar-toggle{display:none}.sidebar .sidebar-copy{max-width:0;opacity:0;pointer-events:none}.sidebar .brand,.sidebar .workspace-switch,.sidebar .nav-item,.sidebar .project-link,.sidebar .profile{justify-content:center;gap:0}.sidebar .brand{padding:0}.sidebar .workspace-switch{padding:8px 0}.sidebar .nav-item{padding-right:0;padding-left:0}.sidebar .nav-item em{position:absolute;top:3px;right:2px;z-index:2;min-width:16px;padding:1px 4px;font-size:9px}.sidebar .project-nav{margin-top:22px}.sidebar .nav-caption{justify-content:center;padding-right:0;padding-left:0}.sidebar .project-link,.sidebar .profile{padding-right:0;padding-left:0}.sidebar [data-tooltip]:hover:after,.sidebar [data-tooltip]:focus-visible:after{opacity:1;transform:translateY(-50%);visibility:visible;transition-delay:.42s,.42s,0s}}@media(max-width:1023px){.sidebar{--sidebar-size: 282px;--sidebar-padding-x: 14px;position:fixed;bottom:0;left:0;z-index:80;width:var(--sidebar-size);height:100vh;height:100dvh;padding-bottom:max(14px,env(safe-area-inset-bottom));overflow:hidden;pointer-events:none;transform:translate(-102%);visibility:hidden;transition:transform .22s var(--ease-out-quart),visibility 0s linear .22s}.sidebar.open{pointer-events:auto;transform:translate(0);visibility:visible;transition-delay:0s}.mobile-close,.menu-button{display:inline-grid!important}.sidebar-toggle{display:none}.mobile-close,.menu-button{width:44px;height:44px}.nav-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;display:block;padding:0;background:#18181b5c;border:0;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.topbar{padding:0 20px}.page-body{padding:26px 20px 44px}.portfolio-grid{grid-template-columns:1fr}.project-rail{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:860px){.auth-page{display:block;background:#fff}.auth-context{min-height:73px;padding:20px 24px;justify-content:center;background:var(--surface-subtle);border-right:0;border-bottom:1px solid var(--border)}.auth-panel{align-items:flex-start;padding:42px 24px 56px}}@media(max-width:767px){.topbar{height:58px;padding:0 12px}.breadcrumb>span,.breadcrumb svg{display:none}.search-box{width:min(44vw,220px)}.search-box kbd,.top-icon{display:none}.page-body{padding:22px 14px 36px}.project-heading{align-items:flex-start;flex-direction:column;margin-bottom:20px;gap:16px}.heading-actions{width:100%}.heading-actions .button{flex:1}.summary-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.summary-item:nth-child(3):before{display:none}.summary-item:nth-child(n+3){border-top:1px solid var(--border)}.assistant-note{align-items:flex-start}.assistant-note p{flex-direction:column;gap:2px}.assistant-note>button{display:none}.plan-toolbar{align-items:stretch;flex-direction:column;padding:10px}.view-tabs{display:grid;grid-template-columns:repeat(4,1fr)}.toolbar-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.select-control select{width:100%}.project-rail{grid-template-columns:1fr}.gantt{grid-template-columns:200px var(--timeline-width);min-width:calc(200px + var(--timeline-width))}.gantt-task{width:200px}.gantt-task,.gantt-header.task-side{padding-left:12px}.compact-progress,.gantt-legend p{display:none}.project-cards,.form-grid{grid-template-columns:1fr}.dialog-header{padding:18px 18px 14px}.dialog-body{padding:18px}.dialog-footer{align-items:stretch;flex-direction:column-reverse;padding:12px 18px;gap:6px}.dialog-footer>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.dialog-footer>.button,.dialog-footer>div .button{width:100%}.member-dialog-body{padding:16px 18px 6px}.member-footer-note{text-align:center}.field input,.field select,.field textarea,.auth-input-wrap input{font-size:16px}.modal-backdrop{padding:16px;place-items:end center}.dialog{width:100%;max-height:calc(100vh - 32px);border-radius:var(--radius-lg) var(--radius-lg) 0 0}.toast{right:16px;bottom:16px;left:16px;max-width:none}}@media(max-width:420px){.auth-context{min-height:66px;padding:16px 18px}.auth-panel{padding:30px 18px 44px}.auth-card-header{margin-bottom:21px}.auth-card-header h1{font-size:25px}.auth-code-control{grid-template-columns:minmax(0,1fr) 112px}.auth-code-control>button{font-size:11px}.top-actions>.avatar{display:none}.search-box{width:42vw;min-width:135px}.summary-item{padding:15px 14px}.summary-item>strong{font-size:21px}.summary-progress{right:14px;bottom:14px;left:14px}.view-tabs button{padding:0 7px}.button{padding:0 10px}.member-manage-button{width:44px;flex:0 0 44px!important;overflow:hidden;padding:0;font-size:0}.member-manage-button svg{width:17px;height:17px}.member-meta{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.spinner{animation:none}}.app-shell{display:grid;grid-template-columns:var(--sidebar-expanded) minmax(0,1fr);min-height:100vh;min-height:100dvh;background:#f5f5f3;transition:grid-template-columns .19s var(--ease-out-quart)}.workspace{min-width:0}.app-shell.sidebar-collapsed{grid-template-columns:var(--sidebar-rail) minmax(0,1fr)}.sidebar{position:sticky;top:0;width:auto;height:100vh;height:100dvh;padding:16px 14px 14px;overflow:hidden}.sidebar-header{display:flex;min-height:42px;align-items:center;justify-content:space-between;gap:6px}.sidebar .brand{min-width:0;padding:0 6px;color:var(--ink);background:transparent;border:0}.sidebar .brand strong{overflow:hidden;font-size:16px;text-overflow:ellipsis;white-space:nowrap}.collapse-button{flex:0 0 auto}.primary-nav{display:flex;margin-top:18px;flex-direction:column;gap:2px}.primary-nav .nav-item{min-height:42px}.primary-nav .nav-item>i{position:absolute;top:10px;bottom:10px;left:0;width:2px;background:var(--ink);border-radius:0 3px 3px 0}.primary-nav .nav-item.active{background:#f0f0ee}.sidebar-projects{min-height:0;margin-top:24px;overflow:hidden}.sidebar-projects>header{display:flex;height:34px;align-items:center;justify-content:space-between;padding:0 4px 0 10px;color:var(--muted);font-size:11px;font-weight:600}.project-nav-item{display:flex;width:100%;min-height:43px;align-items:center;padding:6px 8px;gap:9px;color:var(--muted);text-align:left;background:transparent;border:0;border-radius:var(--radius-sm)}.project-nav-item:hover,.project-nav-item.active{color:var(--ink);background:#f4f4f2}.project-nav-item>i{display:grid;width:25px;height:25px;flex:0 0 auto;color:var(--ink-soft);font-size:10px;font-style:normal;font-weight:650;background:#e8e8e5;border-radius:5px;place-items:center}.project-nav-item>span{min-width:0;flex:1;overflow:hidden;font-size:12px;font-weight:560;text-overflow:ellipsis;white-space:nowrap}.project-nav-item>em{font-size:10px;font-style:normal;font-variant-numeric:tabular-nums}.sidebar-footer{display:flex;margin-top:auto;flex-direction:column;gap:2px}.sidebar-footer .profile{padding:10px 7px 5px}.sidebar-footer .profile>span:last-child{display:flex;min-width:0;flex:1;flex-direction:column}.sidebar-footer .profile strong,.sidebar-footer .profile small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-footer .logout{color:#80544d}.sidebar-footer .logout:hover{color:#973e32;background:#fff2ef}.app-shell.sidebar-collapsed .sidebar{padding-inline:11px}.app-shell.sidebar-collapsed .sidebar .brand strong,.app-shell.sidebar-collapsed .nav-item span,.app-shell.sidebar-collapsed .sidebar-projects header span,.app-shell.sidebar-collapsed .project-nav-item span,.app-shell.sidebar-collapsed .project-nav-item em,.app-shell.sidebar-collapsed .profile>span:last-child{display:none}.app-shell.sidebar-collapsed .sidebar-header,.app-shell.sidebar-collapsed .nav-item,.app-shell.sidebar-collapsed .project-nav-item,.app-shell.sidebar-collapsed .profile{justify-content:center}.app-shell.sidebar-collapsed .nav-item,.app-shell.sidebar-collapsed .project-nav-item{padding-inline:0}@media(min-width:1024px){.app-shell.sidebar-collapsed .sidebar{padding-inline:6px}.app-shell.sidebar-collapsed .sidebar-header{height:76px;min-height:76px;flex-direction:column;justify-content:flex-start;gap:8px}.app-shell.sidebar-collapsed .sidebar .brand{width:34px;min-width:34px;height:34px;min-height:34px;padding:0;flex:0 0 34px;justify-content:center;gap:0}.app-shell.sidebar-collapsed .sidebar .brand-mark{width:28px;height:28px}.app-shell.sidebar-collapsed .collapse-button{width:34px;height:34px;flex:0 0 34px}.app-shell.sidebar-collapsed .sidebar-projects>header{justify-content:center;padding-inline:0}}.topbar{padding:0 28px;gap:14px}.breadcrumbs{display:flex;min-width:0;align-items:center;gap:7px;color:var(--muted);font-size:12px}.breadcrumbs strong,.breadcrumbs h1{min-width:0;margin:0;overflow:hidden;color:var(--ink);font-size:inherit;font-weight:620;text-overflow:ellipsis;white-space:nowrap}.global-search{display:flex;width:min(270px,30vw);height:38px;margin-left:auto;align-items:center;padding:0 10px;gap:8px;color:var(--muted);background:#f7f7f6;border:1px solid var(--border);border-radius:var(--radius)}.global-search:focus-within,.search-control:focus-within,.select-control:focus-within{background:#fff;border-color:#9da1a8;box-shadow:0 0 0 3px #4f6b911c}.global-search input,.search-control input{min-width:0;flex:1;color:var(--ink);font-size:13px;background:transparent;border:0;outline:0}.notification-button{position:relative;display:grid;width:40px;height:40px;padding:0;color:var(--muted);background:transparent;border:0;border-radius:var(--radius-sm);place-items:center}.notification-button:hover{color:var(--ink);background:var(--surface-hover)}.notification-button>span{position:absolute;top:2px;right:0;min-width:18px;height:18px;padding:0 4px;color:#fff;font-size:9px;font-weight:700;line-height:18px;background:#a8483b;border:2px solid #fff;border-radius:10px}.main-content{min-height:calc(100vh - 64px)}.page-body{max-width:1540px;padding:30px clamp(22px,3vw,42px) 56px}.page-heading{display:flex;min-height:48px;margin-bottom:20px;align-items:center;justify-content:space-between;gap:16px}.page-heading h1{margin:0;color:var(--ink);font-size:clamp(24px,2.2vw,31px);font-weight:680;letter-spacing:-.04em}.page-heading h1 span{margin-left:9px;color:var(--muted);font-size:12px;font-weight:560;letter-spacing:0}.surface{background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg)}.surface-header{display:flex;min-height:54px;align-items:center;justify-content:space-between;padding:0 17px;border-bottom:1px solid var(--border)}.surface-header h2{display:flex;margin:0;align-items:center;gap:7px;font-size:14px;font-weight:650;letter-spacing:-.01em}.surface-header>span{color:var(--muted);font-size:11px}.surface-header select{height:34px;max-width:220px;color:var(--ink-soft);font-size:11px;background:#fff;border:1px solid var(--border);border-radius:6px}.metric-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:16px;background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg)}.metric{min-width:0;padding:17px 19px}.metric+.metric{border-left:1px solid var(--border)}.metric span{display:block;margin-bottom:7px;color:var(--muted);font-size:11px}.metric strong{font-size:23px;font-weight:650;font-variant-numeric:tabular-nums}.metric.alert strong{color:#a34739}.portfolio-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:16px}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));padding:12px;gap:10px}.project-grid .project-card{min-height:180px}.project-card{position:relative;padding:15px;background:#fbfbfa}.project-card>header{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.project-card>strong{display:block;overflow:hidden;font-size:14px;text-overflow:ellipsis;white-space:nowrap}.project-card>p{height:36px;margin:6px 0 15px;overflow:hidden;color:var(--muted);font-size:11px;line-height:1.55}.project-progress{display:flex;align-items:center;gap:9px}.project-progress>span,.progress-cell>i{height:4px;flex:1;overflow:hidden;background:#e8e8e5;border-radius:4px}.project-progress i,.progress-cell b{display:block;height:100%;background:#333941}.project-progress em{color:var(--muted);font-size:10px;font-style:normal}.project-card>footer{display:flex;margin-top:16px;align-items:center;gap:10px;color:var(--muted);font-size:10px}.project-card>footer svg{margin-left:auto}.milestone-agenda{overflow:hidden}.agenda-row{display:flex;width:100%;min-height:64px;align-items:center;padding:10px 14px;gap:12px;color:var(--ink);text-align:left;background:transparent;border:0;border-bottom:1px solid #eeeeec}.agenda-row:hover{background:#fafaf9}.agenda-row time{width:42px;color:var(--ink-soft);font-size:11px;font-weight:650;font-variant-numeric:tabular-nums}.agenda-row span{display:flex;min-width:0;flex:1;flex-direction:column;gap:3px}.agenda-row strong,.agenda-row small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agenda-row strong{font-size:11px}.agenda-row small{color:var(--muted);font-size:10px}.project-kicker{display:flex;margin-bottom:10px;align-items:center;flex-wrap:wrap;gap:7px}.role-badge,.archived-badge{display:inline-flex;min-height:24px;align-items:center;padding:3px 8px;gap:5px;color:#4a535f;font-size:10px;font-weight:600;background:#f2f3f4;border:1px solid #dfe1e4;border-radius:999px}.archived-badge{color:#715d40;background:#f8f2e8;border-color:#eadcc5}.project-heading{align-items:flex-start}.project-heading>div:first-child{min-width:0;flex:1}.project-heading h1{overflow-wrap:anywhere}.action-menu-wrap{position:relative}.action-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:30;width:190px;padding:5px;background:#fff;border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:0 12px 32px #18181b24;transform-origin:top right}.action-menu button{display:flex;width:100%;min-height:38px;align-items:center;padding:0 10px;gap:9px;color:var(--ink-soft);font-size:12px;text-align:left;background:transparent;border:0;border-radius:5px}.action-menu button:hover{color:var(--ink);background:#f3f3f1}.action-menu button.danger{color:#9b4539}.project-tabs{display:flex;height:46px;margin-bottom:15px;align-items:stretch;overflow-x:auto;background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);scrollbar-width:none}.project-tabs button{position:relative;display:flex;min-width:max-content;align-items:center;padding:0 17px;gap:7px;color:var(--muted);font-size:12px;font-weight:570;background:transparent;border:0}.project-tabs button:hover,.project-tabs button.active{color:var(--ink)}.project-tabs button>i{position:absolute;right:12px;bottom:-1px;left:12px;height:2px;background:var(--ink);border-radius:2px 2px 0 0}.summary-strip{overflow:hidden}.summary-strip>div{position:relative;min-width:0;padding:17px 19px}.summary-strip>div+div{border-left:1px solid var(--border)}.summary-strip>div>span,.summary-strip>div>small{display:block;color:var(--muted);font-size:10px}.summary-strip>div>strong{display:block;margin:6px 0 4px;overflow:hidden;font-size:20px;font-weight:650;font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap}.summary-strip>div>i{display:block;height:3px;margin-top:9px;overflow:hidden;background:#e9e9e6;border-radius:3px}.summary-strip>div>i b{display:block;height:100%;background:#333941}.schedule-alert{display:flex;min-height:54px;margin-bottom:12px;align-items:flex-start;padding:11px 14px;gap:10px;color:#775322;background:#fbf6ed;border:1px solid #eadbc1;border-radius:var(--radius)}.schedule-alert>div{display:flex;min-width:0;flex-direction:column;gap:3px}.schedule-alert strong{font-size:11px}.schedule-alert span{font-size:10px;line-height:1.5}.planning-surface{overflow:hidden}.planning-toolbar{display:flex;min-height:58px;align-items:center;justify-content:space-between;padding:9px 12px;gap:12px;border-bottom:1px solid var(--border)}.view-tabs{display:flex;min-height:36px;padding:3px;background:#f0f0ee;border-radius:7px}.view-tabs button{position:relative;min-width:62px;padding:0 11px;color:var(--muted);background:transparent;border:0;border-radius:5px}.view-tabs button>span{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;border:1px solid #dededb;border-radius:5px;box-shadow:0 1px 2px #0000000a}.view-tabs button em{position:relative;color:inherit;font-size:11px;font-style:normal;font-weight:600}.view-tabs button[aria-selected=true]{color:var(--ink)}.plan-filters,.standalone-filters{display:flex;align-items:center;gap:7px}.standalone-filters{margin-bottom:12px;justify-content:flex-end}.search-control,.select-control{display:flex;height:36px;align-items:center;padding:0 9px;gap:7px;color:var(--muted);background:#fff;border:1px solid var(--border);border-radius:6px}.search-control{width:190px}.search-control.full{width:100%}.select-control select{max-width:120px;color:var(--ink-soft);font-size:11px;background:transparent;border:0;outline:0}.gantt-mobile{display:none}.gantt-window-bar{display:flex;min-height:44px;align-items:center;justify-content:space-between;padding:5px 10px 5px 14px;gap:12px;background:#fafaf9;border-bottom:1px solid var(--border)}.gantt-window-bar>span{display:flex;min-width:0;align-items:baseline;gap:9px}.gantt-window-bar strong{overflow:hidden;color:var(--ink-soft);font-size:10px;font-weight:620;text-overflow:ellipsis;white-space:nowrap}.gantt-window-bar em{color:var(--muted);font-size:9px;font-style:normal;font-variant-numeric:tabular-nums;white-space:nowrap}.gantt-window-bar>div{display:flex;flex:0 0 auto;gap:2px}.gantt-window-bar .icon-button{width:32px;height:32px;min-height:32px}.gantt-scroll{max-width:100%;overflow:auto;scrollbar-width:thin}.gantt{display:grid;min-width:calc(264px + var(--timeline-width));grid-template-columns:264px var(--timeline-width)}.gantt-header{position:sticky;top:0;z-index:4;height:74px;background:#fff;border-bottom:1px solid var(--border)}.gantt-header.task-side{left:0;z-index:6;display:flex;align-items:center;justify-content:space-between;padding:0 15px;border-right:1px solid var(--border)}.gantt-header.task-side span{font-size:11px;font-weight:620}.gantt-header.task-side small{color:var(--muted);font-size:10px}.month-row,.day-row{display:flex}.month-row{height:32px;border-bottom:1px solid var(--border)}.month-row span{padding:9px 8px 0;color:var(--muted);font-size:9px;border-right:1px solid #eeeeec}.day-row{height:42px}.day-row>span{position:relative;display:flex;width:32px;flex:0 0 32px;align-items:center;justify-content:center;flex-direction:column;color:var(--ink-soft);font-size:10px;border-right:1px solid #eeeeec}.day-row small{margin-top:2px;color:var(--faint);font-size:8px}.day-row .non-working{background:#f7f7f5}.day-row .holiday{color:#995044;background:#fbf3f1}.day-row .today:after{position:absolute;bottom:2px;width:4px;height:4px;content:"";background:#9f493c;border-radius:50%}.gantt-row-group{display:contents}.gantt-task{position:sticky;left:0;z-index:3;display:flex;width:264px;min-height:58px;align-items:center;padding:8px 12px;gap:9px;color:var(--ink);text-align:left;background:#fff;border:0;border-right:1px solid var(--border);border-bottom:1px solid #eeeeec}.gantt-task:hover{background:#fafaf9}.gantt-task-copy{display:flex;min-width:0;flex:1;flex-direction:column;gap:3px}.gantt-task-copy strong,.gantt-task-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gantt-task-copy strong{font-size:11px}.gantt-task-copy small{color:var(--muted);font-size:9px}.critical-tag{display:inline-flex;align-items:center;padding:3px 5px;gap:3px;color:#8f4136;font-size:8px;font-weight:650;background:#fff0ed;border-radius:4px}.gantt-track{position:relative;display:flex;min-height:58px;overflow:hidden;border-bottom:1px solid #eeeeec}.gantt-track>i{width:32px;flex:0 0 32px;border-right:1px solid #f0f0ee}.gantt-track>i.non-working{background:#f7f7f5}.gantt-track>i.holiday{background:#fbf3f1}.gantt-track>i.today{background:#9f493c0b}.gantt-bar{position:absolute;top:13px;left:0;height:31px;overflow:hidden;padding:0 8px;color:#fff;background:#6d737c;border:0;border-radius:5px}.gantt-bar>span{position:absolute;inset:0 auto 0 0;background:#14181d59}.gantt-bar em{position:relative;font-size:9px;font-style:normal;font-weight:650}.gantt-bar.state-active{background:#596574}.gantt-bar.state-done{background:#668273}.gantt-bar.state-blocked,.gantt-bar.critical{background:#a75547}.gantt-baseline{position:absolute;top:47px;left:0;height:3px;background:#8c8f94;border-radius:2px;opacity:.72}.gantt-window-marker{position:absolute;top:20px;color:var(--muted);font-size:9px}.gantt-window-marker.before{left:7px}.gantt-window-marker.after{right:7px}.plan-legend{display:flex;min-height:44px;align-items:center;padding:0 14px;gap:14px;color:var(--muted);font-size:9px;border-top:1px solid var(--border)}.plan-legend span{display:flex;align-items:center;gap:5px}.plan-legend i{display:block;width:14px;height:3px}.legend-now{background:#a34b3e}.legend-critical{background:#a75547}.legend-baseline{background:#8c8f94}.legend-spacer{flex:1}.state-dot{display:inline-block;width:7px;height:7px;flex:0 0 auto;background:var(--faint);border-radius:50%}.state-dot.state-active{background:var(--active)}.state-dot.state-done{background:var(--done)}.state-dot.state-blocked{background:var(--blocked)}.task-table-wrap{overflow:auto}.task-table{width:100%;border-collapse:collapse}.task-table th{height:42px;padding:0 12px;color:var(--muted);font-size:9px;font-weight:620;text-align:left;white-space:nowrap;background:#fafaf9;border-bottom:1px solid var(--border)}.task-table td{height:56px;padding:8px 12px;color:var(--ink-soft);font-size:10px;border-bottom:1px solid #eeeeec}.task-name-button{display:flex;align-items:center;padding:0;gap:8px;color:var(--ink);text-align:left;background:transparent;border:0}.task-name-button>span{display:flex;flex-direction:column;gap:2px}.task-name-button strong{font-size:11px}.task-name-button small{color:#9b473b;font-size:8px}.person{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.progress-cell{display:flex;min-width:90px;align-items:center;gap:7px}.progress-cell em{font-size:9px;font-style:normal}.load-more{display:block;width:100%;min-height:42px;color:var(--muted);font-size:11px;background:#fafaf9;border:0;border-top:1px solid var(--border)}.board{display:grid;grid-template-columns:repeat(4,minmax(220px,1fr));align-items:start;gap:8px;padding:10px;overflow:auto}.board-column{min-width:0;background:#f6f6f4;border:1px solid #e8e8e5;border-radius:8px}.board-column>header{display:flex;height:42px;align-items:center;justify-content:space-between;padding:0 10px}.board-column>header span{display:flex;align-items:center;gap:6px;font-size:10px;font-weight:620}.board-column>header em{color:var(--muted);font-size:9px;font-style:normal}.board-stack{display:flex;padding:0 7px 7px;flex-direction:column;gap:6px}.board-card,.schedule-card{display:block;width:100%;padding:11px;color:var(--ink);text-align:left;background:#fff;border:1px solid var(--border);border-radius:7px}.board-card:hover{border-color:#bfc1c5}.board-card>strong{display:block;font-size:11px}.board-card>span{display:block;margin-top:6px;color:var(--muted);font-size:9px}.board-card footer{display:flex;margin-top:10px;align-items:center;justify-content:space-between}.board-card footer em{color:var(--muted);font-size:9px;font-style:normal}.board-card>i,.schedule-card>i{display:block;height:3px;margin-top:9px;overflow:hidden;background:#e9e9e6;border-radius:3px}.board-card>i b,.schedule-card>i b{display:block;height:100%;background:#3b424b}.column-empty{padding:18px 8px;color:var(--muted);font-size:10px;text-align:center}.board-load-more{border:1px solid var(--border);border-radius:6px}.calendar-shell{position:relative;min-height:560px}.calendar-toolbar{display:flex;height:54px;align-items:center;justify-content:space-between;padding:0 13px;border-bottom:1px solid var(--border)}.calendar-toolbar>strong{font-size:13px}.calendar-toolbar>div{display:flex;align-items:center;gap:3px}.button.quiet{min-height:34px;color:var(--muted);background:transparent;border:0}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);height:32px;align-items:center;color:var(--muted);font-size:9px;text-align:center;background:#fafaf9;border-bottom:1px solid var(--border)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr)}.calendar-grid>div{min-width:0;min-height:94px;padding:6px;border-right:1px solid #eeeeec;border-bottom:1px solid #eeeeec}.calendar-grid>div.non-working{background:#f8f8f6}.calendar-grid>div.holiday{background:#fbf3f1}.calendar-grid>div:nth-child(7n){border-right:0}.calendar-grid>div>span{display:grid;width:22px;height:22px;margin-bottom:3px;color:var(--ink-soft);font-size:9px;place-items:center}.calendar-grid>div.outside{opacity:.55}.calendar-grid>div.today>span{color:#fff;background:#3c424a;border-radius:50%}.calendar-task,.calendar-more{display:block;width:100%;min-height:21px;margin-top:3px;overflow:hidden;padding:0 5px;color:#4b535d;font-size:8px;text-align:left;text-overflow:ellipsis;white-space:nowrap;background:#eff1f3;border:0;border-left:2px solid #66717e;border-radius:3px}.calendar-task.state-blocked{color:#8b4237;background:#fff0ed;border-color:#a85547}.calendar-task.state-done{color:#476456;background:#eef4f0;border-color:#668273}.calendar-more{color:var(--muted);background:transparent;border:0}.calendar-day-sheet{position:absolute;top:54px;right:0;z-index:7;width:min(330px,100%);min-height:300px;padding:12px;background:#fff;border:1px solid var(--border);box-shadow:-10px 14px 30px #18181b1f}.calendar-day-sheet>header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.calendar-day-sheet>header div{display:flex;flex-direction:column;gap:3px}.calendar-day-sheet>header span{color:var(--muted);font-size:9px}.calendar-day-sheet>header strong{font-size:13px}.day-task{display:flex;width:100%;min-height:52px;align-items:center;padding:7px 5px;gap:8px;color:var(--ink);text-align:left;background:transparent;border:0;border-top:1px solid #eeeeec}.day-task>span{display:flex;min-width:0;flex:1;flex-direction:column;gap:2px}.day-task strong,.day-task small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.day-task strong{font-size:10px}.day-task small{color:var(--muted);font-size:9px}.entity-list{overflow:hidden}.entity-row{display:grid;width:100%;min-height:66px;align-items:center;padding:8px 14px;gap:12px;color:var(--ink);text-align:left;background:#fff;border:0;border-bottom:1px solid #eeeeec}.entity-row:hover:not(:disabled){background:#fafaf9}.entity-row:disabled{cursor:default;opacity:1}.entity-row>div{display:flex;min-width:0;flex-direction:column;gap:4px}.entity-row>div strong,.entity-row>div small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.entity-row>div strong{font-size:12px}.entity-row>div small{color:var(--muted);font-size:10px}.milestone-row{grid-template-columns:28px minmax(180px,1fr) minmax(120px,.4fr) 80px 76px 16px}.milestone-check{display:grid;width:24px;height:24px;color:#fff;background:#fff;border:2px solid #aaaeb4;border-radius:50%;place-items:center}.milestone-check.state-active{border-color:#465362;box-shadow:inset 0 0 0 5px #fff;background:#465362}.milestone-check.state-done{background:var(--done);border-color:var(--done)}.variance{color:#4f685c;font-size:9px}.variance.late{color:#a2473a}.risk-row{grid-template-columns:30px minmax(180px,1fr) 54px minmax(120px,.4fr) 64px 16px}.risk-score{display:flex;flex-direction:column;align-items:center}.risk-score strong{font-size:13px}.risk-score small{color:var(--muted);font-size:8px}.risk-status{font-size:9px}.status-开放{color:#a34739}.status-已缓解{color:#806129}.status-已解决{color:#4b685a}.collaboration-grid,.capacity-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(280px,.6fr);align-items:start;gap:14px}.comments-panel,.activity-panel,.workload-panel,.time-panel{overflow:hidden}.comment-compose{display:flex;align-items:flex-end;padding:13px;gap:8px;border-bottom:1px solid var(--border)}.comment-compose label{min-width:0;flex:1}.comment-compose textarea{width:100%;min-height:72px;padding:9px 10px;resize:vertical;color:var(--ink);font-size:12px;border:1px solid var(--border-strong);border-radius:6px;outline:0}.comment{display:flex;padding:14px;gap:10px;border-bottom:1px solid #eeeeec}.comment>div{min-width:0;flex:1}.comment header{display:flex;align-items:center;gap:8px}.comment header strong{font-size:11px}.comment time{color:var(--muted);font-size:9px}.comment p{margin:7px 0;overflow-wrap:anywhere;color:var(--ink-soft);font-size:11px;line-height:1.6;white-space:pre-wrap}.text-button{padding:3px 0;color:var(--muted);font-size:9px;background:transparent;border:0}.text-button.danger:hover{color:#a34739}.activity-row{display:flex;min-height:66px;padding:12px 14px;gap:10px;border-bottom:1px solid #eeeeec}.activity-row>span{display:grid;width:27px;height:27px;color:var(--muted);background:#f0f0ee;border-radius:50%;place-items:center}.activity-row>div{min-width:0;flex:1}.activity-row strong,.activity-row p,.activity-row time{display:block;margin:0;font-size:10px}.activity-row p{margin:3px 0;color:var(--ink-soft)}.activity-row time{color:var(--muted);font-size:9px}.workload-row{padding:14px;border-bottom:1px solid #eeeeec}.workload-row>div{display:flex;align-items:center;gap:9px}.workload-row>div>span{display:flex;min-width:0;flex:1;flex-direction:column;gap:2px}.workload-row strong{font-size:11px}.workload-row small{color:var(--muted);font-size:9px}.workload-row em{color:var(--muted);font-size:10px;font-style:normal}.workload-bar{display:block;height:5px;margin:10px 0 7px;overflow:hidden;background:#e9e9e6;border-radius:4px}.workload-bar i{display:block;height:100%;background:#46515e}.workload-row footer{display:flex;gap:13px;color:var(--muted);font-size:9px}.time-row{display:grid;min-height:60px;align-items:center;padding:8px 12px;grid-template-columns:44px minmax(0,1fr) 42px 34px;gap:9px;border-bottom:1px solid #eeeeec}.time-row>time{color:var(--ink-soft);font-size:10px;font-weight:620}.time-row>div{display:flex;min-width:0;flex-direction:column;gap:3px}.time-row strong,.time-row small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.time-row strong{font-size:10px}.time-row small{color:var(--muted);font-size:9px}.time-row em{font-size:11px;font-style:normal;font-variant-numeric:tabular-nums}.cross-task-list{overflow:hidden}.cross-task-row{display:grid;width:100%;min-height:62px;align-items:center;padding:8px 14px;grid-template-columns:8px minmax(180px,1fr) 48px 78px 45px 16px;gap:12px;color:var(--ink);text-align:left;background:#fff;border:0;border-bottom:1px solid #eeeeec}.cross-task-row:hover{background:#fafaf9}.cross-task-main{display:flex;min-width:0;flex-direction:column;gap:3px}.cross-task-main strong,.cross-task-main small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cross-task-main strong{font-size:12px}.cross-task-main small{color:var(--muted);font-size:9px}.priority{width:fit-content;padding:3px 6px;color:var(--muted);font-size:9px;background:#f0f0ee;border-radius:4px}.priority-urgent{color:#9d4135;background:#fff0ed}.priority-high{color:#816020;background:#f9f1e3}.cross-task-row time{color:var(--muted);font-size:10px}.overdue{color:#a34739!important}.compact-progress{color:var(--muted);font-size:9px;font-variant-numeric:tabular-nums}.archive-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:14px}.archive-section{overflow:hidden}.archive-row{display:flex;min-height:64px;align-items:center;padding:8px 13px;gap:10px;border-bottom:1px solid #eeeeec}.archive-row>div{display:flex;min-width:0;flex:1;flex-direction:column;gap:3px}.archive-row strong,.archive-row small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.archive-row strong{font-size:11px}.archive-row small{color:var(--muted);font-size:9px}.panel-scrim{position:fixed;top:64px;right:0;bottom:0;left:0;z-index:48;padding:0;background:#18181b1f;border:0;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.notification-panel{position:fixed;top:64px;right:0;bottom:0;z-index:50;width:min(390px,100vw);overflow:auto;background:#fff;border-left:1px solid var(--border);box-shadow:-14px 0 36px #18181b1a}.notification-panel>header{display:flex;min-height:66px;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--border)}.notification-panel h2{margin:0;font-size:17px}.notification-panel header span{color:var(--muted);font-size:10px}.read-all{display:block;width:100%;min-height:38px;padding:0 15px;color:#4c5967;font-size:10px;text-align:right;background:#fafaf9;border:0;border-bottom:1px solid var(--border)}.notification-list>button{display:grid;width:100%;min-height:76px;align-items:start;padding:12px 14px;grid-template-columns:6px minmax(0,1fr) 16px;gap:9px;color:var(--ink);text-align:left;background:#fff;border:0;border-bottom:1px solid #eeeeec}.notification-list>button:hover{background:#fafaf9}.notification-list>button>i{width:6px;height:6px;margin-top:5px;background:transparent;border-radius:50%}.notification-list>button.unread>i{background:#9e493d}.notification-list>button>span{min-width:0}.notification-list strong,.notification-list p,.notification-list time{display:block;overflow-wrap:anywhere}.notification-list strong{font-size:11px}.notification-list p{margin:4px 0;color:var(--ink-soft);font-size:10px;line-height:1.45}.notification-list time{color:var(--muted);font-size:9px}.wide-dialog{width:min(760px,calc(100vw - 32px))}.dialog-form{display:flex;flex-direction:column}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.inline-alert{display:flex;min-height:42px;margin-bottom:14px;align-items:center;padding:9px 11px;gap:8px;font-size:11px;border-radius:6px}.inline-alert.error{color:#913f34;background:#fff2ef;border:1px solid #efcec8}.button.danger{color:#fff;background:#a4483b;border:1px solid #a4483b}.button.danger.quiet,.icon-button.danger{color:#a4483b;background:transparent;border-color:transparent}.button.danger.quiet:hover,.icon-button.danger:hover{background:#fff0ed}.dependency-fieldset,.weekday-picker{min-width:0;margin:17px 0 0;padding:0;border:0}.dependency-fieldset>legend,.weekday-picker>legend{margin-bottom:8px;color:var(--ink-soft);font-size:12px;font-weight:570}.dependency-row{display:flex;min-height:46px;align-items:center;justify-content:space-between;padding:5px 8px;gap:10px;border-top:1px solid #eeeeec}.dependency-row.selected{background:#fafaf9}.dependency-row>label{display:flex;min-width:0;flex:1;align-items:center;gap:8px;font-size:11px}.dependency-row>label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dependency-row>div{display:flex;align-items:center;gap:6px}.dependency-row select,.dependency-row input[type=number]{height:32px;color:var(--ink-soft);font-size:10px;background:#fff;border:1px solid var(--border);border-radius:5px}.dependency-row select{width:108px}.lag-control{display:flex;align-items:center;gap:4px;color:var(--muted);font-size:9px}.lag-control input{width:48px;padding:0 5px}.lag-control em{font-style:normal}.check-field{display:flex;align-items:center;gap:8px;cursor:pointer}.check-field>span{display:flex;min-height:32px;align-items:center;padding:0 9px;gap:5px;color:var(--ink-soft);font-size:11px;background:#f5f5f3;border-radius:5px}.confirm-mark{display:grid;width:46px;height:46px;margin:6px auto;color:#a4483b;background:#fff0ed;border-radius:50%;place-items:center}.confirm-name{display:block;margin-top:-8px;padding:9px 10px;overflow-wrap:anywhere;color:var(--ink-soft);font-size:11px;background:#f5f5f3;border-radius:5px}.progressive-section{margin-top:4px;border-top:1px solid var(--border)}.progressive-section summary{display:flex;min-height:44px;align-items:center;justify-content:space-between;color:var(--ink-soft);font-size:12px;font-weight:600;cursor:pointer;list-style:none}.progressive-section summary svg{transition:transform .16s var(--ease-out-quart)}.progressive-section[open] summary svg{transform:rotate(180deg)}.progressive-section>div{padding:2px 0 8px}.weekday-picker{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.weekday-picker legend{grid-column:1/-1}.weekday-picker label{cursor:pointer}.weekday-picker input{position:absolute;opacity:0}.weekday-picker span{display:grid;min-height:38px;color:var(--muted);font-size:10px;background:#f5f5f3;border:1px solid var(--border);border-radius:5px;place-items:center}.weekday-picker label.selected span{color:#fff;background:#3b4149;border-color:#3b4149}.holiday-editor{margin-top:14px}.holiday-add{display:flex;gap:7px}.holiday-list{display:flex;margin-top:8px;flex-wrap:wrap;gap:5px}.holiday-list button{display:inline-flex;min-height:30px;align-items:center;padding:0 7px;gap:5px;color:var(--ink-soft);font-size:9px;background:#f4f4f2;border:1px solid var(--border);border-radius:5px}.holiday-list>span{color:var(--muted);font-size:10px}.member-choice{display:flex;min-width:0;flex:1;align-items:center;gap:9px;cursor:pointer}.member-choice>span:last-child{display:flex;min-width:0;flex:1;flex-direction:column;gap:2px}.member-choice strong,.member-choice small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.member-choice strong{font-size:11px}.member-choice small{color:var(--muted);font-size:9px}.member-row>select{width:92px;height:34px;color:var(--ink-soft);font-size:10px;background:#fff;border:1px solid var(--border);border-radius:5px}.loading-row{display:flex;min-height:110px;align-items:center;justify-content:center;gap:7px;color:var(--muted);font-size:11px}.invite-section{margin-top:18px;border-top:1px solid var(--border)}.invite-section>header{display:flex;min-height:42px;align-items:center;justify-content:space-between}.invite-section header strong{font-size:12px}.invite-section header span{color:var(--muted);font-size:10px}.invite-section>form{display:flex;align-items:center;padding:6px 8px;gap:7px;color:var(--muted);background:#f7f7f6;border:1px solid var(--border);border-radius:6px}.invite-section>form label{min-width:0;flex:1}.invite-section>form input{width:100%;height:34px;color:var(--ink);font-size:12px;background:transparent;border:0;outline:0}.invite-list>div{display:flex;min-height:51px;align-items:center;padding:6px 2px;gap:8px;border-bottom:1px solid #eeeeec}.invite-list>div>span{display:flex;min-width:0;flex:1;flex-direction:column;gap:2px}.invite-list strong,.invite-list small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.invite-list strong{font-size:10px}.invite-list small{color:var(--muted);font-size:9px}.toast{padding:9px 9px 9px 11px;pointer-events:none}.toast>span{display:flex;width:auto;min-width:0;align-items:center;gap:8px;background:transparent}.toast>button{display:grid;width:28px;height:28px;flex:0 0 auto;padding:0;color:#fff;background:#ffffff14;border:0;border-radius:5px;pointer-events:auto;place-items:center}.empty-inline{min-height:70px;padding:24px 14px;text-align:center}.empty-content,.empty-workspace{display:flex;min-height:350px;align-items:center;justify-content:center;flex-direction:column;gap:11px;text-align:center}.empty-content strong{font-size:13px}.empty-workspace>span{display:grid;width:52px;height:52px;color:var(--ink-soft);background:#eaeae7;border-radius:13px;place-items:center}.empty-workspace h1{margin:0;font-size:26px}.empty-workspace p{max-width:440px;margin:0;color:var(--muted);font-size:12px;line-height:1.5}.page-skeleton{padding:34px clamp(22px,3vw,42px)}.page-skeleton>i{display:block;width:210px;height:28px;margin-bottom:24px;background:#e9e9e6;border-radius:6px;animation:pulse 1.4s ease-in-out infinite}.page-skeleton>i:nth-child(2){width:100%;height:92px}.page-skeleton>div{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.page-skeleton>div i{height:210px;background:#e9e9e6;border-radius:10px;animation:pulse 1.4s ease-in-out infinite}.view-skeleton{display:grid;padding:12px;gap:7px}.view-skeleton i{height:54px;background:#f0f0ee;border-radius:6px;animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{50%{opacity:.55}}@media(max-width:1279px){.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.collaboration-grid,.capacity-grid{grid-template-columns:minmax(0,1fr) 320px}}@media(max-width:1023px){.app-shell,.app-shell.sidebar-collapsed{display:block}.sidebar{position:fixed;inset:0 auto 0 0;z-index:80;width:min(290px,86vw);height:100dvh;padding-bottom:max(14px,env(safe-area-inset-bottom));pointer-events:none;transform:translate(-102%);visibility:hidden;transition:transform .22s var(--ease-out-quart),visibility 0s linear .22s}.sidebar.mobile-open{pointer-events:auto;transform:translate(0);visibility:visible;transition-delay:0s}.app-shell.sidebar-collapsed .sidebar{padding-inline:14px}.app-shell.sidebar-collapsed .sidebar .brand strong,.app-shell.sidebar-collapsed .nav-item span,.app-shell.sidebar-collapsed .sidebar-projects header span,.app-shell.sidebar-collapsed .project-nav-item span,.app-shell.sidebar-collapsed .project-nav-item em,.app-shell.sidebar-collapsed .profile>span:last-child{display:initial}.app-shell.sidebar-collapsed .sidebar-header,.app-shell.sidebar-collapsed .nav-item,.app-shell.sidebar-collapsed .project-nav-item,.app-shell.sidebar-collapsed .profile{justify-content:initial}.app-shell.sidebar-collapsed .sidebar-header{justify-content:space-between}.app-shell.sidebar-collapsed .nav-item,.app-shell.sidebar-collapsed .project-nav-item{padding-inline:8px}.collapse-button{display:none}.nav-scrim{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;padding:0;background:#18181b61;border:0;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.portfolio-layout,.collaboration-grid,.capacity-grid{grid-template-columns:1fr}.milestone-agenda{order:-1}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.metric-grid{grid-template-columns:repeat(5,minmax(110px,1fr));overflow-x:auto}.planning-toolbar{align-items:stretch;flex-direction:column}.plan-filters{width:100%}.search-control{flex:1;width:auto}.milestone-row{grid-template-columns:28px minmax(150px,1fr) 115px 75px 16px}.milestone-row .variance{display:none}.risk-row{grid-template-columns:30px minmax(160px,1fr) 50px 110px 16px}.risk-row .risk-status{display:none}}@media(max-width:767px){.topbar{padding:0 12px;gap:8px}.breadcrumbs>span,.breadcrumbs>svg{display:none}.global-search{width:min(42vw,190px)}.page-stage{min-height:calc(100dvh - 58px)}.page-body{padding:20px 13px calc(34px + env(safe-area-inset-bottom))}.page-heading{margin-bottom:14px}.page-heading h1{font-size:24px}.button,.icon-button,.notification-button{min-height:44px}.icon-button,.notification-button{width:44px;height:44px}.project-heading{margin-bottom:15px}.heading-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}.heading-actions>.button{min-width:0;padding:0 9px}.project-tabs{margin-right:-13px;margin-left:-13px;border-right:0;border-left:0;border-radius:0}.project-tabs button{flex:1;justify-content:center;padding:0 12px}.project-tabs button svg{display:none}.summary-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.summary-strip>div+div{border-left:0}.summary-strip>div:nth-child(2n){border-left:1px solid var(--border)}.summary-strip>div:nth-child(n+3){border-top:1px solid var(--border)}.plan-filters{display:grid;grid-template-columns:1fr 1fr}.plan-filters .search-control{grid-column:1/-1}.select-control select{width:100%;max-width:none}.view-tabs{display:grid;grid-template-columns:repeat(4,1fr)}.view-tabs button{min-width:0;padding:0 5px}.gantt-window-bar,.gantt-scroll{display:none}.gantt-mobile{display:grid;padding:9px;gap:7px}.schedule-card>div{display:flex;align-items:center;gap:7px}.schedule-card>div strong{min-width:0;flex:1;overflow:hidden;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.schedule-card>span{display:block;margin-top:7px;color:var(--muted);font-size:9px}.schedule-card footer{display:flex;margin-top:9px;align-items:center;justify-content:space-between;color:var(--muted);font-size:9px}.schedule-card footer em{font-style:normal}.plan-legend{flex-wrap:wrap;padding-block:8px}.legend-spacer{display:none}.board{display:flex;overflow:visible;flex-direction:column}.board-column{width:100%}.board-stack{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-shell{min-height:0;overflow:hidden}.calendar-grid>div{min-height:76px;padding:3px}.calendar-task{min-height:18px;padding:0 3px}.calendar-weekdays{height:28px}.calendar-more{padding:0}.calendar-day-sheet{position:fixed;top:auto;right:8px;bottom:8px;left:8px;width:auto;min-height:250px;max-height:70dvh;overflow:auto;border-radius:10px;box-shadow:0 16px 45px #18181b33}.task-table,.task-table tbody,.task-table tr,.task-table td{display:block}.task-table thead{display:none}.task-table tr{position:relative;padding:10px 48px 10px 12px;border-bottom:1px solid var(--border)}.task-table td{display:flex;min-height:26px;height:auto;align-items:center;padding:3px 0;gap:9px;border:0}.task-table td:before{width:58px;flex:0 0 auto;color:var(--muted);font-size:9px;content:attr(data-label)}.task-table td:first-child:before,.task-table td:last-child:before{display:none}.task-table td:first-child{min-height:34px}.task-table td:last-child{position:absolute;top:9px;right:4px}.progress-cell{flex:1}.entity-row{position:relative;display:grid;padding:11px 42px 11px 12px;gap:8px}.entity-row>svg{position:absolute;top:50%;right:13px;transform:translateY(-50%)}.milestone-row{grid-template-columns:28px minmax(0,1fr)}.milestone-row .person,.milestone-row time{grid-column:2}.risk-row{grid-template-columns:30px minmax(0,1fr) 45px}.risk-row .person{grid-column:2/4}.risk-score{grid-column:3;grid-row:1}.archive-grid{grid-template-columns:1fr}.cross-task-row{position:relative;padding:10px 38px 10px 12px;grid-template-columns:8px minmax(0,1fr) 44px;gap:9px}.cross-task-row time{grid-column:2}.cross-task-row .compact-progress{grid-column:3;grid-row:2}.cross-task-row>svg{position:absolute;right:12px}.cross-task-row .priority{grid-column:3;grid-row:1}.form-grid.three,.form-grid{grid-template-columns:1fr}.dependency-row{align-items:stretch;flex-direction:column}.dependency-row>div{display:grid;grid-template-columns:1fr 1fr}.dependency-row select{width:100%}.weekday-picker{grid-template-columns:repeat(4,1fr)}.modal-backdrop{padding:8px 8px 0}.dialog{max-height:calc(100dvh - 8px)}.wide-dialog{width:100%}.dialog-footer{padding-bottom:max(12px,env(safe-area-inset-bottom))}.member-row{align-items:flex-start;flex-direction:column}.member-choice{width:100%}.member-row>select{margin-left:34px}.invite-section>form{align-items:stretch;flex-wrap:wrap}.invite-section>form>svg{margin-top:11px}.invite-section>form label{min-width:150px}.notification-panel{top:58px}.panel-scrim{inset-block-start:58px}.toast{bottom:max(14px,env(safe-area-inset-bottom))}}@media(max-width:440px){.global-search{width:38vw;min-width:112px}.project-grid{grid-template-columns:1fr}.metric-grid{grid-template-columns:repeat(5,105px)}.board-stack{grid-template-columns:1fr}.project-tabs button{padding-inline:9px}.heading-actions{grid-template-columns:repeat(3,minmax(0,1fr))}.heading-actions .button.secondary{font-size:0}.heading-actions .button.secondary svg{margin:0}.calendar-task:nth-of-type(n+2){display:none}.calendar-more{font-size:7px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.spinner{animation:none!important}}
