:root{--bg: #f8faf9;--surface: #ffffff;--fg: #1a2b1e;--muted: #6b7a6f;--border: #e2e8e0;--accent: #70a752;--accent-dark: #5a8a42;--accent-light: #e8f1e0;--status-not-started: #94a3b8;--status-in-progress: #3b82f6;--status-blocked: #ef4444;--status-done: #70a752;--status-overdue: #ef4444;--status-due-soon: #f59e0b;--font-display: "Inter", system-ui, sans-serif;--font-body: "Inter", system-ui, sans-serif;--font-mono: ui-monospace, SFMono-Regular, monospace;--radius: 12px;--radius-sm: 8px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--shadow: 0 1px 3px rgba(0, 0, 0, .08);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .12)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-body);background:var(--bg);color:var(--fg);-webkit-font-smoothing:antialiased}button{font-family:var(--font-body);cursor:pointer}input,select,textarea{font-family:var(--font-body)}.app{min-height:100vh;display:flex}.sidebar{width:240px;background:var(--surface);border-right:1px solid var(--border);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4);flex-shrink:0}.sidebar-logo{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4)}.sidebar-logo img{height:36px;width:auto}.sidebar-logo span{font-weight:700;font-size:18px;color:var(--fg)}.nav-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);border:none;background:transparent;color:var(--muted);font-size:14px;font-weight:500;text-align:left;width:100%;transition:all .15s}.nav-item:hover{background:var(--accent-light);color:var(--fg)}.nav-item.active{background:var(--accent-light);color:var(--accent-dark);font-weight:600}.main{flex:1;padding:var(--space-6);overflow-x:auto}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-6)}.page-title{font-size:24px;font-weight:700;color:var(--fg)}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4);margin-bottom:var(--space-6)}.kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:var(--space-2)}.kpi-card .label{font-size:13px;color:var(--muted);font-weight:500}.kpi-card .value{font-size:32px;font-weight:700;color:var(--fg);line-height:1}.kpi-card .sub{font-size:12px;color:var(--muted)}.kpi-card .icon{width:36px;height:36px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-size:18px;margin-bottom:var(--space-2)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.card-header{padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.card-title{font-size:16px;font-weight:600;color:var(--fg)}.btn{padding:8px 16px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--fg);font-size:14px;font-weight:500;transition:all .15s;display:inline-flex;align-items:center;gap:var(--space-2)}.btn:hover{border-color:var(--accent)}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover{background:var(--accent-dark);border-color:var(--accent-dark)}.btn-danger{color:var(--status-overdue);border-color:var(--border)}.btn-danger:hover{background:#fef2f2;border-color:var(--status-overdue)}.btn-sm{padding:4px 10px;font-size:12px}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:600;white-space:nowrap}.badge-not-started{background:#f1f5f9;color:var(--status-not-started)}.badge-in-progress{background:#dbeafe;color:var(--status-in-progress)}.badge-blocked{background:#fee2e2;color:var(--status-blocked)}.badge-done{background:var(--accent-light);color:var(--status-done)}.badge-overdue{background:#fee2e2;color:var(--status-overdue)}.badge-due-soon{background:#fef3c7;color:var(--status-due-soon)}.badge-todo{background:#f1f5f9;color:var(--status-not-started)}.badge-high{background:#fee2e2;color:var(--status-overdue)}.badge-medium{background:#fef3c7;color:var(--status-due-soon)}.badge-low{background:#f1f5f9;color:var(--status-not-started)}table{width:100%;border-collapse:collapse}th{text-align:left;padding:var(--space-3) var(--space-4);font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border)}td{padding:var(--space-3) var(--space-4);font-size:14px;border-bottom:1px solid var(--border);color:var(--fg)}tr:last-child td{border-bottom:none}tr:hover td{background:var(--bg)}.filters{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap;margin-bottom:var(--space-4)}.filter-btn{padding:6px 14px;border-radius:20px;border:1px solid var(--border);background:var(--surface);color:var(--muted);font-size:13px;font-weight:500;transition:all .15s}.filter-btn:hover{border-color:var(--accent);color:var(--fg)}.filter-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.kanban{display:flex;gap:var(--space-4);overflow-x:auto;padding-bottom:var(--space-4)}.kanban-column{flex:1;min-width:280px;background:var(--bg);border-radius:var(--radius);padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-3)}.kanban-column-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:var(--space-2)}.kanban-column-title{font-size:14px;font-weight:600;color:var(--fg);display:flex;align-items:center;gap:var(--space-2)}.kanban-count{font-size:12px;color:var(--muted);background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1px 8px}.kanban-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-3);box-shadow:var(--shadow);cursor:pointer;transition:box-shadow .15s}.kanban-card:hover{box-shadow:var(--shadow-lg)}.kanban-card-title{font-size:14px;font-weight:600;color:var(--fg);margin-bottom:var(--space-2)}.kanban-card-meta{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;font-size:12px;color:var(--muted)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100;padding:var(--space-4)}.modal{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-lg);width:100%;max-width:540px;max-height:90vh;overflow-y:auto}.modal-header{padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.modal-body{padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4)}.modal-footer{padding:var(--space-4) var(--space-6);border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:var(--space-2)}.form-group{display:flex;flex-direction:column;gap:var(--space-2)}.form-label{font-size:13px;font-weight:600;color:var(--fg)}.form-input,.form-select,.form-textarea{padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:14px;color:var(--fg);background:var(--surface);transition:border-color .15s;width:100%}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.form-textarea{resize:vertical;min-height:80px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.deadline-overdue{color:var(--status-overdue);font-weight:600}.deadline-soon{color:var(--status-due-soon);font-weight:600}.loading{display:flex;align-items:center;justify-content:center;padding:var(--space-8);color:var(--muted);font-size:14px}.empty-state{text-align:center;padding:var(--space-8);color:var(--muted)}.empty-state-icon{font-size:32px;margin-bottom:var(--space-2)}.section{margin-bottom:var(--space-6)}.section-title{font-size:18px;font-weight:600;color:var(--fg);margin-bottom:var(--space-4)}@media (max-width: 768px){.app{flex-direction:column}.sidebar{width:100%;flex-direction:row;overflow-x:auto;padding:var(--space-3)}.sidebar-logo{margin-bottom:0;white-space:nowrap}.nav-item{white-space:nowrap}.main{padding:var(--space-4)}.form-row{grid-template-columns:1fr}.kanban{flex-direction:column}}
