:root{--bg: #1e1f21;--bg-panel: #26272a;--bg-sidebar: #191a1c;--bg-hover: #2e2f33;--bg-active: #35363b;--border: #35363b;--border-soft: #2c2d31;--text: #d5d6d7;--text-dim: #8b8d91;--text-faint: #6b6d72;--accent: #7b68ee;--accent-hover: #8d7cf3;--danger: #e74c3c;--radius: 8px;--sidebar-w: 240px;font-size:14px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}button,input,select,textarea{font-family:inherit}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#3d3e43;border-radius:6px;border:2px solid var(--bg)}::-webkit-scrollbar-track{background:transparent}.app{display:flex;height:100vh;overflow:hidden}.main{flex:1;display:flex;flex-direction:column;min-width:0}.content{flex:1;overflow:auto;position:relative}.sidebar{width:var(--sidebar-w);background:var(--bg-sidebar);border-right:1px solid var(--border-soft);display:flex;flex-direction:column;flex-shrink:0}.sidebar-header{display:flex;align-items:center;gap:8px;padding:14px 16px;border-bottom:1px solid var(--border-soft);font-weight:700;font-size:15px}.workspace-avatar{width:26px;height:26px;border-radius:6px;background:linear-gradient(135deg,#7b68ee,#4b9fe0);display:flex;align-items:center;justify-content:center;color:#fff;font-size:13px;font-weight:700}.sidebar-section{padding:10px 8px 4px}.sidebar-label{padding:6px 10px;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-faint);font-weight:600}.nav-item{display:flex;align-items:center;gap:9px;width:100%;padding:7px 10px;border:0;background:transparent;color:var(--text-dim);border-radius:6px;cursor:pointer;font-size:13.5px;text-align:left}.nav-item:hover{background:var(--bg-hover);color:var(--text)}.nav-item.active{background:#7b68ee29;color:#b3a7f7;font-weight:600}.nav-item .icon{width:17px;text-align:center;opacity:.9}.nav-count{margin-left:auto;font-size:11.5px;color:var(--text-faint)}.sidebar-footer{margin-top:auto;padding:12px 16px;border-top:1px solid var(--border-soft);display:flex;align-items:center;gap:9px}.sidebar-footer .logout{margin-left:auto;background:none;border:0;color:var(--text-faint);cursor:pointer;font-size:12px}.sidebar-footer .logout:hover{color:var(--danger)}.avatar{width:26px;height:26px;border-radius:50%;color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0}.avatar.sm{width:22px;height:22px;font-size:10px}.topbar{border-bottom:1px solid var(--border-soft);background:var(--bg)}.breadcrumb{display:flex;align-items:center;gap:8px;padding:12px 20px 6px;font-size:13.5px;color:var(--text-dim)}.breadcrumb .crumb-badge{width:20px;height:20px;border-radius:5px;background:#e64d3d;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-weight:700}.breadcrumb b{color:var(--text);font-weight:600}.view-tabs{display:flex;align-items:center;gap:2px;padding:0 14px}.view-tab{display:flex;align-items:center;gap:7px;padding:9px 12px;border:0;background:transparent;color:var(--text-dim);font-size:13.5px;cursor:pointer;border-bottom:2px solid transparent}.view-tab:hover{color:var(--text)}.view-tab.active{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.toolbar{display:flex;align-items:center;gap:8px;padding:10px 20px;border-bottom:1px solid var(--border-soft)}.toolbar .spacer{flex:1}.tool-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:16px;border:1px solid var(--border);background:transparent;color:var(--text-dim);font-size:12.5px;cursor:pointer}.tool-btn:hover{background:var(--bg-hover);color:var(--text)}.tool-btn.on{background:#7b68ee2e;border-color:var(--accent);color:#b3a7f7}.search-input{background:var(--bg-panel);border:1px solid var(--border);color:var(--text);border-radius:16px;padding:6px 14px;font-size:12.5px;width:200px;outline:none}.search-input:focus{border-color:var(--accent)}.btn-primary{background:var(--accent);color:#fff;border:0;border-radius:7px;padding:7px 14px;font-size:13px;font-weight:600;cursor:pointer}.btn-primary:hover{background:var(--accent-hover)}.btn-ghost{background:transparent;color:var(--text-dim);border:1px solid var(--border);border-radius:7px;padding:6px 12px;font-size:12.5px;cursor:pointer}.btn-ghost:hover{color:var(--text);background:var(--bg-hover)}.chip{display:inline-flex;align-items:center;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:700;color:#fff;white-space:nowrap}.chips{display:flex;flex-wrap:wrap;gap:4px}.status-badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:5px;font-size:10.5px;font-weight:800;letter-spacing:.4px;color:#1b1b1b;cursor:pointer;border:0}.status-dot{width:8px;height:8px;border-radius:2px;display:inline-block;flex-shrink:0}.list-wrap{padding:12px 20px 80px}.list-meta{color:var(--text-dim);font-size:12.5px;padding:6px 0 10px}.task-table{width:100%;border-collapse:collapse}.task-table th{text-align:left;font-size:11.5px;color:var(--text-faint);font-weight:600;padding:6px 10px;border-bottom:1px solid var(--border-soft);position:sticky;top:0;background:var(--bg);z-index:2}.task-table td{padding:7px 10px;border-bottom:1px solid var(--border-soft);font-size:13px;vertical-align:middle}.task-row{cursor:pointer}.task-row:hover{background:var(--bg-hover)}.task-row .task-name{display:flex;align-items:center;gap:8px;font-weight:600;color:var(--text)}.sub-row .task-name{padding-left:34px;font-weight:400;color:var(--text-dim)}.expander{background:none;border:0;color:var(--text-faint);cursor:pointer;width:18px;font-size:10px;padding:0}.expander:hover{color:var(--text)}.sub-count{color:var(--text-faint);font-size:11.5px;font-weight:400}.add-row-btn{background:none;border:0;color:var(--text-faint);cursor:pointer;padding:9px 10px;font-size:13px;display:flex;gap:7px;align-items:center}.add-row-btn:hover{color:var(--accent)}.inline-input{background:var(--bg-panel);border:1px solid var(--accent);color:var(--text);border-radius:6px;padding:6px 10px;font-size:13px;outline:none;width:320px}.board{display:flex;gap:14px;padding:16px 20px 80px;align-items:flex-start;overflow-x:auto;min-height:calc(100% - 20px)}.board-col{width:272px;flex-shrink:0;background:var(--bg-panel);border-radius:10px;padding:10px}.board-col-head{display:flex;align-items:center;gap:8px;padding:2px 4px 10px;font-size:13px;font-weight:600}.board-col-head .count{color:var(--text-faint);font-weight:400}.board-card{background:#2d2e32;border:1px solid var(--border-soft);border-radius:8px;padding:10px 12px;margin-bottom:8px;cursor:pointer}.board-card:hover{border-color:#4a4b52}.board-card.dragging{opacity:.4}.board-col.drag-over{outline:2px dashed var(--accent);outline-offset:-2px}.board-card .card-title{font-size:13px;font-weight:600;margin-bottom:7px}.board-card .card-chips{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:4px}.board-card .card-foot{display:flex;align-items:center;gap:8px;color:var(--text-faint);font-size:11.5px;margin-top:6px}.board-add{background:none;border:0;color:var(--text-faint);cursor:pointer;padding:7px 4px;font-size:12.5px;width:100%;text-align:left}.board-add:hover{color:var(--accent)}.calendar-wrap{padding:16px 20px 60px}.cal-header{display:flex;align-items:center;gap:12px;margin-bottom:12px}.cal-title{font-size:16px;font-weight:700;text-transform:capitalize;min-width:180px}.cal-nav{display:flex;gap:4px}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);border-left:1px solid var(--border-soft);border-top:1px solid var(--border-soft)}.cal-dow{padding:8px;font-size:11px;color:var(--text-faint);text-transform:uppercase;font-weight:700;border-right:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft);background:var(--bg-panel)}.cal-cell{min-height:108px;border-right:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft);padding:6px}.cal-cell.other{background:#1a1b1d}.cal-cell .day-num{font-size:12px;color:var(--text-dim);margin-bottom:4px}.cal-cell.today .day-num{color:#fff;background:var(--accent);width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center}.cal-event{font-size:11.5px;padding:3px 7px;border-radius:4px;margin-bottom:3px;color:#fff;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-left:3px solid rgba(255,255,255,.5)}.cal-empty-note{color:var(--text-faint);font-size:12.5px;margin-top:12px}.gantt-wrap{padding:16px 0 60px;overflow-x:auto}.gantt-inner{min-width:900px;padding:0 20px}.gantt-head-row{display:flex;border-bottom:1px solid var(--border)}.gantt-label-col{width:240px;flex-shrink:0}.gantt-days{display:flex;flex:1}.gantt-day{flex:1;text-align:center;font-size:10.5px;color:var(--text-faint);padding:6px 0;border-left:1px solid var(--border-soft)}.gantt-day.weekend{background:#1a1b1d}.gantt-day.today{color:#b3a7f7;font-weight:700}.gantt-row{display:flex;align-items:center;border-bottom:1px solid var(--border-soft);height:38px}.gantt-row .gantt-label-col{font-size:12.5px;padding-right:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.gantt-row .gantt-label-col:hover{color:#b3a7f7}.gantt-track{position:relative;flex:1;height:100%}.gantt-grid-line{position:absolute;top:0;bottom:0;border-left:1px solid var(--border-soft)}.gantt-bar{position:absolute;top:8px;height:22px;border-radius:5px;cursor:pointer;display:flex;align-items:center;padding:0 8px;font-size:11px;color:#fff;font-weight:600;overflow:hidden;white-space:nowrap}.gantt-note{padding:14px 20px;color:var(--text-faint);font-size:12.5px}.dash{padding:20px 20px 80px;display:flex;flex-direction:column;gap:16px}.dash-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}.tile{background:var(--bg-panel);border:1px solid var(--border-soft);border-radius:10px;padding:16px 18px}.tile .tile-label{font-size:12px;color:var(--text-dim);margin-bottom:6px}.tile .tile-value{font-size:26px;font-weight:800;color:#fff;font-variant-numeric:tabular-nums}.tile .tile-sub{font-size:11.5px;color:var(--text-faint);margin-top:4px}.dash-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}@media (max-width: 980px){.dash-grid{grid-template-columns:1fr}}.panel{background:var(--bg-panel);border:1px solid var(--border-soft);border-radius:10px;padding:16px 18px}.panel h3{margin:0 0 14px;font-size:13.5px;color:var(--text)}.hbar-row{display:grid;grid-template-columns:110px 1fr 76px;align-items:center;gap:10px;margin-bottom:9px;font-size:12.5px}.hbar-name{color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}.hbar-track{background:#1c1d1f;border-radius:4px;height:18px;overflow:hidden}.hbar-fill{height:100%;border-radius:4px 0 0 4px}.hbar-val{color:var(--text);font-variant-numeric:tabular-nums;font-size:12px}.legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:10px;font-size:12px;color:var(--text-dim)}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:10px;height:10px;border-radius:3px;display:inline-block}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:50;display:flex;align-items:flex-start;justify-content:center;padding:4vh 16px}.modal{background:#222327;border:1px solid var(--border);border-radius:12px;width:100%;max-width:900px;max-height:92vh;display:flex;overflow:hidden;box-shadow:0 20px 60px #00000080}.modal-main{flex:1.6;padding:22px 26px;overflow-y:auto;min-width:0}.modal-side{flex:1;border-left:1px solid var(--border-soft);background:#1f2023;display:flex;flex-direction:column;min-width:280px}.modal-close{position:absolute;background:none;border:0;color:var(--text-dim);font-size:20px;cursor:pointer}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;color:var(--text-faint);font-size:12px}.modal-title{width:100%;background:transparent;border:0;color:#fff;font-size:22px;font-weight:700;outline:none;margin:4px 0 16px;padding:4px 6px;border-radius:6px}.modal-title:hover,.modal-title:focus{background:var(--bg-hover)}.field-row{display:flex;align-items:center;gap:10px;margin-bottom:12px;min-height:30px}.field-label{width:130px;color:var(--text-dim);font-size:12.5px;display:flex;align-items:center;gap:7px;flex-shrink:0}.field-value{flex:1;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.field-value select,.field-value input[type=date],.field-value input[type=number]{background:var(--bg-panel);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:5px 8px;font-size:12.5px;outline:none}.field-value select:focus,.field-value input:focus{border-color:var(--accent)}.tag-toggle{border:1px solid var(--border);background:transparent;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:700;cursor:pointer;color:var(--text-faint)}.tag-toggle.on{color:#fff;border-color:transparent}.desc-input{width:100%;min-height:84px;background:var(--bg-panel);border:1px solid var(--border-soft);border-radius:8px;color:var(--text);padding:10px 12px;font-size:13px;resize:vertical;outline:none}.desc-input:focus{border-color:var(--accent)}.section-title{font-size:12px;font-weight:700;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;margin:20px 0 8px}.subtask-row{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:6px;border-bottom:1px solid var(--border-soft);cursor:pointer;font-size:13px}.subtask-row:hover{background:var(--bg-hover)}.subtask-status{width:12px;height:12px;border-radius:3px;border:0;cursor:pointer;flex-shrink:0}.subtask-name{flex:1}.subtask-name.done{text-decoration:line-through;color:var(--text-faint)}.subtask-del{background:none;border:0;color:var(--text-faint);cursor:pointer;visibility:hidden}.subtask-row:hover .subtask-del{visibility:visible}.subtask-del:hover{color:var(--danger)}.activity-head{padding:14px 18px;border-bottom:1px solid var(--border-soft);font-weight:700;font-size:13.5px}.comments-list{flex:1;overflow-y:auto;padding:14px 18px;display:flex;flex-direction:column;gap:14px}.comment{display:flex;gap:10px}.comment-body{flex:1}.comment-meta{font-size:11.5px;color:var(--text-faint);margin-bottom:3px;display:flex;gap:8px;align-items:center}.comment-meta b{color:var(--text);font-size:12.5px}.comment-text{font-size:13px;white-space:pre-wrap}.comment-del{background:none;border:0;color:var(--text-faint);cursor:pointer;font-size:11px}.comment-del:hover{color:var(--danger)}.comment-form{border-top:1px solid var(--border-soft);padding:12px 14px;display:flex;gap:8px}.comment-form textarea{flex:1;background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:8px 10px;font-size:13px;resize:none;outline:none;min-height:38px}.comment-form textarea:focus{border-color:var(--accent)}.login-page{height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(1200px 600px at 70% -10%,rgba(123,104,238,.18),transparent),var(--bg)}.login-card{width:380px;background:var(--bg-panel);border:1px solid var(--border-soft);border-radius:14px;padding:34px 32px;box-shadow:0 24px 60px #0006}.login-card h1{font-size:20px;margin:14px 0 4px}.login-card p{color:var(--text-dim);font-size:13px;margin:0 0 22px}.login-field{margin-bottom:14px}.login-field label{display:block;font-size:12px;color:var(--text-dim);margin-bottom:6px}.login-field input{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:10px 12px;font-size:14px;outline:none}.login-field input:focus{border-color:var(--accent)}.login-error{color:#ff8a7a;font-size:12.5px;margin-bottom:12px}.login-btn{width:100%;padding:11px;font-size:14px}.dd-wrap{position:relative}.dd-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:30;background:#2b2c30;border:1px solid var(--border);border-radius:8px;min-width:180px;padding:6px;box-shadow:0 12px 32px #00000073}.dd-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;background:none;border:0;color:var(--text);font-size:12.5px;border-radius:6px;cursor:pointer;text-align:left}.dd-item:hover{background:var(--bg-hover)}.empty-note{padding:40px;text-align:center;color:var(--text-faint)}
