:root{--bg-color:#f4fbf7;--panel-bg:#fff;--text-main:#0f172a;--text-muted:#64748b;--accent:#0f766e;--accent-hover:#115e59;--border-color:#e2e8f0;--danger:#e11d48;--success:#10b981;--warning:#f59e0b;font-family:Inter,system-ui,-apple-system,sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-color);color:var(--text-main);line-height:1.5}.app-container{min-height:100vh;display:flex}.sidebar{background-color:var(--panel-bg);border-right:1px solid var(--border-color);flex-direction:column;gap:1rem;width:250px;padding:2rem 1rem;display:flex}.sidebar h1{color:var(--text-main);margin-bottom:2rem;padding-left:.5rem;font-size:1.25rem;font-weight:700}.nav-link{color:var(--text-muted);border-radius:.5rem;align-items:center;gap:.75rem;padding:.75rem 1rem;font-weight:500;text-decoration:none;transition:all .2s;display:flex}.nav-link:hover{color:var(--text-main);background-color:#0000000d}.nav-link.active{color:var(--accent);background-color:#0f766e1a}.main-content{flex:1;padding:2rem 3rem;overflow-y:auto}.page-title{margin-bottom:2rem;font-size:1.875rem;font-weight:700}.card{background-color:var(--panel-bg);border:1px solid var(--border-color);border-radius:.75rem;margin-bottom:1.5rem;padding:1.5rem;box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000008}.btn{cursor:pointer;border:none;border-radius:.375rem;justify-content:center;align-items:center;gap:.5rem;padding:.5rem 1rem;font-weight:500;transition:all .2s;display:inline-flex}.btn-primary{background-color:var(--accent);color:#fff}.btn-primary:hover{background-color:var(--accent-hover)}.btn-secondary{border:1px solid var(--border-color);color:var(--text-main);background-color:#0000}.btn-secondary:hover{background-color:#0000000d}.btn-danger{color:var(--danger);background-color:#e11d481a}.btn-danger:hover{background-color:#e11d4833}.input-group{margin-bottom:1rem}.input-group label{color:var(--text-muted);margin-bottom:.5rem;font-size:.875rem;display:block}.input,.select{border:1px solid var(--border-color);width:100%;color:var(--text-main);background-color:#fff;border-radius:.375rem;outline:none;padding:.5rem .75rem;font-family:inherit;font-size:.875rem;transition:border-color .2s;box-shadow:inset 0 1px 2px #00000005}.input:focus,.select:focus{border-color:var(--accent)}.table-wrapper{overflow-x:auto}.data-table{border-collapse:separate;border-spacing:0;text-align:left;width:100%}.data-table th{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border-color);background-color:#f8fafc;padding:.75rem 1rem;font-size:.75rem;font-weight:600}.data-table td{border-bottom:1px solid var(--border-color);padding:.875rem 1rem;font-size:.875rem}.data-table tr{transition:background-color .2s}.data-table tr:hover{background-color:#00000005}.wbs-level-1{background-color:#00000004;font-weight:700}.wbs-level-2 td:first-child{color:var(--text-muted);padding-left:2rem}.wbs-level-3 td:first-child{color:var(--text-muted);padding-left:3.5rem}.badge{border-radius:9999px;padding:.25rem .5rem;font-size:.75rem;font-weight:600}.badge-default{color:var(--text-muted);background:#64748b1a}.badge-success{color:var(--success);background:#10b9811a}.badge-warning{color:var(--warning);background:#f59e0b1a}.badge-danger{color:var(--danger);background:#e11d481a}.timeline-grid{padding-bottom:1rem;display:flex;overflow-x:auto}.timeline-col{border-right:1px dashed var(--border-color);flex:0 0 40px;min-height:200px;position:relative}.timeline-header{border-bottom:1px solid var(--border-color);text-align:center;height:40px;color:var(--text-muted);font-size:.75rem}.timeline-bar{background:var(--accent);opacity:.9;color:#fff;white-space:nowrap;text-overflow:ellipsis;border-radius:4px;align-items:center;width:100%;height:24px;padding:0 8px;font-size:.7rem;display:flex;position:absolute;top:10px;left:0;overflow:hidden}.hide-caret{appearance:none;cursor:pointer;background-image:none!important;padding-right:.25rem!important}.hide-caret:hover{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 5l3 3 3-3'/%3E%3C/svg%3E")!important;background-position:right .25rem center!important;background-repeat:no-repeat!important;padding-right:1.25rem!important}.data-table-fixed{table-layout:fixed;width:100%}.data-table-fixed td{text-overflow:ellipsis;overflow:hidden}.data-grid{flex-direction:column;width:100%;min-width:800px;display:flex}.data-grid-header{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border-color);background-color:#f8fafc;grid-template-columns:6% 36% 11% 11% 6% 5% 5% 11% 9%;padding:.75rem 1rem;font-size:.75rem;font-weight:600;display:grid}.data-grid-row{border-bottom:1px solid var(--border-color);background-color:#fff;grid-template-columns:6% 36% 11% 11% 6% 5% 5% 11% 9%;align-items:center;padding:.5rem 1rem;font-size:.875rem;transition:background-color .2s;display:grid}.data-grid-row:hover{background-color:#00000005}.data-grid-cell{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.text-clamp-2{-webkit-line-clamp:2;line-clamp:2;white-space:normal;text-overflow:ellipsis;word-break:break-word;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.grid-wbs-level-1{background-color:#00000004;font-weight:700}.task-panel-overlay{z-index:9999;background-color:#0006;justify-content:flex-end;display:flex;position:fixed;inset:0}.task-panel{background-color:var(--panel-bg);flex-direction:column;width:500px;height:100vh;animation:.3s cubic-bezier(.16,1,.3,1) forwards slideIn;display:flex;box-shadow:-4px 0 25px #00000026}@keyframes slideIn{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.task-panel-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:flex-start;padding:1.5rem;display:flex}.task-panel-tabs{border-bottom:1px solid var(--border-color);background-color:#f8fafc;display:flex}.task-panel-tabs button{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-bottom:2px solid #0000;flex:1;justify-content:center;align-items:center;gap:.5rem;padding:1rem 0;font-size:.875rem;font-weight:500;transition:all .2s;display:flex}.task-panel-tabs button:hover{background-color:#00000005}.task-panel-tabs button.active{color:var(--accent);border-bottom-color:var(--accent);background-color:#fff}.task-panel-content{flex:1;padding:1.5rem;overflow-y:auto}.file-link:hover{border-color:var(--accent)!important;background-color:#0f766e0d!important}
