:root{--bg: #f7f8fa;--surface: #ffffff;--border: #e4e7eb;--text: #1f2430;--text-muted: #6b7280;--primary: #3454d1;--primary-hover: #2a44b0;--danger: #d1453b;--warning: #c17a1f;--success: #1a8754;--radius: 8px;--sidebar-w: 232px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px}button,input,select,textarea{font-family:inherit;font-size:inherit}a{color:inherit;text-decoration:none}.app-shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:16px 10px;flex-shrink:0}.sidebar-brand{font-weight:700;font-size:15px;padding:6px 10px 18px}.sidebar nav{display:flex;flex-direction:column;gap:2px}.sidebar-link{padding:9px 12px;border-radius:var(--radius);color:var(--text-muted);font-weight:500;cursor:pointer}.sidebar-link:hover{background:var(--bg);color:var(--text)}.sidebar-link.active{background:#eaeeff;color:var(--primary)}.topbar{height:56px;border-bottom:1px solid var(--border);background:var(--surface);display:flex;align-items:center;justify-content:space-between;padding:0 20px;gap:16px}.topbar input[type=search]{border:1px solid var(--border);border-radius:var(--radius);padding:7px 12px;width:280px;background:var(--bg)}.user-menu{position:relative}.user-chip{display:flex;align-items:center;gap:8px;cursor:pointer;padding:6px 10px;border-radius:var(--radius)}.user-chip:hover{background:var(--bg)}.avatar{width:28px;height:28px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.dropdown{position:absolute;right:0;top:42px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-width:180px;box-shadow:0 8px 24px #00000014;z-index:20;overflow:hidden}.dropdown-item{padding:10px 14px;cursor:pointer}.dropdown-item:hover{background:var(--bg)}.main-content{flex:1;min-width:0;display:flex;flex-direction:column}.page{padding:20px 24px;overflow:auto}.page-title{font-size:19px;font-weight:700;margin:0 0 16px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:20px}.stat-tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.stat-tile .value{font-size:22px;font-weight:700}.stat-tile .label{font-size:12px;color:var(--text-muted);margin-top:2px}.stat-tile.overdue .value{color:var(--danger)}.stat-tile.at-risk .value{color:var(--warning)}.stat-tile.done .value{color:var(--success)}.task-table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.task-table th{text-align:left;font-size:12px;color:var(--text-muted);font-weight:600;padding:10px 12px;border-bottom:1px solid var(--border);background:#fafbfc}.task-table td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle}.task-table tr:last-child td{border-bottom:none}.task-table tr.clickable:hover{background:#f9fafc;cursor:pointer}.badge{display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.badge-priority-urgent{background:#fde2e1;color:#a3211a}.badge-priority-high{background:#ffe9d1;color:#96530a}.badge-priority-normal{background:#e8eaf0;color:#4a5163}.badge-priority-low{background:#eef1f5;color:#6b7280}.badge-status-new{background:#e6eefc;color:#2450b5}.badge-status-in_progress{background:#fff3d6;color:#93650a}.badge-status-done{background:#e1f4ea;color:#17703f}.badge-overdue{background:#fde2e1;color:#a3211a}.badge-sub{background:var(--bg);color:var(--text-muted);border:1px solid var(--border)}.filter-bar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.filter-bar select,.filter-bar input{border:1px solid var(--border);border-radius:var(--radius);padding:6px 10px;background:var(--surface)}.btn{border:1px solid var(--border);background:var(--surface);color:var(--text);padding:8px 14px;border-radius:var(--radius);cursor:pointer;font-weight:600}.btn:hover{background:var(--bg)}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.btn-danger{color:var(--danger)}.btn-sm{padding:5px 10px;font-size:12px}.kanban-board{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;align-items:start}.kanban-col{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:10px;min-height:200px}.kanban-col h3{margin:4px 6px 10px;font-size:13px;text-transform:uppercase;color:var(--text-muted)}.kanban-card{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:10px;margin-bottom:8px;cursor:pointer}.kanban-card:hover{border-color:var(--primary)}.sub-status-counts{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.sub-status-counts .row{display:flex;justify-content:space-between;font-size:12px;padding:4px 8px;background:var(--bg);border-radius:6px}.drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f111a59;z-index:40;display:flex;justify-content:flex-end}.drawer{width:480px;max-width:100%;background:var(--surface);height:100%;overflow:auto;padding:20px 24px}.drawer-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px}.field-row{margin-bottom:12px}.field-row label{display:block;font-size:12px;color:var(--text-muted);margin-bottom:4px;font-weight:600}.field-row select,.field-row input,.field-row textarea{width:100%;border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px;background:var(--bg)}.timeline-item{padding:8px 0;border-bottom:1px solid var(--border);font-size:13px}.timeline-item .time{color:var(--text-muted);font-size:12px}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:32px;width:340px}.login-card h1{font-size:18px;margin:0 0 4px}.login-card p{color:var(--text-muted);font-size:13px;margin:0 0 20px}.login-card .field-row input{width:100%}.error-text{color:var(--danger);font-size:13px;margin:8px 0}.empty-state{text-align:center;padding:40px 20px;color:var(--text-muted)}@media (max-width: 860px){.sidebar{position:fixed;z-index:30;height:100%;transform:translate(-100%);transition:transform .2s}.sidebar.open{transform:translate(0)}.kanban-board{grid-template-columns:1fr}.topbar input[type=search]{width:140px}.drawer{width:100%}}
