.gantt .grid-background{fill:none}.gantt .grid-header{fill:#fff;stroke:#e0e0e0;stroke-width:1.4}.gantt .grid-row{fill:#fff}.gantt .grid-row:nth-child(2n){fill:#f5f5f5}.gantt .row-line{stroke:#ebeff2}.gantt .tick{stroke:#e0e0e0;stroke-width:.2}.gantt .tick.thick{stroke-width:.4}.gantt .today-highlight{fill:#fcf8e3;opacity:.5}.gantt .arrow{fill:none;stroke:#666;stroke-width:1.4}.gantt .bar{fill:#b8c2cc;stroke:#8d99a6;stroke-width:0;transition:stroke-width .3s ease;-webkit-user-select:none;user-select:none}.gantt .bar-progress{fill:#a3a3ff}.gantt .bar-invalid{fill:transparent;stroke:#8d99a6;stroke-width:1;stroke-dasharray:5}.gantt .bar-invalid~.bar-label{fill:#555}.gantt .bar-label{fill:#fff;dominant-baseline:central;text-anchor:middle;font-size:12px;font-weight:lighter}.gantt .bar-label.big{fill:#555;text-anchor:start}.gantt .handle{fill:#ddd;cursor:ew-resize;opacity:0;visibility:hidden;transition:opacity .3s ease}.gantt .bar-wrapper{cursor:pointer;outline:none}.gantt .bar-wrapper:hover .bar{fill:#a9b5c1}.gantt .bar-wrapper:hover .bar-progress{fill:#8a8aff}.gantt .bar-wrapper:hover .handle{visibility:visible;opacity:1}.gantt .bar-wrapper.active .bar{fill:#a9b5c1}.gantt .bar-wrapper.active .bar-progress{fill:#8a8aff}.gantt .lower-text,.gantt .upper-text{font-size:12px;text-anchor:middle}.gantt .upper-text{fill:#555}.gantt .lower-text{fill:#333}.gantt .hide{display:none}.gantt-container{position:relative;overflow:auto;font-size:12px}.gantt-container .popup-wrapper{position:absolute;top:0;left:0;background:#000c;padding:0;color:#959da5;border-radius:3px}.gantt-container .popup-wrapper .title{border-bottom:3px solid #a3a3ff;padding:10px}.gantt-container .popup-wrapper .subtitle{padding:10px;color:#dfe2e5}.gantt-container .popup-wrapper .pointer{position:absolute;height:5px;margin:0 0 0 -5px;border:5px solid transparent;border-top-color:#000c}:root{color-scheme:light;--bg: #f4f6f8;--panel: #ffffff;--border: #dfe3e8;--text: #1f2933;--muted: #6b7684;--accent: #2563eb;--accent-dark: #1d4ed8;--danger: #dc2626;--milestone: #b45309;--uf-teal: #0d6d7d;font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}#root{display:flex;flex-direction:column;min-height:100vh}header.app-header{background:var(--panel);border-bottom:1px solid var(--border);padding:12px 24px;display:flex;align-items:center;justify-content:space-between}.app-logos{position:relative;flex:0 0 150px;height:30px;width:150px;perspective:600px}.app-logo{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;height:30px;width:auto;max-width:150px;object-fit:contain;backface-visibility:hidden;animation:logo-rotate 6s ease-in-out infinite}.app-logo-epicor{animation-delay:-3s}@keyframes logo-rotate{0%,33.33%{opacity:1;transform:rotateY(0)}50%,83.33%{opacity:0;transform:rotateY(-90deg)}to{opacity:1;transform:rotateY(0)}}@media (prefers-reduced-motion: reduce){.app-logo{animation:none;position:static;opacity:1}.app-logos{display:flex;align-items:center;gap:14px;width:auto}}.user-avatar,.avatar-chip{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--uf-teal);color:#fff;font-weight:700;cursor:default;flex-shrink:0}.user-avatar{width:28px;height:28px;font-size:12px}.user-avatar-button{border:none;padding:0}.user-menu{position:relative}.user-menu-dropdown{position:absolute;top:calc(100% + 10px);right:0;background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 6px 20px #0000001f;padding:14px;min-width:200px;z-index:20;display:flex;flex-direction:column;gap:8px}.user-menu-name{font-weight:600;font-size:14px}.user-menu-email{font-size:12px;color:var(--muted);margin-top:-6px}.user-menu-badges{display:flex;gap:6px}.user-menu-logout{margin-top:4px;width:100%}.avatar-group{display:flex;align-items:center}.avatar-group .avatar-chip{margin-left:-6px;border:2px solid var(--panel)}.avatar-group .avatar-chip:first-child{margin-left:0}nav.tabs{display:flex;gap:4px}nav.tabs button{border:none;background:transparent;padding:8px 16px;border-radius:6px;cursor:pointer;font-size:14px;color:var(--muted)}nav.tabs button.active{background:transparent;color:var(--uf-teal);font-weight:700;text-decoration:underline;text-underline-offset:4px}main{flex:1;padding:20px 24px}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;gap:8px}.toolbar-actions{display:flex;gap:8px}.list-filter-input{padding:7px 10px;border:1px solid var(--border);border-radius:6px;font-size:14px;font-family:inherit;width:220px}button.primary{background:var(--accent);color:#fff;border:none;padding:8px 14px;border-radius:6px;cursor:pointer;font-size:14px}button.primary:hover{background:var(--accent-dark)}button.secondary{background:var(--panel);color:var(--text);border:1px solid var(--border);padding:8px 14px;border-radius:6px;cursor:pointer;font-size:14px}button.secondary:hover{border-color:var(--accent)}button.link-danger{background:transparent;border:none;color:var(--danger);cursor:pointer;font-size:13px}table{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--border);border-radius:8px;overflow:hidden}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);font-size:14px}th{background:#f9fafb;color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.03em}tr:last-child td{border-bottom:none}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:500}.badge.status-Not-Started{background:#f3f4f6;color:#4b5563}.badge.status-In-Progress{background:#dbeafe;color:#1d4ed8}.badge.status-Blocked{background:#fee2e2;color:#b91c1c}.badge.status-Done{background:#dcfce7;color:#15803d}.badge.milestone{background:#fef3c7;color:var(--milestone)}.badge.status-Draft{background:#f3f4f6;color:#4b5563}.badge.status-Submitted{background:#dbeafe;color:#1d4ed8}.badge.status-Approved{background:#dcfce7;color:#15803d}.badge.status-Rejected{background:#fee2e2;color:#b91c1c}.badge.status-Implemented{background:#ede9fe;color:#6d28d9}.badge.status-Open{background:#fee2e2;color:#b91c1c}.badge.status-Mitigated{background:#dbeafe;color:#1d4ed8}.badge.status-Closed,.badge.status-Resolved,.badge.status-Decided{background:#dcfce7;color:#15803d}.badge.status-Superseded{background:#f3f4f6;color:#4b5563}.badge.status-Holds{background:#dcfce7;color:#15803d}.badge.status-Invalidated{background:#fee2e2;color:#b91c1c}.badge.status-Planned{background:#f3f4f6;color:#4b5563}.badge.status-Realized{background:#dcfce7;color:#15803d}.badge.status-At-Risk{background:#fef3c7;color:var(--milestone)}.badge.status-Not-Realized{background:#fee2e2;color:#b91c1c}.badge.level-Low{background:#dcfce7;color:#15803d}.badge.level-Medium{background:#fef3c7;color:var(--milestone)}.badge.level-High{background:#fee2e2;color:#b91c1c}.badge.type-Risk{background:#fef3c7;color:var(--milestone)}.badge.type-Assumption{background:#ede9fe;color:#6d28d9}.badge.type-Issue{background:#fee2e2;color:#b91c1c}.badge.type-Decision{background:#dbeafe;color:#1d4ed8}.badge.rag-Red{background:#fee2e2;color:#b91c1c}.badge.rag-Amber{background:#fef3c7;color:var(--milestone)}.badge.rag-Green{background:#dcfce7;color:#15803d}.rag-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:8px;vertical-align:middle;flex-shrink:0}.rag-dot.rag-Red{background:#dc2626}.rag-dot.rag-Amber{background:#d97706}.rag-dot.rag-Green{background:#16a34a}.progress-bar{width:100px;height:8px;background:#e5e7eb;border-radius:999px;overflow:hidden}.progress-bar-fill{height:100%;background:var(--accent)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;display:flex;align-items:center;justify-content:center;z-index:50}.modal{background:var(--panel);border-radius:10px;padding:24px;width:420px;max-width:90vw;max-height:85vh;overflow-y:auto;box-shadow:0 12px 32px #0003}.modal h2{margin-top:0;font-size:16px}.field{margin-bottom:14px}.field label{display:block;font-size:13px;color:var(--muted);margin-bottom:4px}.field input[type=text],.field input[type=date],.field input[type=number],.field input[type=email],.field select,.field textarea{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:6px;font-size:14px;font-family:inherit}.field textarea{resize:vertical;min-height:60px}.checkbox-list{display:flex;flex-direction:column;gap:6px;max-height:140px;overflow-y:auto;border:1px solid var(--border);border-radius:6px;padding:8px}.checkbox-list label{display:flex;align-items:center;gap:6px;font-size:13px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.empty-state{padding:40px;text-align:center;color:var(--muted);background:var(--panel);border:1px dashed var(--border);border-radius:8px}.gantt-panel{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:16px;overflow-x:auto}.gantt-panel .bar-wrapper.gantt-group-header .bar{fill:#475569}.gantt-panel .bar-wrapper.gantt-group-header .bar-progress{fill:#334155}.gantt-panel .bar-wrapper.gantt-group-header .bar-label{font-weight:700}.gantt-task-list{flex-shrink:0;width:220px;border-right:1px solid var(--border);background:#f9fafb}.gantt-task-row{display:flex;align-items:center;padding:0 12px;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-bottom:1px solid var(--border)}.gantt-task-row-group{cursor:pointer;font-weight:700;background:#f1f5f9}.gantt-task-row-group:hover{background:#e2e8f0}.gantt-task-name-link{cursor:pointer;overflow:hidden;text-overflow:ellipsis}.gantt-task-name-link:hover{text-decoration:underline;color:var(--uf-teal)}.assignee-chip{display:inline-block;background:#eef2ff;color:#4338ca;border-radius:999px;padding:2px 8px;font-size:12px;margin:1px}.error-banner{background:#fee2e2;color:#b91c1c;padding:10px 14px;border-radius:6px;margin-bottom:14px;font-size:14px}.calendar-filters{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:12px 14px}.calendar-filter-label{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.03em;margin-right:8px}.filter-pill{display:inline-block;background:#f3f4f6;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:3px 10px;font-size:12px;margin:2px 4px 2px 0;cursor:pointer}.filter-pill.active{background:var(--accent);border-color:var(--accent);color:#fff}.utilization-row{display:flex;align-items:center;gap:10px;margin-bottom:8px}.utilization-name{width:140px;flex-shrink:0;font-size:13px}.utilization-bar{flex:1;display:flex;height:14px;border-radius:7px;overflow:hidden;background:#f3f4f6}.utilization-segment.booked{background:var(--accent)}.utilization-segment.off{background:#9ca3af}.utilization-segment.free{background:transparent}.utilization-stats{width:190px;flex-shrink:0;font-size:12px;color:var(--muted)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:8px;overflow:hidden}.calendar-weekday{background:#f9fafb;color:var(--muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;padding:6px 8px;text-align:center}.calendar-cell{background:var(--panel);min-height:100px;padding:6px;display:flex;flex-direction:column;gap:3px}.calendar-cell-outside{background:#fafafa;color:var(--muted)}.calendar-cell-outside .calendar-cell-date{color:var(--muted)}.calendar-cell-today{box-shadow:inset 0 0 0 2px var(--accent)}.calendar-cell-date{font-size:12px;font-weight:600;margin-bottom:2px}.calendar-chip{background:#dbeafe;color:#1d4ed8;border-radius:4px;padding:1px 5px;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-chip-milestone{background:#fef3c7;color:var(--milestone)}.calendar-chip-off{background:#e5e7eb;color:#374151}
