:root{--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--bg: #ffffff;--bg-soft: #f9f8f8;--bg-hover: #f2f1f0;--bg-active: #eceaff;--sidebar: #f7f6f5;--sidebar-hover: #ecebea;--surface: #ffffff;--surface-2: #f6f5f4;--border: #e8e6e4;--border-strong: #d4d2d0;--text: #1e1f21;--text-2: #6d6e6f;--text-3: #9b9a99;--accent: #4573d2;--accent-hover: #3a63bd;--accent-soft: #eaf0fb;--green: #4f9e7a;--green-soft: #e3f3ec;--yellow: #d99a2b;--yellow-soft: #fbf1dc;--red: #d9534f;--red-soft: #fbe7e6;--blue: #4573d2;--purple: #8d84e8;--purple-soft: #efedfc;--shadow-sm: 0 1px 2px rgba(30, 31, 33, .06);--shadow: 0 2px 8px rgba(30, 31, 33, .08), 0 0 1px rgba(30, 31, 33, .2);--shadow-lg: 0 12px 40px rgba(30, 31, 33, .16), 0 0 1px rgba(30, 31, 33, .2);--radius: 10px;--radius-sm: 6px;--sidebar-w: 248px;--topbar-h: 56px;color-scheme:light}[data-theme=dark]{--bg: #1e1f21;--bg-soft: #232426;--bg-hover: #2c2d30;--bg-active: #32334a;--sidebar: #18191a;--sidebar-hover: #2a2b2d;--surface: #26272a;--surface-2: #2e2f32;--border: #36373a;--border-strong: #46474b;--text: #f1f0ef;--text-2: #a9a8a7;--text-3: #75746f;--accent: #6b93e6;--accent-hover: #82a5ec;--accent-soft: #263453;--green: #5fbf93;--green-soft: #1f3a2f;--yellow: #e8b14d;--yellow-soft: #3b3020;--red: #ec6c68;--red-soft: #432826;--blue: #6b93e6;--purple: #a29bf0;--purple-soft: #2f2c4a;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow: 0 2px 10px rgba(0, 0, 0, .45), 0 0 1px rgba(255, 255, 255, .12);--shadow-lg: 0 14px 44px rgba(0, 0, 0, .6), 0 0 1px rgba(255, 255, 255, .14);color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);font-size:14px;line-height:1.45;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--accent);text-decoration:none}::selection{background:var(--accent-soft)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:10px;border:3px solid transparent;background-clip:content-box}::-webkit-scrollbar-track{background:transparent}.app{display:flex;height:100%;overflow:hidden}.sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--sidebar);border-right:1px solid var(--border);display:flex;flex-direction:column;transition:margin-left .2s ease;overflow:hidden}.sidebar.closed{margin-left:calc(-1 * var(--sidebar-w))}.sidebar-head{height:var(--topbar-h);display:flex;align-items:center;gap:10px;padding:0 16px;flex-shrink:0}.brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:17px;letter-spacing:-.3px}.brand-mark{width:26px;height:26px;border-radius:7px;display:block;flex-shrink:0}.sidebar-scroll{flex:1;overflow-y:auto;padding:4px 10px 16px}.nav-item{display:flex;align-items:center;gap:10px;width:100%;padding:7px 10px;border-radius:var(--radius-sm);border:0;background:none;color:var(--text);font-size:14px;text-align:left;position:relative}.nav-item:hover{background:var(--sidebar-hover)}.nav-item.active{background:var(--bg-active);font-weight:500}.nav-item svg{color:var(--text-2);flex-shrink:0}.nav-item .count{margin-left:auto;font-size:11px;font-weight:600;background:var(--accent);color:#fff;border-radius:10px;padding:1px 7px}.nav-label{display:flex;align-items:center;justify-content:space-between;margin:18px 10px 4px;font-size:12px;font-weight:600;color:var(--text-2)}.nav-label button{border:0;background:none;color:var(--text-2);padding:2px;border-radius:4px;display:grid}.nav-label button:hover{background:var(--sidebar-hover);color:var(--text)}.proj-dot{width:10px;height:10px;border-radius:3px;flex-shrink:0}.nav-item .proj-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.main{flex:1;display:flex;flex-direction:column;min-width:0;position:relative}.topbar{height:var(--topbar-h);display:flex;align-items:center;gap:12px;padding:0 20px;border-bottom:1px solid var(--border);background:var(--bg);flex-shrink:0}.content{flex:1;overflow:auto;position:relative}.search-box{flex:1;max-width:560px;margin:0 auto;position:relative}.search-box input{width:100%;height:34px;border-radius:17px;border:1px solid var(--border);background:var(--bg-soft);padding:0 14px 0 36px;outline:none;transition:all .15s}.search-box input:focus{background:var(--bg);border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.search-box>svg{position:absolute;left:12px;top:9px;color:var(--text-3)}.search-results{position:absolute;top:40px;left:0;right:0;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:6px;z-index:60;max-height:420px;overflow-y:auto}.sr-head{font-size:11px;font-weight:600;color:var(--text-3);text-transform:uppercase;letter-spacing:.4px;padding:8px 10px 4px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 12px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-size:13px;font-weight:500;white-space:nowrap;transition:background .12s,border-color .12s}.btn:hover{background:var(--bg-hover)}.btn:disabled{opacity:.55;cursor:default}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-ghost{border-color:transparent;background:transparent}.btn-ghost:hover{background:var(--bg-hover)}.btn-danger{color:var(--red)}.btn-sm{height:28px;padding:0 10px;font-size:12.5px}.btn-lg{height:40px;padding:0 18px;font-size:14px}.btn-create{border-radius:17px;height:34px;padding:0 14px 0 10px}.icon-btn{width:32px;height:32px;border-radius:var(--radius-sm);border:0;background:transparent;display:inline-grid;place-items:center;color:var(--text-2);flex-shrink:0}.icon-btn:hover{background:var(--bg-hover);color:var(--text)}.icon-btn.sm{width:26px;height:26px}.icon-btn.active{color:var(--accent);background:var(--accent-soft)}.input,.textarea,.select{width:100%;border:1px solid var(--border-strong);background:var(--surface);border-radius:var(--radius-sm);padding:8px 10px;outline:none;transition:border-color .12s,box-shadow .12s}.input:focus,.textarea:focus,.select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.textarea{resize:vertical;min-height:80px;line-height:1.5}.ghost-input{border:1px solid transparent;background:transparent;border-radius:var(--radius-sm);padding:4px 6px;outline:none;width:100%}.ghost-input:hover{border-color:var(--border)}.ghost-input:focus{border-color:var(--accent);background:var(--surface)}label.field{display:block;margin-bottom:14px}label.field>span{display:block;font-size:12px;font-weight:600;color:var(--text-2);margin-bottom:6px}.checkbox{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:13px}.checkbox input{width:16px;height:16px;accent-color:var(--accent)}.page{padding:28px 32px 80px;max-width:1180px;margin:0 auto}.page-wide{padding:0 0 60px}.page-head{display:flex;align-items:center;gap:12px;margin-bottom:22px;flex-wrap:wrap}.page-title{font-size:24px;font-weight:600;letter-spacing:-.4px;margin:0}.page-sub{color:var(--text-2);font-size:13px}.spacer{flex:1}.row{display:flex;align-items:center;gap:8px}.col{display:flex;flex-direction:column;gap:8px}.muted{color:var(--text-2)}.faint{color:var(--text-3)}.small{font-size:12px}.bold{font-weight:600}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.card-pad{padding:18px 20px}.card-title{font-size:16px;font-weight:600;margin:0 0 12px}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.divider{height:1px;background:var(--border);margin:14px 0}.proj-head{padding:16px 24px 0;border-bottom:1px solid var(--border);background:var(--bg)}.proj-head-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.proj-icon{width:36px;height:36px;border-radius:9px;display:grid;place-items:center;color:#fff;flex-shrink:0}.proj-title-input{font-size:20px;font-weight:600;letter-spacing:-.3px;border:1px solid transparent;background:none;border-radius:6px;padding:2px 6px;outline:none;min-width:120px;max-width:460px}.proj-title-input:hover{border-color:var(--border)}.proj-title-input:focus{border-color:var(--accent)}.tabs{display:flex;gap:2px;margin-top:10px;overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{display:flex;align-items:center;gap:6px;padding:8px 12px 10px;border:0;background:none;color:var(--text-2);font-size:14px;border-bottom:2px solid transparent;white-space:nowrap}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--text);font-weight:500}.toolbar{display:flex;align-items:center;gap:6px;padding:10px 24px;flex-wrap:wrap;border-bottom:1px solid var(--border);background:var(--bg)}.chip-btn{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border-radius:var(--radius-sm);border:1px solid transparent;background:none;font-size:13px;color:var(--text-2)}.chip-btn:hover{background:var(--bg-hover);color:var(--text)}.chip-btn.on{background:var(--accent-soft);color:var(--accent)}.avatar{border-radius:50%;display:inline-grid;place-items:center;color:#fff;font-weight:600;flex-shrink:0;-webkit-user-select:none;user-select:none;letter-spacing:.2px}.avatar.empty{border:1.5px dashed var(--border-strong);color:var(--text-3);background:transparent}.avatar-stack{display:flex}.avatar-stack .avatar{border:2px solid var(--bg);margin-left:-6px}.avatar-stack .avatar:first-child{margin-left:0}.pill{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:11px;font-size:12px;font-weight:500;white-space:nowrap;max-width:100%}.pill .dot{width:7px;height:7px;border-radius:50%}.tag-pill{height:20px;border-radius:10px;padding:0 8px;font-size:11.5px;font-weight:500;color:#fff;display:inline-flex;align-items:center;white-space:nowrap}.proj-chip{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:11px;background:var(--surface-2);font-size:12px;color:var(--text-2);white-space:nowrap;max-width:160px}.proj-chip span{overflow:hidden;text-overflow:ellipsis}.due{font-size:13px;color:var(--text-2);white-space:nowrap}.due.overdue{color:var(--red)}.due.today,.due.soon{color:var(--green)}.badge-count{font-size:11px;color:var(--text-3);display:inline-flex;align-items:center;gap:3px}.check{width:18px;height:18px;border-radius:50%;border:1.5px solid var(--text-3);background:transparent;display:grid;place-items:center;color:transparent;flex-shrink:0;padding:0;transition:all .12s}.check:hover{border-color:var(--green);color:var(--green);background:var(--green-soft)}.check.done{background:var(--green);border-color:var(--green);color:#fff}.check.milestone{border-radius:3px;transform:rotate(45deg);width:15px;height:15px}.check.milestone svg{transform:rotate(-45deg)}.check.approval{border-radius:4px}.progress{height:6px;background:var(--surface-2);border-radius:3px;overflow:hidden}.progress>div{height:100%;background:var(--green);border-radius:3px;transition:width .3s}.list{min-width:0}@media (min-width: 700px){.list{min-width:680px}}.list-head,.task-row{display:grid;align-items:center;border-bottom:1px solid var(--border)}.list-head{position:sticky;top:0;z-index:5;background:var(--bg);height:36px;font-size:12px;color:var(--text-2)}.list-head>div{padding:0 10px;border-left:1px solid var(--border);height:100%;display:flex;align-items:center}.list-head>div:first-child{border-left:0;padding-left:24px}.task-row{min-height:38px;background:var(--bg);position:relative}.task-row:hover{background:var(--bg-soft)}.task-row.selected{background:var(--accent-soft)}.task-row>.cell{padding:0 10px;height:100%;display:flex;align-items:center;border-left:1px solid var(--border);min-width:0;font-size:13px}.task-row>.cell:first-child{border-left:0;padding-left:8px;gap:8px}.task-row .grip{opacity:0;color:var(--text-3);cursor:grab;display:grid;width:16px}.task-row:hover .grip{opacity:1}.task-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.task-title.done{color:var(--text-3)}.task-meta{display:flex;align-items:center;gap:6px;flex-shrink:0}.row-details{opacity:0;font-size:12px;color:var(--text-2);border:0;background:none;display:flex;align-items:center;gap:3px;padding:2px 6px;border-radius:4px}.task-row:hover .row-details{opacity:1}.row-details:hover{background:var(--bg-hover)}.group-head{display:flex;align-items:center;gap:6px;padding:18px 12px 6px 4px;position:relative}.group-head .gname{font-weight:600;font-size:15px;border:1px solid transparent;background:none;padding:2px 6px;border-radius:4px;outline:none}.group-head .gname:hover{border-color:var(--border)}.group-head .gname:focus{border-color:var(--accent)}.group-drop.over{background:var(--accent-soft)}.add-row{display:flex;align-items:center;gap:8px;padding:0 0 0 30px;height:36px;color:var(--text-3);font-size:13px;border-bottom:1px solid var(--border)}.add-row input{border:0;background:none;outline:none;flex:1;height:100%;color:var(--text)}.add-row button{border:0;background:none;color:var(--text-3);display:flex;align-items:center;gap:6px;height:100%;padding:0}.add-row button:hover{color:var(--text)}.drop-line{position:absolute;left:0;right:0;top:-1px;height:2px;background:var(--accent);z-index:3}.drag-overlay{background:var(--surface);box-shadow:var(--shadow-lg);border-radius:8px;padding:8px 12px;font-size:13px;display:flex;align-items:center;gap:8px;max-width:360px;transform:rotate(1.5deg)}.subtask-indent{padding-left:26px!important}.board{display:flex;gap:14px;padding:16px 24px;align-items:flex-start;min-height:calc(100% - 4px)}.board-col{width:290px;flex-shrink:0;background:var(--bg-soft);border-radius:var(--radius);display:flex;flex-direction:column;max-height:calc(100vh - 200px)}.board-col.over{box-shadow:inset 0 0 0 2px var(--accent)}.board-col-head{display:flex;align-items:center;gap:6px;padding:12px 10px 8px 12px}.board-col-head .gname{font-weight:600;font-size:14px;flex:1;border:1px solid transparent;background:none;padding:2px 4px;border-radius:4px;outline:none;min-width:0}.board-col-head .gname:focus{border-color:var(--accent);background:var(--surface)}.board-cards{padding:0 8px 8px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;min-height:40px}.card-task{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:11px 12px;box-shadow:var(--shadow-sm);cursor:pointer;position:relative;transition:border-color .12s,box-shadow .12s}.card-task:hover{border-color:var(--border-strong);box-shadow:var(--shadow)}.card-task.dragging{opacity:.4}.card-task .ct-title{display:flex;gap:8px;align-items:flex-start;font-size:14px;line-height:1.35}.card-task .ct-title .check{margin-top:1px}.card-task .ct-foot{display:flex;align-items:center;gap:8px;margin-top:10px;min-height:22px}.card-task .ct-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}.board-add{border:0;background:none;color:var(--text-2);display:flex;align-items:center;gap:6px;padding:8px 10px;border-radius:6px;margin:0 8px 8px;font-size:13px}.board-add:hover{background:var(--bg-hover);color:var(--text)}.board-new-col{width:260px;flex-shrink:0}.cal{padding:12px 24px 24px}.cal-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-left:1px solid var(--border);border-top:1px solid var(--border)}.cal-dow{padding:6px 8px;font-size:12px;color:var(--text-2);border-right:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--bg-soft)}.cal-cell{min-height:118px;border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:4px;display:flex;flex-direction:column;gap:3px;position:relative}.cal-cell.other{background:var(--bg-soft)}.cal-cell.over{background:var(--accent-soft)}.cal-cell.weekend{background:var(--bg-soft)}.cal-num{font-size:12px;color:var(--text-2);padding:2px 4px;display:flex;align-items:center;justify-content:space-between}.cal-num.today span{background:var(--red);color:#fff;border-radius:10px;padding:0 6px;font-weight:600}.cal-add{opacity:0;border:0;background:none;color:var(--text-3);padding:0;display:grid}.cal-cell:hover .cal-add{opacity:1}.cal-chip{display:flex;align-items:center;gap:5px;font-size:12px;padding:3px 6px;border-radius:5px;background:var(--surface);border:1px solid var(--border);cursor:pointer;overflow:hidden;white-space:nowrap}.cal-chip:hover{border-color:var(--border-strong)}.cal-chip.done{color:var(--text-3);text-decoration:line-through}.cal-chip .bar{width:3px;align-self:stretch;border-radius:2px;flex-shrink:0}.cal-more{font-size:11px;color:var(--text-2);padding:0 6px;border:0;background:none;text-align:left}.tl{display:flex;height:100%;min-height:400px;position:relative}.tl-left{width:280px;flex-shrink:0;border-right:1px solid var(--border);background:var(--bg);z-index:3}.tl-right{flex:1;overflow:auto;position:relative}.tl-row{height:36px;display:flex;align-items:center;border-bottom:1px solid var(--border);padding:0 10px;gap:8px;font-size:13px}.tl-row.sec{font-weight:600;background:var(--bg-soft)}.tl-hdr{height:52px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--bg);z-index:4}.tl-months{height:26px;position:relative;border-bottom:1px solid var(--border)}.tl-month{position:absolute;top:0;height:26px;font-size:12px;font-weight:600;padding:5px 8px;border-left:1px solid var(--border);white-space:nowrap;overflow:hidden}.tl-days{height:26px;position:relative}.tl-day{position:absolute;top:0;height:26px;font-size:10.5px;color:var(--text-3);text-align:center;line-height:26px}.tl-day.today{color:#fff}.tl-day.today span{background:var(--red);border-radius:8px;padding:1px 4px}.tl-grid-col{position:absolute;top:0;bottom:0;border-left:1px solid var(--border);opacity:.6}.tl-weekend{position:absolute;top:0;bottom:0;background:var(--bg-soft)}.tl-today-line{position:absolute;top:0;bottom:0;width:2px;background:var(--red);z-index:2;opacity:.7}.tl-bar{position:absolute;height:24px;border-radius:6px;display:flex;align-items:center;padding:0 8px;gap:6px;font-size:12px;color:#fff;cursor:grab;-webkit-user-select:none;user-select:none;z-index:3;box-shadow:var(--shadow-sm);white-space:nowrap;overflow:visible}.tl-bar.done{opacity:.55}.tl-bar .lbl{overflow:hidden;text-overflow:ellipsis}.tl-bar .handle{position:absolute;top:0;bottom:0;width:8px;cursor:ew-resize}.tl-bar .handle.l{left:-2px}.tl-bar .handle.r{right:-2px}.tl-ms{position:absolute;width:16px;height:16px;transform:rotate(45deg);border-radius:3px;z-index:3;cursor:grab}.tl-ms-lbl{position:absolute;font-size:12px;white-space:nowrap;z-index:3;color:var(--text);pointer-events:none}.tl-unsched{font-size:12px;color:var(--text-3);border:1px dashed var(--border-strong);border-radius:6px;padding:3px 8px;position:absolute;background:var(--bg);cursor:pointer;z-index:3}.tl-arrows{position:absolute;top:0;left:0;pointer-events:none;z-index:2}.pane-wrap{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;pointer-events:none}.pane{position:absolute;top:0;right:0;bottom:0;width:min(660px,100vw);background:var(--surface);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;pointer-events:auto;animation:slideIn .18s ease}@keyframes slideIn{0%{transform:translate(30px);opacity:0}to{transform:none;opacity:1}}.pane-top{height:52px;display:flex;align-items:center;gap:6px;padding:0 12px 0 20px;border-bottom:1px solid var(--border);flex-shrink:0}.pane-body{flex:1;overflow-y:auto;padding:18px 24px 24px}.pane-title{width:100%;font-size:22px;font-weight:600;letter-spacing:-.3px;border:1px solid transparent;border-radius:6px;padding:4px 8px;margin-left:-8px;outline:none;resize:none;background:none;line-height:1.3;overflow:hidden}.pane-title:hover{border-color:var(--border)}.pane-title:focus{border-color:var(--accent)}.complete-btn{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;white-space:nowrap;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);font-size:13px;color:var(--text)}.complete-btn:hover{border-color:var(--green);color:var(--green);background:var(--green-soft)}.complete-btn.done{background:var(--green-soft);border-color:var(--green);color:var(--green)}.props{display:grid;grid-template-columns:130px minmax(0,1fr);row-gap:4px;column-gap:12px;margin:14px 0 6px;align-items:start}.props>.k{color:var(--text-2);font-size:13px;padding:7px 0}.props>.v{min-height:32px;display:flex;align-items:center;flex-wrap:wrap;gap:6px;min-width:0}.prop-btn{display:inline-flex;align-items:center;gap:8px;min-height:30px;padding:3px 8px;border-radius:var(--radius-sm);border:1px solid transparent;background:none;font-size:13px;color:var(--text);max-width:100%}.prop-btn:hover{border-color:var(--border-strong)}.prop-btn.placeholder{color:var(--text-3)}.pane-section{margin-top:22px}.pane-section h4{font-size:14px;font-weight:600;margin:0 0 8px;display:flex;align-items:center;gap:8px}.desc{width:100%;min-height:70px;border:1px solid transparent;border-radius:var(--radius-sm);padding:8px 10px;outline:none;resize:none;background:none;line-height:1.55;overflow:hidden}.desc:hover{border-color:var(--border)}.desc:focus{border-color:var(--accent)}.sub-row{display:flex;align-items:center;gap:8px;min-height:36px;border-bottom:1px solid var(--border);padding:0 4px}.sub-row:first-child{border-top:1px solid var(--border)}.sub-row input{flex:1;border:0;background:none;outline:none;min-width:0;font-size:13.5px}.sub-row input.done{color:var(--text-3);text-decoration:line-through}.blocked-banner{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:8px;background:var(--yellow-soft);color:var(--text);font-size:13px;margin-top:8px}.approval-bar{display:flex;gap:6px;flex-wrap:wrap}.att-grid{display:flex;flex-wrap:wrap;gap:8px}.att{display:flex;align-items:center;gap:8px;border:1px solid var(--border);border-radius:8px;padding:6px 8px 6px 10px;font-size:12.5px;max-width:260px;background:var(--surface)}.att .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.att .nm:hover{color:var(--accent)}.dropzone{border:1.5px dashed var(--accent);background:var(--accent-soft);border-radius:10px;padding:18px;text-align:center;color:var(--accent);font-size:13px}.activity{background:var(--bg-soft);border-top:1px solid var(--border);margin:24px -24px -24px;padding:18px 24px 22px}.story{display:flex;gap:10px;margin-bottom:14px}.story-sys{font-size:12.5px;color:var(--text-2);margin:0 0 8px 38px}.story-sys b{color:var(--text);font-weight:500}.story-body{font-size:13.5px;white-space:pre-wrap;word-break:break-word;margin-top:2px}.mention{color:var(--accent);background:var(--accent-soft);border-radius:4px;padding:0 3px;font-weight:500}.composer{display:flex;gap:10px;align-items:flex-start;position:relative}.composer textarea{min-height:42px}.mention-pop{position:absolute;bottom:100%;left:38px;background:var(--surface);box-shadow:var(--shadow-lg);border-radius:8px;padding:4px;width:260px;z-index:5;margin-bottom:4px}.pane-foot{border-top:1px solid var(--border);padding:10px 20px;display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text-2);flex-shrink:0;background:var(--surface)}.breadcrumb{font-size:12.5px;color:var(--text-2);display:flex;align-items:center;gap:4px;margin-bottom:4px;cursor:pointer}.breadcrumb:hover{color:var(--accent)}.popover{position:fixed;z-index:1000;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:6px;min-width:200px;max-height:420px;overflow-y:auto;animation:pop .12s ease}@keyframes pop{0%{transform:translateY(-4px);opacity:0}to{transform:none;opacity:1}}.menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:7px 10px;border-radius:var(--radius-sm);border:0;background:none;text-align:left;font-size:13.5px;color:var(--text)}.menu-item:hover,.menu-item.hl{background:var(--bg-hover)}.menu-item svg{color:var(--text-2);flex-shrink:0}.menu-item.danger{color:var(--red)}.menu-item.danger svg{color:var(--red)}.menu-item .check-mark{margin-left:auto;color:var(--accent)}.menu-sep{height:1px;background:var(--border);margin:5px 4px}.menu-search{width:100%;border:1px solid var(--border);background:var(--bg-soft);border-radius:6px;padding:7px 9px;outline:none;margin-bottom:4px}.menu-search:focus{border-color:var(--accent)}.menu-head{font-size:11px;font-weight:600;color:var(--text-3);text-transform:uppercase;letter-spacing:.4px;padding:6px 10px 2px}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f101273;z-index:900;display:grid;place-items:center;padding:20px;animation:fade .15s}@keyframes fade{0%{opacity:0}to{opacity:1}}.modal{background:var(--surface);border-radius:14px;box-shadow:var(--shadow-lg);width:min(560px,100%);max-height:90vh;display:flex;flex-direction:column;animation:pop .15s ease}.modal.wide{width:min(780px,100%)}.modal-head{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border)}.modal-head h3{margin:0;font-size:17px;font-weight:600;flex:1}.modal-body{padding:18px 20px;overflow-y:auto}.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:14px 20px;border-top:1px solid var(--border)}.date-pop{padding:12px;width:280px}.date-pop .quick{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.swatches{display:flex;flex-wrap:wrap;gap:6px}.swatch{width:24px;height:24px;border-radius:6px;border:2px solid transparent;cursor:pointer;padding:0}.swatch.on{border-color:var(--text)}.toasts{position:fixed;bottom:20px;left:50%;transform:translate(-50%);z-index:2000;display:flex;flex-direction:column;gap:8px;align-items:center}.toast{background:#1e1f21;color:#fff;border-radius:8px;padding:10px 14px;font-size:13.5px;box-shadow:var(--shadow-lg);display:flex;align-items:center;gap:14px;animation:pop .15s;max-width:90vw}[data-theme=dark] .toast{background:#f1f0ef;color:#1e1f21}.toast.error{background:var(--red);color:#fff}.toast button{border:0;background:none;color:var(--accent);font-weight:600;padding:0}[data-theme=dark] .toast button{color:var(--accent-hover)}.empty-state{text-align:center;padding:48px 20px;color:var(--text-2)}.empty-state svg{color:var(--text-3);margin-bottom:10px}.empty-state h3{color:var(--text);margin:0 0 6px;font-size:16px;font-weight:600}.home-hero{text-align:center;margin:12px 0 28px}.home-hero .date{font-size:14px;font-weight:500;color:var(--text-2)}.home-hero h1{font-size:30px;font-weight:500;margin:4px 0 14px;letter-spacing:-.5px}.home-stats{display:inline-flex;gap:22px;background:var(--bg-soft);border-radius:20px;padding:7px 18px;font-size:13px;color:var(--text-2)}.home-stats b{color:var(--text)}.proj-tile{display:flex;align-items:center;gap:12px;padding:10px;border-radius:10px;cursor:pointer}.proj-tile:hover{background:var(--bg-hover)}.proj-tile .proj-icon{width:44px;height:44px;border-radius:11px}.mini-task{display:flex;align-items:center;gap:10px;padding:8px 4px;border-bottom:1px solid var(--border);font-size:13.5px}.mini-task:last-child{border-bottom:0}.mini-task .t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.inbox-item{display:flex;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border);cursor:pointer;position:relative}.inbox-item:hover{background:var(--bg-soft)}.inbox-item.unread:before{content:"";position:absolute;left:4px;top:22px;width:7px;height:7px;border-radius:50%;background:var(--accent)}.inbox-item .acts{opacity:0}.inbox-item:hover .acts{opacity:1}.table{width:100%;border-collapse:collapse;font-size:13.5px}.table th{text-align:left;font-weight:500;font-size:12px;color:var(--text-2);padding:8px 12px;border-bottom:1px solid var(--border);white-space:nowrap}.table td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle}.table tr.click:hover td{background:var(--bg-soft);cursor:pointer}.wl{padding:0 24px 40px}.wl-grid{display:grid;border-left:1px solid var(--border);border-top:1px solid var(--border);min-width:860px}.wl-cell{border-right:1px solid var(--border);border-bottom:1px solid var(--border);min-height:54px;padding:6px;position:relative}.wl-cell.head{min-height:0;font-size:12px;color:var(--text-2);background:var(--bg-soft);padding:7px 8px;position:sticky;top:0;z-index:2}.wl-cell.head.today{color:var(--red);font-weight:600}.wl-cell.person{display:flex;align-items:center;gap:10px;font-size:13.5px;position:sticky;left:0;background:var(--bg);z-index:1}.wl-cell.weekend{background:var(--bg-soft)}.wl-cell.over{background:var(--accent-soft)}.wl-load{height:26px;border-radius:6px;display:grid;place-items:center;font-size:12px;font-weight:600}.wl-load.ok{background:var(--green-soft);color:var(--green)}.wl-load.full{background:var(--yellow-soft);color:var(--yellow)}.wl-load.over{background:var(--red-soft);color:var(--red)}.wl-load.none{color:var(--text-3);font-weight:400}.wl-chip{font-size:11.5px;line-height:1.25;padding:4px 6px;border-radius:5px;background:var(--surface);border:1px solid var(--border);margin-top:4px;cursor:grab;overflow:hidden}.wl-chip-title{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}.wl-chip:hover{border-color:var(--border-strong)}.cap-bar{height:8px;border-radius:4px;background:var(--surface-2);overflow:hidden;display:flex}.dash-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}.widget{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;min-height:260px;display:flex;flex-direction:column;position:relative}.widget.number{min-height:150px}.widget h5{margin:0 0 10px;font-size:14px;font-weight:600;padding-right:30px}.widget .big{font-size:46px;font-weight:600;letter-spacing:-1px;margin:auto 0;text-align:center}.widget .wmenu{position:absolute;top:10px;right:10px;opacity:0}.widget:hover .wmenu{opacity:1}.widget .wsub{font-size:12px;color:var(--text-2);text-align:center}.report-day{margin-bottom:20px}.report-day h4{font-size:13px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-2);margin:0 0 6px;padding-bottom:6px;border-bottom:1px solid var(--border)}.report-task{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:14px;border-bottom:1px dashed var(--border)}.stat-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:22px}.stat{background:var(--bg-soft);border-radius:var(--radius);padding:14px 16px}.stat .n{font-size:26px;font-weight:600;letter-spacing:-.5px}.stat .l{font-size:12px;color:var(--text-2)}.goal-row{display:grid;grid-template-columns:minmax(0,1fr) 180px 110px 120px;gap:12px;align-items:center;padding:12px 14px;border-bottom:1px solid var(--border);cursor:pointer}.goal-row:hover{background:var(--bg-soft)}.rule-card{border:1px solid var(--border);border-radius:10px;padding:12px 14px;display:flex;align-items:center;gap:12px;margin-bottom:8px}.rule-flow{display:flex;flex-direction:column;gap:10px}.rule-step{border:1px solid var(--border);border-radius:10px;padding:12px;background:var(--bg-soft)}.rule-step .lbl{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text-2);margin-bottom:8px}.switch{width:34px;height:20px;border-radius:10px;background:var(--border-strong);border:0;position:relative;padding:0;flex-shrink:0;transition:background .15s}.switch:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s;box-shadow:var(--shadow-sm)}.switch.on{background:var(--green)}.switch.on:after{transform:translate(14px)}.auth{min-height:100%;display:grid;place-items:center;padding:24px;background:var(--bg-soft)}.auth-card{width:min(400px,100%);background:var(--surface);border-radius:16px;box-shadow:var(--shadow);padding:32px 30px}.auth-card h1{font-size:22px;margin:18px 0 6px;font-weight:600;letter-spacing:-.3px}.auth-err{background:var(--red-soft);color:var(--red);border-radius:8px;padding:9px 12px;font-size:13px;margin-bottom:12px}.auth-ok{background:var(--green-soft);color:var(--green);border-radius:8px;padding:9px 12px;font-size:13px;margin-bottom:12px}.loading{height:100%;display:grid;place-items:center;color:var(--text-2)}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.mobile-only{display:none}@media (max-width: 900px){.sidebar{position:fixed;top:0;bottom:0;left:0;z-index:80;box-shadow:var(--shadow-lg)}.sidebar.closed{margin-left:0;transform:translate(-100%);box-shadow:none}.sidebar{transition:transform .2s ease}.sidebar-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;z-index:79}.mobile-only{display:inline-grid}.hide-mobile{display:none!important}.page{padding:18px 16px 80px}.topbar{padding:0 10px;gap:6px}.proj-head{padding:12px 14px 0}.toolbar{padding:8px 14px}.board{padding:12px 14px}.cal{padding:10px 10px 20px}.cal-cell{min-height:84px}.grid-2,.grid-3{grid-template-columns:1fr}.stat-row{grid-template-columns:repeat(2,minmax(0,1fr))}.props{grid-template-columns:100px minmax(0,1fr)}.pane-body{padding:14px 16px 20px}.activity{margin:24px -16px -20px;padding:16px}.goal-row{grid-template-columns:minmax(0,1fr) 90px}.goal-row>:nth-child(3),.goal-row>:nth-child(4){display:none}.tl-left{width:170px}.wl{padding:0 10px 30px}}@media (max-width: 600px){.search-box{display:none}.search-box.open{display:block;position:absolute;left:8px;right:8px;top:10px;max-width:none;z-index:70}.cal-chip{font-size:11px;padding:2px 4px}.home-hero h1{font-size:24px}}@media print{.sidebar,.topbar,.no-print,.pane-wrap,.toasts{display:none!important}.app,.main,.content{height:auto;overflow:visible;display:block}body{background:#fff;color:#000}.page{max-width:none;padding:0}}.demo-banner{position:fixed;bottom:calc(12px + env(safe-area-inset-bottom,0px));left:calc(12px + env(safe-area-inset-left,0px));z-index:1500;display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:18px;padding:5px 6px 5px 12px;font-size:12px;color:var(--text-2)}.demo-banner b{color:var(--text);font-weight:600}.demo-banner button{border:0;background:var(--bg-hover);color:var(--text);border-radius:12px;padding:3px 9px;font-size:12px;display:inline-flex;align-items:center;gap:4px}.demo-banner button:hover{background:var(--border)}@media (max-width: 600px){.demo-banner span{display:none}}.demo-accounts{border:1px dashed var(--border-strong);border-radius:10px;padding:10px 12px;margin-bottom:16px;font-size:13px}.demo-accounts button{display:flex;width:100%;justify-content:space-between;border:0;background:none;padding:6px 4px;border-radius:6px;color:var(--text)}.demo-accounts button:hover{background:var(--bg-hover)}.rich{border:1px solid transparent;border-radius:var(--radius-sm);position:relative}.rich:hover:not(.readonly){border-color:var(--border)}.rich.focused{border-color:var(--accent)}.rich .ProseMirror{outline:none;min-height:70px;padding:8px 10px;line-height:1.55;font-size:14px}.rich.readonly .ProseMirror{min-height:0}.rich .ProseMirror p{margin:0 0 8px}.rich .ProseMirror p:last-child{margin-bottom:0}.rich .ProseMirror h3{font-size:15px;font-weight:600;margin:12px 0 6px}.rich .ProseMirror ul,.rich .ProseMirror ol{padding-left:22px;margin:0 0 8px}.rich .ProseMirror a{color:var(--accent);text-decoration:underline;cursor:pointer}.rich .ProseMirror code{background:var(--surface-2);border-radius:4px;padding:1px 4px;font-size:12.5px}.rich .ProseMirror pre{background:var(--surface-2);border-radius:6px;padding:10px 12px;font-size:12.5px;overflow-x:auto}.rich .ProseMirror ul[data-type=taskList]{list-style:none;padding-left:2px}.rich .ProseMirror ul[data-type=taskList] li{display:flex;gap:8px;align-items:flex-start}.rich .ProseMirror ul[data-type=taskList] li>label{margin-top:3px}.rich .ProseMirror ul[data-type=taskList] li>label input{accent-color:var(--green);width:15px;height:15px}.rich .ProseMirror ul[data-type=taskList] li[data-checked=true]>div{color:var(--text-3);text-decoration:line-through}.rich .ProseMirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--text-3);float:left;height:0;pointer-events:none}.rich-toolbar{display:flex;gap:2px;align-items:center;padding:4px 6px;border-bottom:1px solid var(--border);flex-wrap:wrap}.rich-sep{width:1px;height:18px;background:var(--border);margin:0 4px}fieldset.perm{border:0;padding:0;margin:0;min-width:0}.timer-chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 4px 0 10px;border-radius:15px;background:var(--green-soft);color:var(--green);font-size:12.5px;max-width:260px}.timer-chip>button.ellipsis{border:0;background:none;color:var(--text);font-size:12.5px;padding:0;max-width:140px}.timer-chip .time{font-variant-numeric:tabular-nums;font-weight:600}.timer-chip .icon-btn{color:var(--red)}@media (max-width: 600px){.timer-chip>button.ellipsis{display:none}}.reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px;align-items:center}.reaction{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 8px;border-radius:12px;border:1px solid var(--border);background:var(--surface);font-size:12.5px}.reaction.mine{border-color:var(--accent);background:var(--accent-soft)}.emoji-pick{display:grid;grid-template-columns:repeat(8,30px);gap:2px}.emoji-pick button{border:0;background:none;font-size:17px;height:30px;border-radius:6px}.emoji-pick button:hover{background:var(--bg-hover)}.story.pinned{background:var(--yellow-soft);border-radius:10px;padding:10px;margin:0 -10px 14px}.pin-label{font-size:11px;font-weight:600;color:var(--yellow);display:flex;align-items:center;gap:4px;margin-bottom:4px}.mention.link{cursor:pointer}.pending-files{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.readonly-banner{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:8px;background:var(--surface-2);color:var(--text-2);font-size:13px;margin-bottom:8px}.row-check{width:16px;height:16px;border-radius:4px;border:1.5px solid var(--border-strong);background:var(--surface);display:grid;place-items:center;padding:0;color:#fff;flex-shrink:0;opacity:0}.task-row:hover .row-check,.row-check.on,.list.selecting .row-check{opacity:1}.row-check.on{background:var(--accent);border-color:var(--accent)}.task-row.checked{background:var(--accent-soft)}.bulk-bar{position:fixed;left:50%;transform:translate(-50%);bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:75;background:var(--text);color:var(--bg);border-radius:12px;box-shadow:var(--shadow-lg);display:flex;align-items:center;gap:4px;padding:6px 8px 6px 14px;font-size:13px;max-width:calc(100vw - 24px);flex-wrap:wrap}.bulk-bar>b{margin-right:8px;font-weight:600;white-space:nowrap}.bulk-bar .bb{border:0;background:none;color:inherit;height:30px;padding:0 10px;border-radius:6px;display:inline-flex;align-items:center;gap:6px;font-size:13px}.bulk-bar .bb:hover{background:color-mix(in srgb,var(--bg) 18%,transparent)}.bulk-bar .bb.danger{color:#ff9b97}.kbd{display:inline-block;min-width:22px;text-align:center;padding:1px 6px;border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:5px;font-size:12px;font-family:ui-monospace,monospace;background:var(--surface-2)}.shortcut-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid var(--border);font-size:13.5px}.ts-grid{display:grid;border-left:1px solid var(--border);border-top:1px solid var(--border);font-size:13px;min-width:760px}.ts-grid>div{border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:8px 10px;font-variant-numeric:tabular-nums}.ts-grid .h{background:var(--bg-soft);color:var(--text-2);font-size:12px}.ts-grid .num{text-align:right}.ts-grid .sub{padding-left:34px;color:var(--text-2)}.ts-grid .tot{font-weight:600}fieldset.perm:disabled .prop-btn.placeholder,fieldset.perm:disabled .icon-btn.sm[title^=Remove],fieldset.perm:disabled .time-actions{display:none}
