*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0a0a12;--surface: #12121e;--card: #1a1a2e;--card-hover: #1f1f38;--border: #2a2a45;--border-light: #383860;--accent: #6366f1;--accent-dim: rgba(99,102,241,.15);--text: #e2e8f0;--text-2: #94a3b8;--text-3: #64748b;--success: #10b981;--danger: #ef4444;--radius: 8px;--radius-sm: 4px;--shadow: 0 4px 24px rgba(0,0,0,.4)}html,body,#root{height:100%;font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--surface)}::-webkit-scrollbar-thumb{background:var(--border-light);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#4a4a70}button{cursor:pointer;border:none;background:none;color:inherit;font:inherit}input,select,textarea{font:inherit;color:inherit;background:none;border:none;outline:none}a{color:inherit;text-decoration:none}.app-shell{display:grid;grid-template-columns:260px 1fr;grid-template-rows:56px 1fr;height:100vh;overflow:hidden}.header{grid-column:1 / -1;display:flex;align-items:center;gap:16px;padding:0 20px;background:var(--surface);border-bottom:1px solid var(--border);z-index:10}.header-logo{display:flex;align-items:center;gap:10px;font-weight:700;font-size:15px;letter-spacing:-.3px}.header-logo .paw{font-size:20px}.header-logo .project{color:var(--text-2);font-weight:400}.header-spacer{flex:1}.header-filters{display:flex;align-items:center;gap:8px}.filter-btn{padding:4px 12px;border-radius:20px;border:1px solid var(--border);font-size:12px;color:var(--text-2);background:var(--card);transition:all .15s;cursor:pointer}.filter-btn:hover,.filter-btn.active{background:var(--accent-dim);border-color:var(--accent);color:var(--text)}.tag-filter{display:flex;align-items:center;gap:4px}.user-badge{display:flex;align-items:center;gap:8px;padding:6px 12px;border-radius:var(--radius);background:var(--card);border:1px solid var(--border);font-size:13px;cursor:pointer;transition:all .15s}.user-badge:hover{border-color:var(--border-light)}.avatar{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0}.sidebar{background:var(--surface);border-right:1px solid var(--border);overflow-y:auto;padding:12px 0}.sidebar-title{padding:4px 16px 8px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--text-3)}.sidebar-item{display:flex;align-items:center;gap:10px;padding:8px 16px;cursor:pointer;border-radius:0;transition:background .12s;position:relative}.sidebar-item:hover,.sidebar-item.active{background:var(--card)}.sidebar-item.active:before{content:"";position:absolute;left:0;top:4px;bottom:4px;width:3px;border-radius:0 3px 3px 0;background:var(--accent)}.sidebar-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.sidebar-label{flex:1;font-size:13px;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-item.active .sidebar-label{color:var(--text)}.sidebar-progress{display:flex;flex-direction:column;gap:4px;padding:0 16px 4px}.progress-bar-bg{height:3px;background:var(--border);border-radius:2px;overflow:hidden}.progress-bar-fill{height:100%;border-radius:2px;transition:width .4s ease}.progress-text{font-size:10px;color:var(--text-3);text-align:right}.sidebar-add-btn{margin:8px 16px 0;padding:7px 12px;border:1px dashed var(--border);border-radius:var(--radius);font-size:12px;color:var(--text-3);width:calc(100% - 32px);text-align:left;transition:all .15s;display:flex;align-items:center;gap:6px}.sidebar-add-btn:hover{border-color:var(--accent);color:var(--accent)}.main-content{overflow-y:auto;padding:24px;display:flex;flex-direction:column;gap:20px}.category-block{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.category-header{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--card);border-bottom:1px solid var(--border);cursor:pointer;-webkit-user-select:none;user-select:none}.category-header:hover{background:var(--card-hover)}.category-color-bar{width:4px;height:20px;border-radius:2px;flex-shrink:0}.category-code{font-family:JetBrains Mono,Fira Code,monospace;font-size:12px;color:var(--text-3);min-width:24px}.category-title{font-weight:600;font-size:14px;flex:1}.category-stats{display:flex;align-items:center;gap:12px}.stat-pill{font-size:11px;color:var(--text-3);background:var(--bg);padding:2px 8px;border-radius:10px;border:1px solid var(--border)}.stat-pill.done{color:var(--success);border-color:#10b9814d;background:#10b98114}.category-assignee{display:flex;align-items:center;gap:6px}.chevron{font-size:12px;color:var(--text-3);transition:transform .2s;-webkit-user-select:none;user-select:none}.chevron.open{transform:rotate(90deg)}.category-actions{display:flex;gap:4px;opacity:0;transition:opacity .15s}.category-header:hover .category-actions{opacity:1}.icon-btn{padding:4px 6px;border-radius:var(--radius-sm);font-size:13px;color:var(--text-3);transition:all .15s;line-height:1}.icon-btn:hover{background:var(--border);color:var(--text)}.icon-btn.danger:hover{background:#ef444426;color:var(--danger)}.subcategory-block{border-top:1px solid var(--border)}.subcategory-block:first-child{border-top:none}.subcategory-header{display:flex;align-items:center;gap:10px;padding:10px 16px 10px 28px;cursor:pointer;background:var(--surface);transition:background .12s;-webkit-user-select:none;user-select:none}.subcategory-header:hover{background:var(--card)}.sub-code{font-family:JetBrains Mono,Fira Code,monospace;font-size:11px;color:var(--text-3);min-width:32px}.sub-title{flex:1;font-size:13px;font-weight:500;color:var(--text-2)}.subcategory-header:hover .sub-title,.subcategory-header.active .sub-title{color:var(--text)}.sub-tags{display:flex;gap:4px;flex-wrap:wrap}.sub-actions{display:flex;gap:2px;opacity:0;transition:opacity .15s}.subcategory-header:hover .sub-actions{opacity:1}.sub-count{font-size:11px;color:var(--text-3)}.sub-count .done-count{color:var(--success)}.tasks-list{padding:4px 0;background:var(--bg)}.task-item{display:flex;align-items:center;gap:10px;padding:8px 16px 8px 44px;transition:background .1s;border-bottom:1px solid transparent;group:true}.task-item:hover{background:var(--surface)}.task-check{width:16px;height:16px;border:1.5px solid var(--border-light);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:all .15s;background:var(--card)}.task-check:hover{border-color:var(--success)}.task-check.checked{border-color:var(--success);background:var(--success)}.task-check.checked:after{content:"✓";font-size:10px;color:#fff;font-weight:700;line-height:1}.task-code{font-family:JetBrains Mono,Fira Code,monospace;font-size:10px;color:var(--text-3);min-width:42px;flex-shrink:0}.task-title{flex:1;font-size:13px;color:var(--text-2);line-height:1.4}.task-item.done .task-title{text-decoration:line-through;color:var(--text-3)}.task-tags{display:flex;gap:3px;flex-wrap:wrap}.tag{font-size:10px;font-weight:600;padding:1px 6px;border-radius:3px;letter-spacing:.3px;line-height:1.6;font-family:JetBrains Mono,monospace}.tag-BE{background:#3b82f626;color:#60a5fa}.tag-FE{background:#8b5cf626;color:#a78bfa}.tag-DB{background:#10b98126;color:#34d399}.tag-DevOps{background:#f59e0b26;color:#fbbf24}.tag-Test{background:#ef444426;color:#f87171}.tag-Design{background:#ec489926;color:#f472b6}.task-assignee{flex-shrink:0}.task-actions{display:flex;gap:2px;opacity:0;transition:opacity .15s}.task-item:hover .task-actions{opacity:1}.add-task-row{display:flex;align-items:center;padding:6px 16px 6px 44px;gap:8px;border-top:1px solid var(--border)}.add-task-input{flex:1;font-size:13px;color:var(--text-2);padding:4px 0;background:none;border:none;outline:none}.add-task-input::placeholder{color:var(--text-3)}.add-task-btn{font-size:12px;color:var(--text-3);padding:4px 10px;border-radius:var(--radius-sm);border:1px dashed var(--border);transition:all .15s;background:none;cursor:pointer;display:flex;align-items:center;gap:4px}.add-task-btn:hover{border-color:var(--accent);color:var(--accent)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}.modal{background:var(--card);border:1px solid var(--border-light);border-radius:12px;padding:24px;width:100%;max-width:460px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:16px}.modal-title{font-size:16px;font-weight:600}.form-group{display:flex;flex-direction:column;gap:6px}.form-label{font-size:12px;color:var(--text-2);font-weight:500}.form-input{padding:8px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:13px;transition:border-color .15s}.form-input:focus{border-color:var(--accent);outline:none}.form-input::placeholder{color:var(--text-3)}.form-select{padding:8px 32px 8px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:13px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}.tags-grid{display:flex;gap:6px;flex-wrap:wrap}.tag-toggle{font-size:11px;font-weight:600;padding:3px 10px;border-radius:4px;border:1px solid var(--border);cursor:pointer;transition:all .15s;font-family:JetBrains Mono,monospace;letter-spacing:.3px;color:var(--text-3);background:var(--surface)}.tag-toggle.selected-BE{background:#3b82f633;border-color:#3b82f6;color:#60a5fa}.tag-toggle.selected-FE{background:#8b5cf633;border-color:#8b5cf6;color:#a78bfa}.tag-toggle.selected-DB{background:#10b98133;border-color:#10b981;color:#34d399}.tag-toggle.selected-DevOps{background:#f59e0b33;border-color:#f59e0b;color:#fbbf24}.tag-toggle.selected-Test{background:#ef444433;border-color:#ef4444;color:#f87171}.tag-toggle.selected-Design{background:#ec489933;border-color:#ec4899;color:#f472b6}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:4px}.btn{padding:8px 16px;border-radius:var(--radius);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s;border:1px solid transparent}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{opacity:.88}.btn-ghost{background:var(--surface);border-color:var(--border);color:var(--text-2)}.btn-ghost:hover{color:var(--text);border-color:var(--border-light)}.btn-danger{background:#ef444426;color:var(--danger);border-color:#ef44444d}.btn-danger:hover{background:#ef444440}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);position:relative;overflow:hidden}.login-page:before{content:"";position:absolute;top:-200px;left:50%;transform:translate(-50%);width:600px;height:600px;background:radial-gradient(circle,rgba(99,102,241,.12) 0%,transparent 70%);pointer-events:none}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:40px;width:420px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:32px;position:relative;z-index:1}.login-header{text-align:center}.login-logo{font-size:40px;margin-bottom:12px}.login-title{font-size:22px;font-weight:700;margin-bottom:4px}.login-sub{font-size:13px;color:var(--text-3)}.login-label{font-size:12px;color:var(--text-2);font-weight:500;margin-bottom:12px;text-align:center;text-transform:uppercase;letter-spacing:.6px}.users-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.user-btn{display:flex;flex-direction:column;align-items:center;gap:10px;padding:16px 12px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:all .15s}.user-btn:hover{background:var(--card-hover);border-color:var(--accent);transform:translateY(-2px);box-shadow:0 4px 16px #6366f133}.user-btn .avatar{width:44px;height:44px;font-size:16px}.user-name{font-size:13px;font-weight:500}.user-btn:nth-child(5){grid-column:1 / -1;max-width:160px;margin:0 auto;width:100%}.confirm-modal{max-width:360px}.empty-tasks{padding:20px 44px;font-size:12px;color:var(--text-3);font-style:italic}.inline-add{display:flex;gap:6px;align-items:center;padding:6px 16px 6px 44px;border-top:1px solid var(--border)}.inline-add-input{flex:1;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:5px 10px;font-size:12px;color:var(--text)}.inline-add-input:focus{border-color:var(--accent);outline:none}.inline-add-code{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:5px 8px;font-size:11px;color:var(--text-2);width:60px;font-family:monospace}.inline-add-code:focus{border-color:var(--accent);outline:none}@keyframes fadeIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.animate-in{animation:fadeIn .18s ease}[data-tooltip]{position:relative}[data-tooltip]:hover:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--card);border:1px solid var(--border-light);color:var(--text);font-size:11px;padding:4px 8px;border-radius:var(--radius-sm);white-space:nowrap;pointer-events:none;z-index:50}.summary-bar{display:flex;align-items:center;gap:20px;padding:10px 20px;background:var(--surface);border-bottom:1px solid var(--border)}.summary-stat{display:flex;flex-direction:column;align-items:center;gap:1px}.summary-stat .val{font-size:18px;font-weight:700}.summary-stat .lbl{font-size:10px;color:var(--text-3);text-transform:uppercase;letter-spacing:.6px}.color-row{display:flex;gap:6px;flex-wrap:wrap}.color-swatch{width:24px;height:24px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:all .12s}.color-swatch.selected{border-color:#fff;transform:scale(1.2)}
