:root{--bg:#fafaf9;--surface:#fff;--surface-hover:#f6f6f5;--surface-2:#f2f1ee;--ink:#18181b;--ink-2:#3f3f46;--ink-3:#71717a;--ink-4:#a1a1aa;--line:#e7e5e0;--line-2:#f0eee9;--line-strong:#d4d2cc;--radius-sm:4px;--radius:6px;--radius-md:8px;--radius-lg:12px;--shadow-card:0 1px 2px #18181b0a, 0 1px 1px #18181b08;--shadow-hover:0 2px 6px #18181b0f, 0 1px 2px #18181b0a;--shadow-drawer:-16px 0 40px #18181b1a;--growth-ink:#4f6bed;--growth-fill:#e2e6fa;--growth-soft:#f0f2fc;--ops-ink:#c2620e;--ops-fill:#fae3c8;--ops-soft:#fbf1e2;--dev-ink:#1f8a5b;--dev-fill:#ccebdd;--dev-soft:#e5f4ed;--explore-ink:#8b5cf6;--explore-fill:#e6dafa;--explore-soft:#f2eafb;--status-todo:#a1a1aa;--status-doing:#4f6bed;--status-blocked:#dc2626;--status-done:#1f8a5b;--font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;height:100%;margin:0;padding:0;font-size:13px;line-height:1.5;overflow:hidden}#root{flex-direction:column;height:100vh;display:flex;position:relative}.appbar{border-bottom:1px solid var(--line);background:var(--surface);flex-shrink:0;align-items:center;gap:14px;padding:12px 24px;display:flex}.appbar .brand{letter-spacing:-.01em;color:var(--ink);align-items:center;gap:8px;font-size:14px;font-weight:700;display:inline-flex}.appbar .brand:before{content:"";background:var(--ink);background:linear-gradient(135deg, var(--growth-ink), var(--explore-ink));border-radius:5px;width:18px;height:18px;display:inline-block;position:relative}.appbar .crumb{color:var(--ink-3);background:var(--surface-2);border-radius:999px;padding:2px 8px;font-size:12px}.appbar .grow{flex:1}.tabs{border-bottom:1px solid var(--line);background:var(--surface);flex-shrink:0;gap:4px;padding:0 20px;display:flex}.tab{color:var(--ink-3);cursor:pointer;font-size:13px;font-family:var(--font-sans);background:0 0;border:none;border-radius:0;align-items:center;gap:8px;padding:12px 14px;transition:color .15s;display:flex;position:relative}.tab:hover{color:var(--ink-2)}.tab .tab-no{display:none}.tab[aria-selected=true]{color:var(--ink);font-weight:600}.tab[aria-selected=true]:after{content:"";background:var(--ink);border-radius:2px 2px 0 0;height:2px;position:absolute;bottom:-1px;left:8px;right:8px}.tab>span:nth-child(3){color:var(--ink-4);font-size:11px;font-weight:400}.toolbar{background:var(--surface);border-bottom:1px solid var(--line);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:8px;padding:10px 24px;display:flex}.toolbar .label{color:var(--ink-3);text-transform:none;letter-spacing:0;margin-right:2px;font-size:11px;font-weight:500}.chip{border:1px solid var(--line);background:var(--surface);color:var(--ink-2);cursor:pointer;-webkit-user-select:none;user-select:none;font-size:12px;font-family:var(--font-sans);border-radius:999px;align-items:center;gap:6px;padding:4px 10px;transition:background .12s,border-color .12s;display:inline-flex}.chip:hover{background:var(--surface-hover);border-color:var(--line-strong)}.chip[data-active=true]{background:var(--surface-2);color:var(--ink);border-color:var(--line-strong);font-weight:600}.chip .dot{border-radius:50%;width:7px;height:7px}.chip[data-cat=growth] .dot{background:var(--growth-ink)}.chip[data-cat=ops] .dot{background:var(--ops-ink)}.chip[data-cat=dev] .dot{background:var(--dev-ink)}.chip[data-cat=explore] .dot{background:var(--explore-ink)}.chip[data-cat=growth][data-active=true],.chip[data-cat=ops][data-active=true],.chip[data-cat=dev][data-active=true],.chip[data-cat=explore][data-active=true]{background:var(--surface-2);color:var(--ink);border-color:var(--line-strong)}.search-box{border:1px solid var(--line);background:var(--surface);border-radius:999px;align-items:center;gap:6px;padding:4px 10px;display:inline-flex}.search-box:focus-within{border-color:var(--ink-3)}.search-box input{font-size:12px;font-family:var(--font-sans);width:160px;color:var(--ink);background:0 0;border:none;outline:none}.search-box input::placeholder{color:var(--ink-4)}.seg{border:1px solid var(--line);background:var(--surface);border-radius:6px;gap:2px;padding:2px;display:inline-flex;overflow:hidden}.seg button{cursor:pointer;font-size:11.5px;font-family:var(--font-sans);color:var(--ink-3);background:0 0;border:none;border-radius:4px;padding:4px 10px;font-weight:500}.seg button:hover{color:var(--ink-2)}.seg button[aria-pressed=true]{background:var(--ink-2);color:var(--surface)}.view{flex:1;min-height:0;position:relative;overflow:hidden}.mono{font-family:var(--font-mono)}.muted{color:var(--ink-3)}.tiny{letter-spacing:0;text-transform:none;font-size:11px}.cat-pill{font-family:var(--font-sans);letter-spacing:.02em;text-transform:uppercase;border-radius:4px;align-items:center;gap:4px;padding:2px 7px;font-size:10.5px;font-weight:600;display:inline-flex}.cat-pill[data-cat=growth]{background:var(--growth-fill);color:var(--growth-ink)}.cat-pill[data-cat=ops]{background:var(--ops-fill);color:var(--ops-ink)}.cat-pill[data-cat=dev]{background:var(--dev-fill);color:var(--dev-ink)}.cat-pill[data-cat=explore]{background:var(--explore-fill);color:var(--explore-ink)}.status-dot{vertical-align:middle;border-radius:50%;flex-shrink:0;width:6px;height:6px;display:inline-block}.status-dot[data-s=todo]{border:1.5px solid var(--status-todo);box-sizing:border-box;background:0 0}.status-dot[data-s=doing]{background:var(--status-doing)}.status-dot[data-s=blocked]{background:var(--status-blocked)}.status-dot[data-s=done]{background:var(--status-done)}.prio-tag{font-family:var(--font-sans);background:var(--surface-2);color:var(--ink-3);border-radius:3px;align-items:center;padding:1px 5px;font-size:10px;font-weight:600;display:inline-flex}.prio-tag[data-p=p0]{color:var(--status-blocked);background:#dc26261a}.prio-tag[data-p=p1]{background:var(--surface-2);color:var(--ink-2)}.avatar{background:var(--surface-2);border:2px solid var(--surface);width:26px;height:26px;color:var(--ink-2);font-size:10px;font-family:var(--font-sans);letter-spacing:0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:inline-flex}.avatar.sm{border-width:1.5px;width:20px;height:20px;font-size:9px}.avatar-stack{display:inline-flex}.avatar-stack .avatar+.avatar{margin-left:-8px}.view ::-webkit-scrollbar{width:10px;height:10px}.view ::-webkit-scrollbar-thumb{background:var(--line-strong);border:2px solid var(--bg);border-radius:5px}.view ::-webkit-scrollbar-thumb:hover{background:var(--ink-4)}.view ::-webkit-scrollbar-track{background:0 0}.frame{background:var(--surface);position:relative}button{font-family:inherit}body.large{font-size:15px}body.large .appbar .brand{font-size:16px}body.large .appbar .crumb{font-size:13px}body.large .tab{padding:14px 16px;font-size:14px}body.large .tab>span:nth-child(3){font-size:12px}body.large .toolbar{gap:10px;padding:12px 24px}body.large .toolbar .label{font-size:12px}body.large .chip{padding:5px 12px;font-size:13px}body.large .search-box input{width:200px;font-size:13px}body.large .seg button{padding:5px 12px;font-size:13px}body.large .proj-card-title{font-size:17px}body.large .proj-card-desc{font-size:13.5px}body.large .proj-card-head>span:first-child{font-size:12px}body.large .sub-card-title{font-size:15px}body.large .sub-card-desc{font-size:13px}body.large .task-chip-title{font-size:14px}body.large .task-chip-owners{font-size:12.5px}body.large .task-chip-dates{font-size:12px}body.large .cat-band-zh{font-size:21px}body.large .cat-band-stats{font-size:13px}body.large .ring-percent-num{font-size:12px}body.large .pc-name{font-size:17px}body.large .pc-sub{font-size:13px}body.large .wp-label{font-size:12px}body.large .ptask-title{font-size:14px}body.large .ptask-meta{font-size:12.5px}body.large .pw-col .mono{font-size:13px}body.large .day-num{font-size:14px}body.large .day-dow{font-size:11px}body.large .week-cell{font-size:12.5px}body.large .task-bar{height:28px;top:5px}body.large .task-bar-title{font-size:13px}body.large .gantt-row[style*="height: 36px"]{height:42px!important}body.large .gantt-left-cell{font-size:14px}body.large .nav-btn{padding:6px 14px;font-size:13px}body.large .avatar{width:30px;height:30px;font-size:12px}body.large .avatar.sm{width:24px;height:24px;font-size:11px}body.large .status-dot{width:8px;height:8px}body.large .cat-pill{padding:3px 9px;font-size:12px}body.large .prio-tag{padding:2px 6px;font-size:11.5px}body.large .drawer-header{padding:24px 28px 18px}body.large .drawer-header>div>div:nth-child(2){font-size:19px}body.large .drawer-body{padding:24px 28px;font-size:14px}body.large .drawer-row .k{font-size:12.5px}body.xlarge{font-size:17px}body.xlarge .appbar .brand{font-size:18px}body.xlarge .appbar .crumb{font-size:14px}body.xlarge .tab{padding:16px 18px;font-size:15px}body.xlarge .tab>span:nth-child(3){font-size:13px}body.xlarge .toolbar{gap:10px;padding:14px 24px}body.xlarge .toolbar .label{font-size:13px}body.xlarge .chip{padding:6px 14px;font-size:14px}body.xlarge .search-box input{width:240px;font-size:14px}body.xlarge .seg button{padding:6px 14px;font-size:14px}body.xlarge .proj-card-title{font-size:20px}body.xlarge .proj-card-desc{font-size:15px}body.xlarge .proj-card-head>span:first-child{font-size:13px}body.xlarge .sub-card-title{font-size:17px}body.xlarge .sub-card-desc{font-size:14px}body.xlarge .task-chip-title{font-size:15.5px}body.xlarge .task-chip-owners{font-size:14px}body.xlarge .task-chip-dates{font-size:13px}body.xlarge .cat-band-zh{font-size:24px}body.xlarge .cat-band-stats{font-size:14px}body.xlarge .ring-percent-num{font-size:13px}body.xlarge .pc-name{font-size:19px}body.xlarge .pc-sub{font-size:14px}body.xlarge .wp-label{font-size:13px}body.xlarge .ptask-title{font-size:15.5px}body.xlarge .ptask-meta,body.xlarge .pw-col .mono{font-size:14px}body.xlarge .day-num{font-size:16px}body.xlarge .day-dow{font-size:12px}body.xlarge .week-cell{font-size:14px}body.xlarge .task-bar{height:32px;top:4px}body.xlarge .task-bar-title{font-size:14px}body.xlarge .gantt-row[style*="height: 36px"]{height:46px!important}body.xlarge .gantt-left-cell{font-size:16px}body.xlarge .nav-btn{padding:7px 16px;font-size:14px}body.xlarge .avatar{width:34px;height:34px;font-size:13px}body.xlarge .avatar.sm{width:26px;height:26px;font-size:12px}body.xlarge .status-dot{width:9px;height:9px}body.xlarge .cat-pill{padding:4px 10px;font-size:13px}body.xlarge .prio-tag{padding:2px 7px;font-size:12.5px}body.xlarge .drawer{width:540px}body.xlarge .drawer.drawer-wide{width:640px}body.xlarge .drawer-header{padding:28px 32px 20px}body.xlarge .drawer-header>div>div:nth-child(2){font-size:22px}body.xlarge .drawer-body{padding:28px 32px;font-size:15px}body.xlarge .drawer-row .k{font-size:14px}.text-size-btn{text-align:center;letter-spacing:.02em;min-width:44px;font-size:12.5px;font-weight:600}body.large .text-size-btn{font-size:13.5px}body.xlarge .text-size-btn{font-size:15px}.drawer-overlay{z-index:50;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#18181b52;justify-content:flex-end;display:flex;position:fixed;inset:0}.drawer{background:var(--surface);width:460px;box-shadow:var(--shadow-drawer);border-radius:0;flex-direction:column;height:100%;display:flex;overflow-y:auto}.drawer.drawer-wide{width:560px;max-width:92vw}.drawer-header{border-bottom:1px solid var(--line);align-items:flex-start;gap:10px;padding:20px 24px 16px;display:flex}.drawer-body{flex-direction:column;gap:18px;padding:20px 24px;font-size:13px;display:flex}.drawer-row{align-items:center;gap:12px;display:flex}.drawer-row .k{color:var(--ink-3);flex-shrink:0;width:90px;font-size:11px;font-weight:500}.close-x{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:var(--radius);color:var(--ink-3);padding:4px 10px;font-size:16px;line-height:1}.close-x:hover{background:var(--surface-hover);color:var(--ink)}.proj-kpis{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-md);grid-template-columns:repeat(4,1fr);gap:14px;padding:14px 16px;display:grid}.kpi{flex-direction:column;gap:5px;min-width:0;display:flex}.kpi-label{color:var(--ink-3);font-size:10.5px;font-weight:500}.kpi-val{align-items:center;gap:6px;min-width:0;display:flex}.proj-kpis .kpi:first-child{grid-column:1/-1}.proj-section{flex-direction:column;gap:10px;display:flex}.proj-section-h{color:var(--ink-3);letter-spacing:0;border-bottom:1px solid var(--line);padding-bottom:6px;font-size:11px;font-weight:600}.status-bars{flex-direction:column;gap:7px;display:flex}.status-bar-row{align-items:center;gap:10px;display:flex}.status-bar-track{background:var(--surface-2);border-radius:3px;flex:1;height:6px;overflow:hidden}.status-bar-fill{border-radius:3px;height:100%}.status-bar-fill[data-s=todo]{background:var(--status-todo);opacity:.5}.status-bar-fill[data-s=doing]{background:var(--status-doing)}.status-bar-fill[data-s=blocked]{background:var(--status-blocked)}.status-bar-fill[data-s=done]{background:var(--status-done)}.dep-graph{flex-direction:column;gap:8px;display:flex}.dep-line-block{align-items:flex-start;gap:12px;display:flex}.dep-line-block.dep-self{background:var(--surface-2);border-radius:var(--radius);border:1px solid var(--line);align-items:center;padding:10px 12px}.dep-arrow-label{min-width:56px;color:var(--ink-3);padding-top:5px;font-size:11px}.dep-list{flex-wrap:wrap;gap:6px;display:flex}.proj-subs{flex-direction:column;gap:10px;display:flex}.proj-sub-row{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-md);padding:12px 14px}.proj-sub-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:8px;padding-bottom:8px;display:flex}.proj-sub-tasks{flex-direction:column;gap:2px;display:flex}.proj-task-mini{cursor:pointer;text-align:left;border-radius:var(--radius-sm);background:0 0;border:none;align-items:center;gap:8px;padding:6px 8px;font-size:12px;display:flex}.proj-task-mini:hover{background:var(--surface-hover)}.proj-task-mini[data-status=done]{opacity:.55;text-decoration:line-through}.proj-task-mini[data-status=blocked]{color:var(--status-blocked)}.board-scroll{background:var(--bg);height:100%;overflow-y:auto}.board-wrap{flex-direction:column;gap:26px;max-width:1180px;margin:0 auto;padding:28px 32px 80px;display:flex}.board-hero{align-items:flex-end;gap:20px;display:flex}.board-hero-main{flex:1;min-width:0}.board-eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-4);margin-bottom:8px;font-size:11px;font-weight:600}.board-title{letter-spacing:-.02em;color:var(--ink);flex-wrap:wrap;align-items:baseline;gap:14px;font-size:30px;font-weight:700;line-height:1.05;display:flex}.board-title .board-date{color:var(--ink-3);letter-spacing:0;font-size:15px;font-weight:500}.board-summary{color:var(--ink-2);max-width:760px;margin-top:12px;font-size:14px;line-height:1.6}.board-summary b{color:var(--ink);font-weight:600}.board-summary .sev{color:var(--status-blocked);font-weight:600}.board-hero-meta{text-align:right;color:var(--ink-4);flex-shrink:0;font-size:11px;line-height:1.7}.board-hero-meta .lt{color:var(--ink-2);font-weight:600}body.large .board-title{font-size:34px}body.xlarge .board-title{font-size:40px}body.large .board-summary{font-size:15.5px}body.xlarge .board-summary{font-size:17px}.board-stats{grid-template-columns:repeat(5,1fr);gap:12px;display:grid}.stat-tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);flex-direction:column;gap:8px;padding:16px 18px;display:flex;position:relative;overflow:hidden}.stat-tile[data-alert=true]{background:#dc262608;border-color:#dc26264d}.stat-num{letter-spacing:-.02em;color:var(--ink);align-items:baseline;gap:6px;font-size:30px;font-weight:700;line-height:1;display:flex}.stat-tile[data-alert=true] .stat-num{color:var(--status-blocked)}.stat-num .unit{color:var(--ink-4);font-size:13px;font-weight:500}.stat-label{color:var(--ink-3);align-items:center;gap:6px;font-size:12px;font-weight:500;display:flex}.stat-tile .stat-spark{border-radius:50%;width:8px;height:8px;position:absolute;top:14px;right:14px}body.large .stat-num{font-size:34px}body.xlarge .stat-num{font-size:40px}body.large .stat-label{font-size:13px}body.xlarge .stat-label{font-size:14px}.board-section{flex-direction:column;gap:14px;display:flex}.board-sec-head{align-items:center;gap:10px;display:flex}.board-sec-head h2{letter-spacing:-.01em;color:var(--ink);margin:0;font-size:14px;font-weight:700}.board-sec-head .sec-count{color:var(--ink-3);background:var(--surface-2);border-radius:999px;padding:2px 9px;font-size:11px;font-weight:600}.board-sec-head .sec-rule{background:var(--line);flex:1;height:1px}.board-sec-head .sec-hint{color:var(--ink-4);font-size:11.5px}body.large .board-sec-head h2{font-size:15.5px}body.xlarge .board-sec-head h2{font-size:18px}.focus-grid{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.focus-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);cursor:pointer;flex-direction:column;gap:10px;padding:15px 16px 14px 19px;transition:box-shadow .14s,border-color .14s,transform .14s;display:flex;position:relative;overflow:hidden}.focus-card:before{content:"";width:4px;position:absolute;top:0;bottom:0;left:0}.focus-card[data-cat=growth]:before{background:var(--growth-ink)}.focus-card[data-cat=ops]:before{background:var(--ops-ink)}.focus-card[data-cat=dev]:before{background:var(--dev-ink)}.focus-card[data-cat=explore]:before{background:var(--explore-ink)}.focus-card:hover{box-shadow:var(--shadow-hover);border-color:var(--line-strong);transform:translateY(-1px)}.focus-card[data-flag=blocked]{border-color:#dc262647}.focus-card[data-flag=blocked]:before{background:var(--status-blocked)}.focus-top{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.flag-badge{letter-spacing:.01em;text-transform:none;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:10.5px;font-weight:700;display:inline-flex}.flag-badge[data-f=blocked]{color:var(--status-blocked);background:#dc26261a}.flag-badge[data-f=risk]{color:var(--ops-ink);background:#c2620e1f}.flag-badge[data-f=due]{color:var(--growth-ink);background:#4f6bed1f}.flag-badge .ico{font-size:10px;line-height:1}.focus-title{letter-spacing:-.01em;color:var(--ink);font-size:15px;font-weight:600;line-height:1.3}.focus-path{color:var(--ink-3);font-size:11.5px}.focus-path b{color:var(--ink-2);font-weight:600}.focus-foot{align-items:center;gap:12px;margin-top:2px;display:flex}.focus-prog{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.prog-track{background:var(--surface-2);border-radius:3px;flex:1;min-width:40px;height:5px;overflow:hidden}.prog-fill{border-radius:3px;height:100%}.prog-fill[data-cat=growth]{background:var(--growth-ink)}.prog-fill[data-cat=ops]{background:var(--ops-ink)}.prog-fill[data-cat=dev]{background:var(--dev-ink)}.prog-fill[data-cat=explore]{background:var(--explore-ink)}.focus-prog .pct{color:var(--ink-2);text-align:right;min-width:30px;font-size:11px;font-weight:600}.focus-reason{color:var(--ink-3);border-top:1px solid var(--line-2);padding-top:9px;font-size:11.5px;line-height:1.5}.focus-reason b{color:var(--ink-2);font-weight:600}body.large .focus-title{font-size:16.5px}body.xlarge .focus-title{font-size:19px}.board-cols-2{grid-template-columns:1fr 1fr;align-items:start;gap:22px;display:grid}.list-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);overflow:hidden}.day-group+.day-group{border-top:1px solid var(--line-2)}.day-group-head{background:var(--surface-2);color:var(--ink-3);align-items:center;gap:8px;padding:9px 16px;font-size:11px;font-weight:600;display:flex}.day-group-head .dg-date{color:var(--ink)}.day-group-head[data-today=true] .dg-date{color:var(--growth-ink)}.day-group-head .dg-spacer{flex:1}.day-group-head .dg-n{color:var(--ink-4);font-weight:500}.task-row{cursor:pointer;text-align:left;border:none;border-top:1px solid var(--line-2);background:0 0;align-items:center;gap:10px;width:100%;padding:10px 16px;font-family:inherit;transition:background .12s;display:flex}.day-group .task-row:first-of-type{border-top:none}.task-row:hover{background:var(--surface-hover)}.task-row-rail{border-radius:2px;flex-shrink:0;align-self:stretch;width:3px}.task-row-rail[data-cat=growth]{background:var(--growth-fill)}.task-row-rail[data-cat=ops]{background:var(--ops-fill)}.task-row-rail[data-cat=dev]{background:var(--dev-fill)}.task-row-rail[data-cat=explore]{background:var(--explore-fill)}.task-row-body{flex:1;min-width:0}.task-row-title{color:var(--ink);align-items:center;gap:7px;font-size:13px;font-weight:500;display:flex}.task-row[data-status=done] .task-row-title{color:var(--ink-3);text-decoration:line-through}.task-row[data-status=blocked] .task-row-title{color:var(--status-blocked)}.task-row-title .tt{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.task-row-meta{color:var(--ink-4);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:11px;overflow:hidden}.task-row-right{flex-shrink:0;align-items:center;gap:8px;display:flex}.task-row-owners{display:inline-flex}.task-row-owners .avatar+.avatar{margin-left:-7px}.task-row-pct{color:var(--ink-3);text-align:right;min-width:30px;font-size:11px;font-weight:600}.list-empty{text-align:center;color:var(--ink-4);padding:24px 16px;font-size:12px}body.large .task-row-title{font-size:14px}body.xlarge .task-row-title{font-size:15.5px}.agenda-list{flex-direction:column;gap:12px;display:flex}.agenda-item{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);gap:16px;padding:16px 18px;display:flex;position:relative}.agenda-item[data-sev=blocked]{border-color:#dc262642}.agenda-num{width:30px;height:30px;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:700;display:flex}.agenda-item[data-sev=blocked] .agenda-num{color:var(--status-blocked);background:#dc26261a;border-color:#dc262633}.agenda-item[data-sev=risk] .agenda-num{color:var(--ops-ink);background:#c2620e1f;border-color:#c2620e33}.agenda-body{flex:1;min-width:0}.agenda-head{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:7px;display:flex}.agenda-title{letter-spacing:-.01em;color:var(--ink);font-size:15.5px;font-weight:600}.agenda-reason{color:var(--ink-2);font-size:13px;line-height:1.6}.agenda-reason b{color:var(--ink);font-weight:600}.agenda-tasks{border-top:1px solid var(--line-2);flex-direction:column;gap:4px;margin-top:11px;padding-top:11px;display:flex}.agenda-task{color:var(--ink-2);cursor:pointer;border-radius:var(--radius-sm);text-align:left;background:0 0;border:none;align-items:center;gap:8px;width:100%;padding:4px 6px;font-family:inherit;font-size:12.5px;display:flex}.agenda-task:hover{background:var(--surface-hover)}.agenda-task .at-title{flex:1}.agenda-task .at-owner{color:var(--ink-4);font-size:11px}.agenda-meta{align-items:center;gap:6px;display:inline-flex}body.large .agenda-title{font-size:17px}body.xlarge .agenda-title{font-size:19px}body.large .agenda-reason{font-size:14px}body.xlarge .agenda-reason{font-size:15.5px}.rollup-grid{grid-template-columns:repeat(2,1fr);gap:14px;display:grid}.rollup-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);flex-direction:column;gap:14px;padding:18px 20px;display:flex}.rollup-head{align-items:center;gap:12px;display:flex}.rollup-ring{flex-shrink:0}.rollup-head-text{flex:1;min-width:0}.rollup-cat-name{color:var(--ink);letter-spacing:-.01em;font-size:15px;font-weight:700}.rollup-cat-sub{color:var(--ink-4);margin-top:2px;font-size:11.5px}.rollup-big{letter-spacing:-.02em;color:var(--ink);font-size:26px;font-weight:700;line-height:1}.rollup-big .unit{color:var(--ink-4);font-size:13px;font-weight:500}.seg-bar{background:var(--surface-2);border-radius:5px;height:9px;display:flex;overflow:hidden}.seg-bar span{height:100%;display:block}.seg-bar span[data-s=done]{background:var(--status-done)}.seg-bar span[data-s=doing]{background:var(--status-doing)}.seg-bar span[data-s=blocked]{background:var(--status-blocked)}.seg-bar span[data-s=todo]{background:var(--line-strong)}.rollup-legend{flex-wrap:wrap;gap:10px 16px;display:flex}.rollup-legend .lg{color:var(--ink-3);align-items:center;gap:6px;font-size:11.5px;display:inline-flex}.rollup-legend .lg b{color:var(--ink);font-weight:600}.proj-table{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);overflow:hidden}.pt-row{border-top:1px solid var(--line-2);cursor:pointer;text-align:left;background:0 0;border-bottom:none;border-left:none;border-right:none;grid-template-columns:88px 1fr 200px 132px 84px;align-items:center;gap:14px;width:100%;padding:12px 18px;font-family:inherit;transition:background .12s;display:grid}.pt-row:hover{background:var(--surface-hover)}.pt-row.pt-header{background:var(--surface-2);cursor:default;border-top:none;padding:9px 18px}.pt-row.pt-header:hover{background:var(--surface-2)}.pt-header .pt-h{letter-spacing:.04em;text-transform:uppercase;color:var(--ink-4);font-size:10.5px;font-weight:600}.pt-name{color:var(--ink);align-items:center;gap:8px;min-width:0;font-size:13.5px;font-weight:600;display:flex}.pt-name .nm{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pt-prog{align-items:center;gap:9px;display:flex}.pt-prog .pct{color:var(--ink-2);min-width:32px;font-size:12px;font-weight:600}.pt-segwrap{flex:1}.pt-counts{gap:10px;display:flex}.pt-count{color:var(--ink-3);align-items:center;gap:4px;font-size:11.5px;font-weight:500;display:inline-flex}.pt-count[data-zero=true]{opacity:.32}.pt-week{color:var(--ink-3);text-align:right;font-size:11.5px}.pt-week b{color:var(--dev-ink);font-weight:700}.pt-week .due b{color:var(--ops-ink)}body.large .pt-name{font-size:14.5px}body.xlarge .pt-name{font-size:16px}.pt-cat-divider{background:var(--bg);border-top:1px solid var(--line-2);color:var(--ink-3);align-items:center;gap:8px;padding:8px 18px;font-size:11px;font-weight:600;display:flex}@media (width<=980px){.board-stats{grid-template-columns:repeat(2,1fr)}.focus-grid,.rollup-grid,.board-cols-2{grid-template-columns:1fr}}.roadmap-scroll{background:var(--bg);padding-bottom:80px;position:absolute;inset:0;overflow:auto}.roadmap-header{border-bottom:1px solid var(--line);background:var(--bg);z-index:5;letter-spacing:0;color:var(--ink-3);text-transform:uppercase;grid-template-columns:200px 280px 1fr;gap:24px;padding:16px 28px 10px;font-size:10.5px;font-weight:500;display:grid;position:sticky;top:0}.roadmap-tree{padding:24px 28px 80px;position:relative}.cat-band{grid-template-columns:200px 1fr;align-items:flex-start;gap:24px;margin-bottom:40px;display:grid}.cat-band-label{align-items:stretch;gap:0;min-height:80px;display:flex;position:sticky;top:56px}.cat-band-strip{background:var(--ink);border-radius:2px;align-self:stretch;width:3px;margin-right:14px}.cat-band[data-cat=growth] .cat-band-strip{background:var(--growth-ink)}.cat-band[data-cat=ops] .cat-band-strip{background:var(--ops-ink)}.cat-band[data-cat=dev] .cat-band-strip{background:var(--dev-ink)}.cat-band[data-cat=explore] .cat-band-strip{background:var(--explore-ink)}.cat-band-name{flex-direction:column;gap:8px;padding-top:2px;display:flex}.cat-band-name .cat-pill{align-self:flex-start}.cat-band-zh{color:var(--ink);letter-spacing:-.01em;font-size:18px;font-weight:600;line-height:1.2}.cat-band-stats{font-size:11px}.cat-band-projects{flex-direction:column;gap:0;display:flex;position:relative}.proj-gap{align-items:center;gap:10px;margin-left:14px;padding:6px 0 6px 18px;display:flex;position:relative}.proj-gap-dot{background:var(--ink);z-index:1;border-radius:50%;flex-shrink:0;width:7px;height:7px;margin-left:-17px;position:relative}.proj-gap-dot[data-cat=growth]{background:var(--growth-ink)}.proj-gap-dot[data-cat=ops]{background:var(--ops-ink)}.proj-gap-dot[data-cat=dev]{background:var(--dev-ink)}.proj-gap-dot[data-cat=explore]{background:var(--explore-ink)}.proj-gap-line{border-left:1.5px solid var(--line-strong);width:0;position:absolute;top:-6px;bottom:-6px;left:17px}.proj-gap-line[data-cat=growth]{border-color:var(--growth-fill)}.proj-gap-line[data-cat=ops]{border-color:var(--ops-fill)}.proj-gap-line[data-cat=dev]{border-color:var(--dev-fill)}.proj-gap-line[data-cat=explore]{border-color:var(--explore-fill)}.proj-gap-label{color:var(--ink-3);font-size:11px;font-weight:500}.proj-row{grid-template-columns:280px 1fr;align-items:stretch;gap:0;padding:6px 0;display:grid;position:relative}.proj-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);z-index:2;cursor:pointer;min-height:110px;box-shadow:var(--shadow-card);flex-direction:column;gap:8px;padding:14px 16px;transition:box-shadow .15s,transform .15s,border-color .15s;display:flex;position:relative}.proj-card:hover{box-shadow:var(--shadow-hover);border-color:var(--line-strong);transform:translateY(-1px)}.proj-row[data-dim=true] .proj-card{opacity:.4}.proj-row[data-hover=true] .proj-card,.proj-row[data-linked=true] .proj-card{box-shadow:0 0 0 2px #4f6bed29, var(--shadow-hover)}.roadmap-tree[data-hovering=true] .sub-card-wrap{opacity:.4;transition:opacity .15s}.roadmap-tree[data-hovering=true] .proj-row[data-hover=true] .sub-card-wrap,.roadmap-tree[data-hovering=true] .proj-row[data-linked=true] .sub-card-wrap{opacity:1}.proj-card:before{content:"";background:var(--ink);border-radius:2px;width:3px;position:absolute;top:12px;bottom:12px;left:0}.proj-card[data-cat=growth]:before{background:var(--growth-ink)}.proj-card[data-cat=ops]:before{background:var(--ops-ink)}.proj-card[data-cat=dev]:before{background:var(--dev-ink)}.proj-card[data-cat=explore]:before{background:var(--explore-ink)}.proj-kickoff-marker{background:var(--surface);border:1px solid var(--line);z-index:3;border-radius:999px;align-items:center;gap:5px;padding:1px 8px;display:flex;position:absolute;top:-10px;left:16px}.kickoff-dot{background:var(--ink);border-radius:50%;width:6px;height:6px}.proj-card[data-cat=growth] .kickoff-dot{background:var(--growth-ink)}.proj-card[data-cat=ops] .kickoff-dot{background:var(--ops-ink)}.proj-card[data-cat=dev] .kickoff-dot{background:var(--dev-ink)}.proj-card[data-cat=explore] .kickoff-dot{background:var(--explore-ink)}.kickoff-date{color:var(--ink-2);font-size:10.5px;font-weight:600}.kickoff-label{color:var(--ink-3);margin-right:2px;font-weight:500}.proj-card:after{content:"";border-top:1.5px solid var(--line-strong);width:16px;height:0;position:absolute;top:50%;right:-16px}.proj-card-head{justify-content:space-between;align-items:center;display:flex}.proj-card-head>span:first-child{color:var(--ink-3);letter-spacing:.02em;font-size:10.5px;font-weight:600}.proj-card-title{letter-spacing:-.01em;color:var(--ink);font-size:15px;font-weight:600;line-height:1.3}.proj-card-desc{color:var(--ink-3);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:1.45;display:-webkit-box;overflow:hidden}.proj-deps{border-top:1px solid var(--line-2);flex-direction:column;gap:5px;padding:8px 0 2px;display:flex}.dep-line{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.dep-pill{border:1px solid var(--line);background:var(--surface);color:var(--ink-2);cursor:pointer;font-size:11px;font-family:var(--font-sans);white-space:nowrap;text-overflow:ellipsis;border-radius:999px;align-items:center;gap:4px;max-width:200px;padding:2px 8px;font-weight:500;line-height:1.5;display:inline-flex;overflow:hidden}.dep-pill[data-cat=growth]{border-color:var(--growth-fill);color:var(--growth-ink);background:var(--growth-soft)}.dep-pill[data-cat=ops]{border-color:var(--ops-fill);color:var(--ops-ink);background:var(--ops-soft)}.dep-pill[data-cat=dev]{border-color:var(--dev-fill);color:var(--dev-ink);background:var(--dev-soft)}.dep-pill[data-cat=explore]{border-color:var(--explore-fill);color:var(--explore-ink);background:var(--explore-soft)}.dep-pill.clickable:hover{filter:brightness(.96)}.proj-card-meta{flex-direction:column;gap:6px;margin-top:auto;display:flex}.proj-progress{align-items:center;gap:8px;display:flex}.proj-progress-bar{background:var(--surface-2);border-radius:3px;flex:1;height:5px;overflow:hidden}.proj-progress-fill{background:var(--ink);border-radius:3px;height:100%;transition:width .3s}.proj-progress-fill[data-cat=growth]{background:var(--growth-ink)}.proj-progress-fill[data-cat=ops]{background:var(--ops-ink)}.proj-progress-fill[data-cat=dev]{background:var(--dev-ink)}.proj-progress-fill[data-cat=explore]{background:var(--explore-ink)}.proj-card-foot{color:var(--ink-3);justify-content:space-between;align-items:center;font-size:11px;display:flex}.proj-detail-link{color:var(--ink-2);font-size:11px;font-weight:500}.proj-card:hover .proj-detail-link{color:var(--ink)}.subs-rail{padding-left:32px;position:relative}.subs-rail-line{border-left:1.5px solid var(--line-strong);width:0;position:absolute;top:18px;bottom:18px;left:16px}.subs-rail-line[data-cat=growth]{border-color:var(--growth-fill)}.subs-rail-line[data-cat=ops]{border-color:var(--ops-fill)}.subs-rail-line[data-cat=dev]{border-color:var(--dev-fill)}.subs-rail-line[data-cat=explore]{border-color:var(--explore-fill)}.subs-col{flex-direction:column;gap:8px;display:flex}.sub-card-wrap{align-items:stretch;display:flex;position:relative}.sub-card-tick{border-top:1.5px solid var(--line-strong);width:16px;height:0;position:absolute;top:20px;left:-16px}.sub-card-tick[data-cat=growth]{border-color:var(--growth-fill)}.sub-card-tick[data-cat=ops]{border-color:var(--ops-fill)}.sub-card-tick[data-cat=dev]{border-color:var(--dev-fill)}.sub-card-tick[data-cat=explore]{border-color:var(--explore-fill)}.sub-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-card);flex-direction:column;flex:1;gap:4px;padding:8px 12px;transition:box-shadow .15s,border-color .15s;display:flex}.sub-card:hover{box-shadow:var(--shadow-hover);border-color:var(--line-strong)}.sub-card-head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.sub-card-title{color:var(--ink);letter-spacing:-.005em;font-size:13px;font-weight:600}.sub-card-desc{color:var(--ink-3);margin-top:2px;font-size:11.5px;line-height:1.45}.ring-percent{flex-shrink:0;align-items:center;gap:5px;display:inline-flex}.ring-percent-num{color:var(--ink-3);font-size:10.5px;font-weight:600;font-family:var(--font-sans);text-align:right;min-width:26px}.sub-task-list{flex-direction:column;gap:2px;margin-top:2px;display:flex}.task-chip{border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:1px solid #0000;align-items:center;gap:10px;width:100%;min-height:26px;padding:5px 8px 5px 10px;font-size:12px;font-weight:500;transition:background .12s,border-color .12s;display:flex}.task-chip:hover{background:var(--surface-hover);border-color:var(--line)}.task-chip[data-status=done]{opacity:.55}.task-chip[data-status=done] .task-chip-title{color:var(--ink-3);text-decoration:line-through}.task-chip[data-status=blocked] .task-chip-title{color:var(--status-blocked)}.task-chip-title{white-space:nowrap;text-overflow:ellipsis;min-width:0;color:var(--ink-2);flex-shrink:1;font-size:12px;font-weight:500;overflow:hidden}.task-chip-owners{color:var(--ink-3);text-align:right;white-space:nowrap;text-overflow:ellipsis;flex:1;margin-right:4px;padding-left:12px;font-size:11px;overflow:hidden}.task-chip-spacer{display:none}.task-chip-dates{color:var(--ink-4);white-space:nowrap;font-size:10.5px;font-weight:500;font-family:var(--font-sans);flex-shrink:0}.empty-state{text-align:center;color:var(--ink-3);padding:80px 24px}.rmm-canvas{background:radial-gradient(circle at 50% 50%, #00000005 1px, transparent 1px) 0 0 / 20px 20px, var(--bg);flex:1;padding:16px 0;position:relative;overflow:auto}.rmm-inner{min-width:100%;min-height:100%;position:relative}.rmm-svg{pointer-events:none;position:absolute;top:0;left:0}.rmm-node{background:var(--surface);border:1px solid var(--line);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--radius);white-space:nowrap;box-shadow:var(--shadow-card);align-items:center;gap:8px;padding:7px 12px;font-size:12px;transition:box-shadow .15s,border-color .15s,transform .15s;display:flex;position:absolute;transform:translateY(-50%)}.rmm-node:hover{box-shadow:var(--shadow-hover);border-color:var(--line-strong);z-index:3;transform:translateY(calc(-50% - 1px))}.rmm-root{background:var(--ink);color:var(--surface);border-color:var(--ink);cursor:default;border-radius:var(--radius-md);padding:12px 18px;font-size:13px;font-weight:700}.rmm-root:hover{box-shadow:var(--shadow-card);transform:translateY(-50%)}.rmm-cat{cursor:default;border-width:1.5px;padding:9px 14px;font-size:13px;font-weight:700}.rmm-cat[data-cat=growth]{border-color:var(--growth-fill);background:var(--growth-soft)}.rmm-cat[data-cat=ops]{border-color:var(--ops-fill);background:var(--ops-soft)}.rmm-cat[data-cat=dev]{border-color:var(--dev-fill);background:var(--dev-soft)}.rmm-cat[data-cat=explore]{border-color:var(--explore-fill);background:var(--explore-soft)}.rmm-cat:hover{transform:translateY(-50%)}.rmm-project{flex-direction:column;align-items:flex-start;gap:3px;min-width:200px;padding:8px 12px 8px 14px}.rmm-project:before{content:"";border-radius:2px;width:3px;position:absolute;top:8px;bottom:8px;left:0}.rmm-project[data-cat=growth]:before{background:var(--growth-ink)}.rmm-project[data-cat=ops]:before{background:var(--ops-ink)}.rmm-project[data-cat=dev]:before{background:var(--dev-ink)}.rmm-project[data-cat=explore]:before{background:var(--explore-ink)}.rmm-line-1{align-items:center;gap:6px;font-size:12.5px;font-weight:600;display:flex}.rmm-line-2{color:var(--ink-3);align-items:center;gap:5px;font-size:10.5px;display:flex}.rmm-dot-sep{color:var(--ink-4)}.rmm-sub{border-left:3px solid var(--line-strong);background:var(--surface);padding-left:12px;font-weight:500}.rmm-sub[data-cat=growth]{border-left-color:var(--growth-ink)}.rmm-sub[data-cat=ops]{border-left-color:var(--ops-ink)}.rmm-sub[data-cat=dev]{border-left-color:var(--dev-ink)}.rmm-sub[data-cat=explore]{border-left-color:var(--explore-ink)}.rmm-sub-meta{color:var(--ink-3);margin-left:4px;font-size:10.5px;font-weight:500}.rmm-label{white-space:nowrap;text-overflow:ellipsis;max-width:180px;overflow:hidden}.rm-view-toggle{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);gap:2px;padding:2px;display:inline-flex}.rm-view-toggle button{color:var(--ink-3);cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:5px;padding:4px 12px;font-family:inherit;font-size:12px;font-weight:500;display:inline-flex}.rm-view-toggle button:hover{color:var(--ink-2)}.rm-view-toggle button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-card);font-weight:600}.gantt{background:var(--bg);flex-direction:column;display:flex;position:absolute;inset:0}.gantt-nav{border-bottom:1px solid var(--line);background:var(--surface);flex-shrink:0;align-items:center;gap:8px;padding:10px 24px;display:flex}.nav-btn{border:1px solid var(--line);background:var(--surface);color:var(--ink-2);cursor:pointer;white-space:nowrap;border-radius:var(--radius);padding:5px 12px;font-size:12px;font-weight:500;transition:background .12s,border-color .12s,color .12s}.nav-btn:hover{background:var(--surface-hover);border-color:var(--line-strong);color:var(--ink)}.nav-btn.primary{background:var(--ink-2);color:var(--surface);border-color:var(--ink-2)}.nav-btn.primary:hover{background:var(--ink);color:var(--surface)}.gantt-scroll{background:var(--surface);flex:1;position:relative;overflow:auto}.gantt-inner{min-width:100%;position:relative}.gantt-header-row{z-index:6;background:var(--surface);border-bottom:1px solid var(--line);display:flex;position:sticky;top:0}.gantt-left-header{background:var(--surface);border-right:1px solid var(--line);z-index:7;align-items:flex-end;padding:10px 14px;display:flex;position:sticky;left:0}.gantt-left-header .mono{font-family:var(--font-sans);color:var(--ink-3);text-transform:uppercase;letter-spacing:.02em;font-size:10.5px;font-weight:600}.gantt-time-header{position:relative}.week-strip{border-bottom:1px solid var(--line);position:relative}.week-cell{border-right:1px solid var(--line);height:100%;color:var(--ink-3);font-size:11px;font-family:var(--font-sans);letter-spacing:0;align-items:center;padding-left:10px;display:flex;position:absolute;top:0}.week-cell[data-current=true]{background:var(--surface-2);color:var(--ink);font-weight:600}.day-strip{position:relative}.day-cell{border-right:1px solid var(--line-2);height:100%;color:var(--ink-2);text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;top:0}.day-cell[data-weekend=true]{background:var(--surface-2);color:var(--ink-3)}.day-cell[data-today=true]{background:var(--growth-soft);color:var(--growth-ink);font-weight:600}.day-num{font-size:12px;font-weight:600;font-family:var(--font-sans)}.day-dow{color:var(--ink-3);font-size:9.5px;font-family:var(--font-sans)}.day-cell[data-today=true] .day-dow{color:var(--growth-ink)}.gantt-rows{background:var(--surface);position:relative}.gantt-grid{pointer-events:none;z-index:0;position:absolute;top:0;bottom:0}.grid-col{border-right:1px solid var(--line-2);position:absolute;top:0;bottom:0}.grid-col[data-weekend=true]{background:var(--surface-2);opacity:.5}.today-line{border-left:2px solid var(--growth-ink);z-index:3;pointer-events:none;opacity:.55;width:0;position:absolute;top:0;bottom:0}.week-sep{border-left:1px solid var(--line);z-index:2;pointer-events:none;width:0;position:absolute;top:0;bottom:0}.this-week-band{background:var(--surface-2);opacity:.4;z-index:0;pointer-events:none;position:absolute;top:0;bottom:0}.gantt-row{border-bottom:1px solid var(--line-2);display:flex;position:relative}.gantt-left-cell{background:var(--surface);border-right:1px solid var(--line);z-index:4;color:var(--ink);align-items:center;padding:0 14px;font-size:12.5px;display:flex;position:sticky;left:0}.gantt-row-cat{background:var(--surface-2);font-weight:600}.gantt-row-cat .gantt-left-cell{background:var(--surface-2);gap:0;padding-left:0}.gantt-row-cat .cat-band-strip{border-radius:0 2px 2px 0;width:3px;height:60%;margin-right:12px}.gantt-row-cat[data-cat=growth] .cat-band-strip{background:var(--growth-ink)}.gantt-row-cat[data-cat=ops] .cat-band-strip{background:var(--ops-ink)}.gantt-row-cat[data-cat=dev] .cat-band-strip{background:var(--dev-ink)}.gantt-row-cat[data-cat=explore] .cat-band-strip{background:var(--explore-ink)}.gantt-row-project,.gantt-row-project .gantt-left-cell{background:var(--bg)}.gantt-row-sub:hover,.gantt-row-sub:hover .gantt-left-cell{background:var(--surface-hover)}.gantt-lane{height:100%;position:relative}.task-bar{border:1px solid var(--line);border-left:3px solid var(--ink);background:var(--surface);cursor:grab;z-index:1;-webkit-user-select:none;user-select:none;border-radius:var(--radius-sm);align-items:center;height:22px;transition:box-shadow .12s,border-color .12s;display:flex;position:absolute;top:7px;overflow:hidden;box-shadow:0 1px 2px #18181b0a}.task-bar:active{cursor:grabbing}.task-bar:hover{z-index:3;box-shadow:var(--shadow-hover);border-color:var(--line-strong);border-left-color:inherit}.task-bar[data-cat=growth]{border-left-color:var(--growth-ink)}.task-bar[data-cat=ops]{border-left-color:var(--ops-ink)}.task-bar[data-cat=dev]{border-left-color:var(--dev-ink)}.task-bar[data-cat=explore]{border-left-color:var(--explore-ink)}.task-bar[data-status=done]{opacity:.55;background:var(--surface-2)}.task-bar[data-status=blocked]{border-color:#dc26264d;border-left-color:var(--status-blocked);background:#dc26260a}.task-bar[data-status=todo]{background:var(--surface);border-style:dashed}.task-bar-fill{opacity:.1;pointer-events:none;background:currentColor;position:absolute;top:0;bottom:0;left:0}.task-bar[data-cat=growth] .task-bar-fill{color:var(--growth-ink)}.task-bar[data-cat=ops] .task-bar-fill{color:var(--ops-ink)}.task-bar[data-cat=dev] .task-bar-fill{color:var(--dev-ink)}.task-bar[data-cat=explore] .task-bar-fill{color:var(--explore-ink)}.task-bar-label{z-index:1;pointer-events:none;align-items:center;gap:6px;width:100%;padding:0 8px;font-size:11.5px;display:flex;position:relative}.task-bar-title{white-space:nowrap;text-overflow:ellipsis;color:var(--ink);font-size:11.5px;font-weight:600;overflow:hidden}.task-bar[data-status=done] .task-bar-title{color:var(--ink-3);text-decoration:line-through}.task-bar-prio{background:var(--status-blocked);color:var(--surface);border-radius:3px;flex-shrink:0;margin-left:auto;padding:1px 5px;font-size:9.5px;font-weight:600}.task-bar[data-extends-left=true]:before{content:"◀";color:currentColor;font-size:9px;position:absolute;top:50%;left:-10px;transform:translateY(-50%)}.task-bar[data-extends-right=true]:after{content:"▶";color:currentColor;font-size:9px;position:absolute;top:50%;right:-10px;transform:translateY(-50%)}.task-bar[data-cat=growth]{color:var(--growth-ink)}.task-bar[data-cat=ops]{color:var(--ops-ink)}.task-bar[data-cat=dev]{color:var(--dev-ink)}.task-bar[data-cat=explore]{color:var(--explore-ink)}.people-scroll{background:var(--bg);padding:0 28px 60px;position:absolute;inset:0;overflow:auto}.people-week-header{z-index:5;background:var(--bg);border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr 1fr;gap:12px;margin-bottom:20px;padding:18px 0 12px;display:grid;position:sticky;top:0}.pw-col{border-radius:var(--radius);flex-direction:column;gap:3px;padding:4px 8px;display:flex}.pw-col .mono{font-family:var(--font-sans)}.pw-col.current{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-card)}.people-grid{grid-template-columns:repeat(auto-fit,minmax(min(440px,100%),1fr));gap:20px;display:grid}.person-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-card);flex-direction:column;gap:14px;padding:18px;transition:box-shadow .15s,border-color .15s;display:flex}.person-card:hover{box-shadow:var(--shadow-hover);border-color:var(--line-strong)}.person-card .corner-tl,.person-card .corner-tr,.person-card.frame:before,.person-card.frame:after{display:none}.pc-header{border-bottom:1px solid var(--line-2);align-items:center;gap:12px;padding-bottom:12px;display:flex}.pc-name{letter-spacing:-.01em;font-size:15px;font-weight:600}.pc-sub{color:var(--ink-3);align-items:center;gap:6px;font-size:11.5px;display:flex}.pc-cats{gap:4px;display:flex}.pc-cat-dot{border-radius:50%;width:8px;height:8px}.pc-cat-dot[data-cat=growth]{background:var(--growth-ink)}.pc-cat-dot[data-cat=ops]{background:var(--ops-ink)}.pc-cat-dot[data-cat=dev]{background:var(--dev-ink)}.pc-cat-dot[data-cat=explore]{background:var(--explore-ink)}.pc-weeks{grid-template-columns:1fr 1fr 1fr;gap:10px;display:grid}.week-pane{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius);flex-direction:column;gap:8px;min-height:110px;padding:10px;display:flex}.week-pane[data-variant=past]{background:var(--surface);opacity:.85}.week-pane[data-variant=current]{background:var(--surface-2);border-color:var(--line-strong);box-shadow:var(--shadow-card)}.week-pane[data-variant=future]{background:var(--surface)}.wp-label{color:var(--ink-3);letter-spacing:0;border-bottom:1px solid var(--line-2);text-transform:uppercase;font-size:10.5px;font-weight:600;font-family:var(--font-sans);padding-bottom:6px}.week-pane[data-variant=current] .wp-label{color:var(--ink);font-weight:700}.wp-tasks{flex-direction:column;gap:6px;display:flex}.wp-empty{font-family:var(--font-sans);padding:6px 4px}.ptask{background:var(--surface);border:1px solid var(--line);cursor:pointer;border-radius:var(--radius);gap:8px;padding:7px 10px 7px 14px;font-size:11.5px;transition:background .12s,border-color .12s,box-shadow .12s;display:flex;position:relative;overflow:hidden}.ptask:hover{background:var(--surface-hover);border-color:var(--line-strong);box-shadow:var(--shadow-card)}.ptask[data-status=done]{opacity:.6}.ptask[data-status=blocked]{background:#dc26260a;border-color:#dc262640}.ptask[data-status=blocked]:hover{background:#dc262612}.ptask-rail{background:var(--ink-3);width:3px;position:absolute;top:0;bottom:0;left:0}.ptask-rail[data-cat=growth]{background:var(--growth-ink)}.ptask-rail[data-cat=ops]{background:var(--ops-ink)}.ptask-rail[data-cat=dev]{background:var(--dev-ink)}.ptask-rail[data-cat=explore]{background:var(--explore-ink)}.ptask-body{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.ptask-head{align-items:center;gap:6px;display:flex}.ptask-title{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;letter-spacing:-.005em;flex:1;font-size:12.5px;font-weight:600;overflow:hidden}.ptask[data-status=done] .ptask-title{color:var(--ink-3);text-decoration:line-through}.ptask-meta{color:var(--ink-3);font-size:11px;font-family:var(--font-sans);align-items:center;gap:0;display:flex}.ptask-meta>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.ptask-meta .muted{flex-shrink:0}.board-loading{height:100vh;color:var(--ink-3);justify-content:center;align-items:center;font-size:13px;display:flex}.board-error{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);max-width:560px;color:var(--ink-2);margin:120px auto;padding:24px;font-size:13px;line-height:1.6}.board-error-title{color:var(--status-blocked);margin-bottom:8px;font-weight:600}.board-error-msg{background:var(--surface-2);word-break:break-all;border-radius:4px;margin-bottom:12px;padding:10px;font-size:11.5px;display:block}.board-error-hint{color:var(--ink-3);font-size:12px}.board-login{background:var(--bg);justify-content:center;align-items:center;height:100vh;display:flex}.board-login-card{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);max-width:420px;box-shadow:var(--shadow-card);text-align:center;padding:32px}.board-login-title{color:var(--ink);margin-bottom:10px;font-size:18px;font-weight:700}.board-login-desc{color:var(--ink-2);margin:0 0 18px;font-size:13px;line-height:1.6}.board-login-btn{background:var(--ink);color:var(--surface);border-radius:var(--radius);padding:10px 22px;font-size:14px;font-weight:600;text-decoration:none;display:inline-block}.board-login-btn:hover{opacity:.88}.board-login-hint{color:var(--ink-3);margin:18px 0 0;font-size:11.5px;line-height:1.6}.board-login-hint code{background:var(--surface-2);border-radius:3px;padding:1px 5px}.toast-stack{z-index:100;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:20px;right:20px}.toast{border-radius:var(--radius);box-shadow:var(--shadow-hover);max-width:340px;padding:10px 14px;font-size:12.5px;animation:.15s ease-out toast-in}.toast[data-kind=error]{background:var(--status-blocked);color:#fff}.toast[data-kind=success]{background:var(--status-done);color:#fff}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.btn-new{border:1px solid var(--line-strong);background:var(--ink);color:var(--surface);border-radius:var(--radius);cursor:pointer;font-size:12px;font-weight:600;font-family:var(--font-sans);align-items:center;gap:5px;margin-right:12px;padding:6px 12px;display:inline-flex}.btn-new:hover{opacity:.88}.modal-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:60;background:#18181b52;justify-content:center;align-items:flex-start;padding-top:8vh;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--radius-lg);width:480px;max-width:92vw;box-shadow:var(--shadow-drawer);max-height:84vh;overflow-y:auto}.modal-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:18px 22px;display:flex}.modal-head h2{margin:0;font-size:16px;font-weight:600}.modal-body{flex-direction:column;gap:14px;padding:18px 22px;display:flex}.modal-foot{border-top:1px solid var(--line);justify-content:flex-end;gap:8px;padding:14px 22px;display:flex}.field{flex-direction:column;gap:5px;display:flex}.field>label{color:var(--ink-3);font-size:11.5px;font-weight:500}.field>label .req{color:var(--status-blocked);margin-left:3px}.field input,.field select,.field textarea{border:1px solid var(--line);border-radius:var(--radius);font-size:13px;font-family:var(--font-sans);background:var(--surface);color:var(--ink);outline:none;padding:7px 10px}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--ink-3)}.field textarea{resize:vertical;min-height:56px}.field-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.btn{border:1px solid var(--line-strong);background:var(--surface);color:var(--ink-2);border-radius:var(--radius);cursor:pointer;font-size:12.5px;font-weight:500;font-family:var(--font-sans);padding:7px 14px}.btn:hover{background:var(--surface-hover)}.btn-primary{background:var(--ink);color:var(--surface);border-color:var(--ink)}.btn-primary:hover{opacity:.88}.btn-primary:disabled{opacity:.45;cursor:not-allowed}.btn-danger{color:var(--status-blocked);border-color:#dc262666}.btn-danger:hover{background:#dc26260f}.drawer-edit-row{align-items:center;gap:12px;display:flex}.drawer-edit-row select,.drawer-edit-row input{border:1px solid var(--line);border-radius:var(--radius-sm);font-size:12px;font-family:var(--font-sans);background:var(--surface);color:var(--ink);outline:none;padding:4px 8px}.drawer-edit-row select:focus,.drawer-edit-row input:focus{border-color:var(--ink-3)}.drawer-actions{border-top:1px solid var(--line-2);gap:8px;margin-top:4px;padding-top:8px;display:flex}.inline-prog{flex:1;align-items:center;gap:8px;display:flex}.inline-prog input[type=range]{flex:1}.drawer-title-input{border-radius:var(--radius-sm);width:100%;font-size:16px;font-weight:600;font-family:var(--font-sans);color:var(--ink);background:0 0;border:1px solid #0000;outline:none;margin-left:-6px;padding:2px 6px}.drawer-title-input:hover{background:var(--surface-hover)}.drawer-title-input:focus{background:var(--surface);border-color:var(--ink-3)}
