@import url(https://fonts.googleapis.com/css2?family=DM+Sans:opsz,wght@9..40,300;9..40,400;9..40,500;9..40,600;9..40,700&family=DM+Mono:wght@400;500&display=swap);:root{--bg:#f2f4f7;--surface:#fff;--surface2:#f7f8fa;--surface3:#eef0f5;--border:#e4e7ef;--border2:#cdd2dc;--text:#181c2a;--muted:#8a93a6;--muted2:#5a6275;--brand:#5b5bd6;--brand-dim:#5b5bd614;--brand-light:#5b5bd624;--brand-mid:#5b5bd6;--green:#16a34a;--green-dim:#16a34a1a;--amber:#d97706;--amber-dim:#d977061a;--red:#dc2626;--red-dim:#dc26261a;--blue:#2563eb;--blue-dim:#2563eb1a;--cyan:#0891b2;--font:"DM Sans",sans-serif;--font-mono:"DM Mono",monospace;--radius:7px;--radius-lg:10px;--radius-xl:14px;--shadow-sm:0 1px 3px #00000012,0 1px 2px #0000000a;--shadow:0 4px 12px #00000014,0 1px 3px #0000000d;--shadow-lg:0 12px 32px #0000001f,0 2px 8px #0000000f}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;background:#f2f4f7;background:var(--bg);color:#181c2a;color:var(--text);font-size:13px;line-height:1.5}body,button{font-family:DM Sans,sans-serif;font-family:var(--font)}button{cursor:pointer}input,select,textarea{font-family:DM Sans,sans-serif;font-family:var(--font)}.btn{align-items:center;background:#fff;background:var(--surface);border:1px solid #cdd2dc;border:1px solid var(--border2);border-radius:7px;border-radius:var(--radius);box-shadow:0 1px 3px #00000012,0 1px 2px #0000000a;box-shadow:var(--shadow-sm);color:#5a6275;color:var(--muted2);cursor:pointer;display:inline-flex;font-size:13px;font-weight:500;gap:6px;padding:7px 14px;transition:all .15s}.btn:hover{background:#f7f8fa;background:var(--surface2);color:#181c2a;color:var(--text)}.btn-primary{background:#5b5bd6;background:var(--brand);border-color:#5b5bd6;border-color:var(--brand);box-shadow:0 2px 8px #5b5bd647;color:#fff}.btn-primary:hover{background:#4a4abe;border-color:#4a4abe;box-shadow:0 3px 14px #5b5bd661}.btn-danger{background:#dc26261a;background:var(--red-dim);border-color:#fca5a5;color:#dc2626;color:var(--red)}.btn-danger:hover{background:#dc2626;background:var(--red);border-color:#dc2626;border-color:var(--red);color:#fff}.btn-sm{font-size:12px;padding:4px 10px}.btn-ghost{background:none;color:#8a93a6;color:var(--muted)}.btn-ghost,.btn-ghost:hover{border-color:#0000;box-shadow:none}.btn-ghost:hover{background:#eef0f5;background:var(--surface3);color:#181c2a;color:var(--text)}.btn-icon{align-items:center;background:#fff;background:var(--surface);border:1px solid #e4e7ef;border:1px solid var(--border);border-radius:7px;border-radius:var(--radius);box-shadow:0 1px 3px #00000012,0 1px 2px #0000000a;box-shadow:var(--shadow-sm);color:#8a93a6;color:var(--muted);cursor:pointer;display:flex;justify-content:center;padding:6px;transition:all .15s}.btn-icon:hover{background:#f7f8fa;background:var(--surface2);border-color:#cdd2dc;border-color:var(--border2)}.btn-icon:hover,.input{color:#181c2a;color:var(--text)}.input{background:#fff;background:var(--surface);border:1.5px solid #e4e7ef;border:1.5px solid var(--border);border-radius:7px;border-radius:var(--radius);font-size:13px;padding:8px 12px;transition:border-color .15s,box-shadow .15s;width:100%}.input:focus{border-color:#5b5bd6;border-color:var(--brand);box-shadow:0 0 0 3px #5b5bd61f;outline:none}.input::placeholder{color:#8a93a6;color:var(--muted)}.select{-webkit-appearance:none;appearance:none;background:#fff;background:var(--surface);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' fill='none'%3E%3Cpath d='m1 1 4 4 4-4' stroke='%238A93A6' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;border:1.5px solid #e4e7ef;border:1.5px solid var(--border);border-radius:7px;border-radius:var(--radius);color:#181c2a;color:var(--text);cursor:pointer;font-size:13px;padding:8px 28px 8px 12px;transition:border-color .15s;width:100%}.select:focus{border-color:#5b5bd6;border-color:var(--brand);box-shadow:0 0 0 3px #5b5bd61f;outline:none}.select option{background:#fff;background:var(--surface);color:#181c2a;color:var(--text)}.form-group{margin-bottom:14px}.form-label{color:#8a93a6;color:var(--muted);display:block;font-size:11px;font-weight:600;letter-spacing:.7px;margin-bottom:6px;text-transform:uppercase}.modal-overlay{align-items:center;animation:fadeIn .15s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0a0c144d;display:flex;inset:0;justify-content:center;position:fixed;z-index:1000}.modal{animation:slideUp .18s ease;background:#fff;background:var(--surface);border:1px solid #e4e7ef;border:1px solid var(--border);border-radius:14px;border-radius:var(--radius-xl);box-shadow:0 12px 32px #0000001f,0 2px 8px #0000000f;box-shadow:var(--shadow-lg);max-height:90vh;overflow-y:auto;padding:24px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.badge{border-radius:99px;display:inline-flex;font-size:11px;font-weight:500;gap:4px;padding:2px 8px}.avatar,.badge{align-items:center}.avatar{border-radius:50%;display:flex;flex-shrink:0;font-weight:700;justify-content:center}.progress-bar-wrap{background:#eef0f5;background:var(--surface3);border-radius:99px;overflow:hidden}.progress-bar-fill{border-radius:99px;height:100%;transition:width .4s ease}.tooltip{position:relative}.tooltip:hover .tooltip-text{opacity:1;transform:translateX(-50%) translateY(0);visibility:visible}.tooltip-text{background:#181c2a;background:var(--text);border-radius:6px;bottom:calc(100% + 6px);color:#fff;font-size:11px;left:50%;opacity:0;padding:4px 8px;pointer-events:none;position:absolute;transform:translateX(-50%) translateY(4px);transition:all .15s;visibility:hidden;white-space:nowrap;z-index:100}.status-not_started{background:#8a93a61f;border:1px solid #8a93a633;color:#5a6275}.status-planning{background:#2563eb17;border:1px solid #2563eb2e;color:#2563eb}.status-in_progress{background:#5b5bd61a;border:1px solid #5b5bd633;color:#5b5bd6}.status-escalated{background:#dc262617;border:1px solid #dc26262e;color:#dc2626}.status-at_risk{background:#d9770617;border:1px solid #d977062e;color:#d97706}.status-on_hold{background:#8a93a61f;border:1px solid #8a93a633;color:#8a93a6}.status-completed{background:#16a34a17;border:1px solid #16a34a2e;color:#16a34a}.status-cancelled{background:#8a93a614;border:1px solid #8a93a626;color:#8a93a6}.priority-urgent{background:#dc262617;border:1px solid #dc26262e;color:#dc2626}.priority-high{background:#d9770617;border:1px solid #d977062e;color:#d97706}.priority-normal{background:#2563eb17;border:1px solid #2563eb2e;color:#2563eb}.priority-low{background:#8a93a61a;border:1px solid #8a93a62e;color:#8a93a6}.type-milestone{color:#d97706}.type-meeting{color:#0891b2}.type-task{color:#5a6275;color:var(--muted2)}.divider{background:#e4e7ef;background:var(--border);height:1px;margin:12px 0}.scroll{overflow-y:auto}.page-enter{animation:pageFadeIn .18s ease forwards}@keyframes pageFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}::-webkit-scrollbar{height:9px;width:9px}::-webkit-scrollbar-track{background:#f7f8fa;background:var(--surface2);border-radius:99px}::-webkit-scrollbar-thumb{background:#cdd2dc;background:var(--border2);border-radius:99px;min-height:40px;min-width:40px}::-webkit-scrollbar-thumb:hover{background:#8a93a6;background:var(--muted)}::-webkit-scrollbar-corner{background:#f7f8fa;background:var(--surface2)}.empty-state{align-items:center;display:flex;flex-direction:column;gap:10px;justify-content:center;padding:60px 20px;text-align:center}.empty-state h3{color:#181c2a;color:var(--text);font-size:15px;font-weight:600}.empty-state p{color:#8a93a6;color:var(--muted);font-size:13px;line-height:1.6;max-width:280px}.card{background:#fff;background:var(--surface);border:1px solid #e4e7ef;border:1px solid var(--border);border-radius:10px;border-radius:var(--radius-lg);box-shadow:0 1px 3px #00000012,0 1px 2px #0000000a;box-shadow:var(--shadow-sm)}@keyframes spin{to{transform:rotate(1turn)}}@keyframes pulse{0%,to{box-shadow:0 0 0 3px #05966940}50%{box-shadow:0 0 0 7px #0596691a}}.mindmap-connector{border-left:2px dashed #cdd2dc;border-left:2px dashed var(--border2);margin-left:20px}@media print{@page{size:A3 landscape;margin:8mm}body{background:#fff!important;font-size:11px!important}.modal-overlay,[class*=sidebar],button,nav{display:none!important}*{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}svg{overflow:visible!important}.wbs-root{transform-origin:top left}.gantt-scroll{max-height:none!important;overflow:visible!important}[class*=card],g{break-inside:avoid;page-break-inside:avoid}}@media (max-width:768px){*{-webkit-tap-highlight-color:transparent;box-sizing:border-box}body{font-size:14px;overflow-x:hidden}.modal-overlay{align-items:flex-end!important;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:0!important}.modal{border-bottom:none!important;border-radius:20px 20px 0 0!important;margin:0!important;max-height:90vh!important;max-width:100vw!important;overflow-y:auto!important;padding:20px 16px 32px!important;width:100vw!important}.btn{border-radius:8px!important;min-height:40px!important;padding:9px 14px!important}.btn,.btn-primary{font-size:13px!important}.btn-primary{min-height:42px!important}.btn-sm{font-size:12px!important;min-height:32px!important;padding:5px 10px!important}.btn-icon{height:38px!important;min-height:38px!important;padding:0!important;width:38px!important}.input,.select,input[type=date],input[type=email],input[type=number],input[type=password],input[type=search],input[type=text],input[type=url],select,textarea{border-radius:8px!important;font-size:16px!important;min-height:42px!important;padding:10px 12px!important}textarea{min-height:80px!important}.form-group{margin-bottom:16px!important}.form-label{display:block!important;font-size:12px!important;font-weight:600!important;margin-bottom:6px!important}.card{border-radius:12px!important;margin-bottom:10px!important;padding:14px 12px!important}table{-webkit-overflow-scrolling:touch!important;border-radius:0!important;display:block!important;overflow-x:auto!important;white-space:nowrap!important}table,td,th{font-size:12px!important}td,th{padding:8px 10px!important}.gantt-scroll,[style*=overflow-x]{-webkit-overflow-scrolling:touch!important}.page-enter{padding:12px!important}}