        .agent-row {
            display: flex;
            align-items: center;
            padding: 10px 0;
            border-bottom: 1px solid var(--border);
            gap: 12px;
        }
        .agent-row:last-child { border-bottom: none; }
        .agent-row .agent-icon {
            width: 32px;
            height: 32px;
            border-radius: var(--radius-md);
            display: flex;
            align-items: center;
            justify-content: center;
            background: var(--accent-dim);
            flex-shrink: 0;
        }
        .agent-row .agent-icon svg { width: 14px; height: 14px; stroke: var(--accent); }
        .agent-row .agent-info { flex: 1; }
        .agent-row .agent-name { font-size: 12px; font-weight: 600; color: #ccc; }
        .agent-row .agent-desc { font-size: 9.5px; color: var(--text-dim); margin-top: 1px; }
        .agent-row .agent-status {
            font-size: 9px;
            font-weight: 600;
            padding: 3px 8px;
            border-radius: 4px;
        }
        .agent-row .agent-status.ready { background: var(--green-dim); color: var(--green); }
        .agent-row .agent-status.building { background: var(--yellow-dim); color: var(--yellow); }
        .agent-row .agent-status.planning { background: var(--accent-dim); color: var(--accent); }

        /* Activity feed */
        .activity-item {
            display: flex;
            gap: 10px;
            padding: 8px 0;
            border-bottom: 1px solid var(--border);
        }
        .activity-item:last-child { border-bottom: none; }
        .activity-dot {
            width: 8px;
            height: 8px;
            border-radius: 50%;
            margin-top: 4px;
            flex-shrink: 0;
        }
        .activity-text { font-size: 11px; color: #999; line-height: 1.5; }
        .activity-time { font-size: 9px; color: var(--text-dim); margin-top: 2px; }

        /* ===== AGENTS PAGE ===== */
        .agents-grid {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 16px;
        }
        .agent-card {
            transition: all var(--transition);
            background: var(--bg-card);
            border: 1px solid var(--border);
            border-radius: var(--radius-md);
            padding: 20px;
        }
        .agent-card-header {
            display: flex;
            align-items: center;
            gap: 12px;
            margin-bottom: 16px;
        }
        .agent-card-icon {
            width: 40px;
            height: 40px;
            border-radius: var(--radius-md);
            display: flex;
            align-items: center;
            justify-content: center;
        }
        .agent-card-icon svg { width: 18px; height: 18px; }
        .agent-card-name { font-size: 14px; font-weight: 600; color: #eee; }
        .agent-card-role { font-size: 10px; color: var(--text-muted); margin-top: 2px; }
        .progress-section { margin-bottom: 14px; }
        .progress-label {
            display: flex;
            justify-content: space-between;
            font-size: 10px;
            color: var(--text-muted);
            margin-bottom: 6px;
        }
        .progress-bar {
            height: 6px;
            background: rgba(255,255,255,0.04);
            border-radius: 3px;
            overflow: hidden;
        }
        .progress-fill {
            height: 100%;
            border-radius: 3px;
            transition: width 1s ease;
        }
        .tasks-list { list-style: none; }
        .tasks-list li {
            font-size: 10.5px;
            padding: 5px 0;
            color: var(--text-muted);
            display: flex;
            align-items: center;
            gap: 6px;
            border-bottom: 1px solid rgba(255,255,255,0.02);
        }
        .tasks-list li:last-child { border: none; }

        .agent-detail-grid {
            display: grid;
            grid-template-columns: repeat(2, minmax(0, 1fr));
            gap: 18px;
        }
        .agent-detail-card {
            background: var(--bg-card);
            border: 1px solid var(--border);
            border-radius: var(--radius-md);
            padding: 20px;
            transition: all var(--transition);
        }
        .agent-detail-card:hover {
            border-color: rgba(129,140,248,0.32);
            transform: translateY(-1px);
        }
        .agent-detail-top {
            display: flex;
            align-items: center;
            gap: 12px;
            margin-bottom: 14px;
        }
        .agent-detail-mission {
            font-size: 12px;
            line-height: 1.65;
            color: var(--text);
            margin-bottom: 16px;
        }
        .agent-detail-cols {
            display: grid;
            grid-template-columns: repeat(3, minmax(0, 1fr));
            gap: 10px;
        }
        .agent-detail-cols div {
            border: 1px solid var(--border);
            border-radius: var(--radius-sm);
            padding: 10px;
            background: rgba(255,255,255,0.02);
        }
        .agent-detail-cols span {
            display: block;
            margin-bottom: 8px;
            color: var(--accent);
            font-size: 9px;
            font-weight: 700;
            text-transform: uppercase;
            letter-spacing: 0.08em;
        }
        .agent-detail-cols b {
            display: block;
            color: var(--text-muted);
            font-size: 10.5px;
            font-weight: 500;
            line-height: 1.45;
            margin-top: 6px;
        }
        .tasks-list .task-done { color: var(--green); }
        .tasks-list .task-wip { color: var(--yellow); }
        .tasks-list .task-todo { color: var(--text-dim); }
        .task-icon { display:inline-flex; align-items:center; justify-content:center; width:14px; height:14px; flex-shrink:0; }

        /* ===== INFRASTRUCTURE PAGE ===== */
        .infra-layout {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 16px;
            margin-bottom: 16px;
        }
        .infra-diagram {
            grid-column: 1 / -1;
            background: var(--bg-card);
            border: 1px solid var(--border);
            border-radius: var(--radius-md);
            padding: 24px;
            position: relative;
            min-height: 400px;
        }
        .infra-layer {
            border: 1.5px dashed var(--border);
            border-radius: var(--radius-md);
            padding: 16px;
            margin-bottom: 12px;
            position: relative;
        }
        .infra-layer-label {
            position: absolute;
            top: -9px;
            left: 16px;
            background: var(--bg-card);
            padding: 0 8px;
            font-size: 9px;
            font-weight: 600;
            text-transform: uppercase;
            letter-spacing: 1px;
            color: var(--text-muted);
        }
        .infra-nodes {
            display: flex;
            flex-wrap: wrap;
            gap: 10px;
            margin-top: 8px;
        }
        .infra-node {
            background: rgba(255,255,255,0.02);
            border: 1px solid var(--border);
            border-radius: var(--radius-md);
            padding: 10px 14px;
            font-size: 10.5px;
            font-weight: 500;
            color: #aaa;
            display: flex;
            align-items: center;
            gap: 8px;
        }
        .infra-node .in-dot {
            width: 8px;
            height: 8px;
            border-radius: 50%;
        }
        .infra-specs {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 12px;
        }
        .spec-card {
            background: var(--bg-card);
            border: 1px solid var(--border);
            border-radius: var(--radius-md);
            padding: 14px;
        }
        .spec-card .spec-label { font-size: 9px; color: var(--text-dim); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 6px; }
        .spec-card .spec-value { font-size: 16px; font-weight: 700; color: #fff; font-family: 'JetBrains Mono'; }
        .spec-card .spec-detail { font-size: 9px; color: var(--text-muted); margin-top: 3px; }

        /* ===== METRICS PAGE ===== */
        .metrics-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 16px;
            margin-bottom: 16px;
        }
        .metric-card {
            background: var(--bg-card);
            border: 1px solid var(--border);
            border-radius: var(--radius-md);
            padding: 18px;
        }
        .metric-card .metric-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 12px;
        }
        .metric-card .metric-label { font-size: 10px; color: var(--text-muted); font-weight: 500; }
        .metric-card .metric-value { font-size: 24px; font-weight: 700; color: #fff; font-family: 'JetBrains Mono'; }
        .mini-chart {
            display: flex;
            align-items: flex-end;
            gap: 2px;
            height: 40px;
            margin-top: 10px;
        }
        .mini-chart .bar {
            flex: 1;
            border-radius: 2px;
            min-height: 3px;
            transition: height 0.3s;
        }
        .charts-row {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 16px;
        }
        .chart-card {
            background: var(--bg-card);
            border: 1px solid var(--border);
            border-radius: var(--radius-md);
            padding: 20px;
        }
        .chart-bars {
            margin-top: 16px;
        }
        .chart-bar-row {
            display: flex;
            align-items: center;
            margin-bottom: 8px;
            gap: 10px;
        }
        .chart-bar-label { font-size: 10px; color: var(--text-muted); width: 100px; flex-shrink: 0; }
        .chart-bar-track { flex: 1; height: 8px; background: rgba(255,255,255,0.03); border-radius: 4px; overflow: hidden; }
        .chart-bar-fill { height: 100%; border-radius: 4px; }
        .chart-bar-value { font-size: 10px; font-weight: 600; color: #ccc; width: 40px; text-align: right; font-family: 'JetBrains Mono'; }

        /* ===== LOGS PAGE ===== */
        .logs-toolbar {
            display: flex;
            gap: 10px;
            margin-bottom: 14px;
            align-items: center;
        }
        .logs-filter {
            padding: 6px 12px;
            background: var(--bg-card);
            border: 1px solid var(--border);
            border-radius: var(--radius-sm);
            color: var(--text);
            font-size: 11px;
            font-family: inherit;
            outline: none;
            transition: border-color 0.2s;
        }
        .logs-filter:focus { border-color: var(--accent); }
        .logs-filter-btn {
            padding: 6px 12px;
            background: var(--bg-card);
            border: 1px solid var(--border);
            border-radius: var(--radius-sm);
            color: var(--text-muted);
            font-size: 10px;
            font-family: inherit;
            cursor: pointer;
            font-weight: 500;
            transition: all 0.15s;
        }
        .logs-filter-btn:hover { border-color: var(--accent); color: var(--accent); }
        .logs-filter-btn.active { background: var(--accent-dim); border-color: var(--accent); color: var(--accent); }
        .logs-container {
            background: var(--bg-card);
            border: 1px solid var(--border);
            border-radius: var(--radius-md);
            padding: 2px;
            max-height: calc(100vh - 200px);
            overflow-y: auto;
        }
        .log-entry {
            display: flex;
            align-items: flex-start;
            padding: 7px 14px;
            font-family: 'JetBrains Mono', monospace;
            font-size: 10.5px;
            border-bottom: 1px solid rgba(255,255,255,0.02);
            gap: 12px;
        }
        .log-entry:hover { background: rgba(255,255,255,0.01); }
        .log-time { color: var(--text-dim); white-space: nowrap; flex-shrink: 0; }
        .log-level {
            font-weight: 600;
            padding: 1px 5px;
            border-radius: 3px;
            font-size: 9px;
            flex-shrink: 0;
        }
        .log-level.info { color: var(--cyan); background: rgba(78,205,196,0.08); }
        .log-level.warn { color: var(--yellow); background: rgba(251,191,36,0.08); }
        .log-level.error { color: var(--red); background: rgba(248,113,113,0.08); }
        .log-level.debug { color: var(--text-muted); background: rgba(255,255,255,0.03); }
        .log-source { color: var(--accent); flex-shrink: 0; }
        .log-msg { color: #aaa; word-break: break-all; }

        /* ===== FLUX PAGE (reuse v6 styles) ===== */
        .flux-container {
            display: flex;
            height: calc(100vh - 96px);
            margin: -24px;
        }
        .flux-canvas {
            flex: 1;
            position: relative;
            overflow: hidden;
        }
        .flux-zoom-layer {
            position: absolute;
            top: 0; left: 0; width: 100%; height: 100%;
            transform-origin: center center;
            transition: transform 0.2s ease;
            overflow: visible;
        }
        .flux-zoom-bar {
            position: absolute; top: 10px; left: 14px; z-index: 60;
            display: flex; gap: 4px; align-items: center;
        }
        .flux-zoom-bar button {
            width: 30px; height: 30px; border-radius: var(--radius-sm);
            border: 1px solid var(--border); background: var(--bg-card);
            color: var(--text-muted); font-size: 16px; font-weight: 600;
            cursor: pointer; display: flex; align-items: center; justify-content: center;
            transition: all .15s;
        }
        .flux-zoom-bar button:hover { border-color: var(--accent); color: var(--accent); }
        .flux-zoom-bar span { font-size: 10px; color: var(--text-muted); min-width: 36px; text-align: center; }
        .flux-canvas #flux-svg {
            position: absolute;
            top: 0; left: 0; width: 100%; height: 100%;
            z-index: 5;
            pointer-events: none;
            overflow: visible;
        }
        .flux-canvas #flux-particles {
            position: absolute;
            top: 0; left: 0; width: 100%; height: 100%;
            z-index: 8;
            pointer-events: none;
            overflow: hidden;
        }
        .flux-node {
            position: absolute;
            background: var(--bg-card);
            border: 1.5px solid var(--border);
            border-radius: var(--radius-md);
            padding: 10px 12px;
            cursor: default;
            transition: opacity 0.35s, box-shadow 0.25s, border-color 0.25s, background 0.25s, transform 0.35s;
            z-index: 10;
            width: 134px;
            height: 82px;
            text-align: center;
            transform: translate(-50%, -50%) scale(0.85);
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            opacity: 0;
            pointer-events: none;
        }
        .flux-node .fn-icon {
            width: 34px; height: 34px; border-radius: var(--radius-md);
            display: flex; align-items: center; justify-content: center;
            margin: 0 auto 6px;
        }
        .flux-node .fn-icon svg { width: 16px; height: 16px; }
        .flux-node .fn-name { font-size: 10.5px; font-weight: 600; color: #999; }
        .flux-node .fn-role { font-size: 8.5px; color: var(--text-dim); margin-top: 2px; }
        .flux-node .fn-badge {
            position: absolute; top: -8px; left: -8px;
            width: 20px; height: 20px;
            background: var(--node-color, var(--accent)); color: #000;
            border-radius: 50%; font-size: 9px; font-weight: 700;
            display: flex; align-items: center; justify-content: center;
            opacity: 0; transform: scale(0);
            transition: all 0.3s cubic-bezier(0.34,1.56,0.64,1);
        }
        .flux-node[data-type="actor"] { --node-color: #f97316; }
        .flux-node[data-type="orchestration"] { --node-color: #3b82f6; }
        .flux-node[data-type="agent"] { --node-color: #818cf8; }
        .flux-node[data-type="data"] { --node-color: #fbbf24; }
        .flux-node[data-type="exec"] { --node-color: #a855f7; }
        .flux-node[data-type="delivery"] { --node-color: #22c55e; }
        .flux-node[data-type="external"] { --node-color: #94a3b8; }
        .flux-node.active .fn-badge { opacity: 1; transform: scale(1); }
        .flux-node.active { border-color: var(--flow-color, rgba(255,255,255,0.85)); background: #1c1c2e; box-shadow: 0 0 0 1px var(--flow-color, rgba(255,255,255,0.6)), 0 0 18px color-mix(in srgb, var(--flow-color, white) 25%, transparent); }
        .flux-node.active .fn-name { color: #fff; }
        /* Only involved nodes appear (active+fn-visible); non-involved stay hidden */
        .flux-node.active{cursor:pointer;pointer-events:auto}
        /* fn-visible without active: show dimmed (available for building) */
        .flux-node.fn-visible:not(.active){opacity:0.35;pointer-events:auto;cursor:pointer;transform:translate(-50%,-50%) scale(0.8)}


        .flux-node[data-type="actor"] .fn-icon { background: rgba(249,115,22,0.12); }
        .flux-node[data-type="actor"] .fn-icon svg { stroke: #f97316; }
        .flux-node[data-type="orchestration"] .fn-icon { background: rgba(59,130,246,0.12); }
        .flux-node[data-type="orchestration"] .fn-icon svg { stroke: #3b82f6; }
        .flux-node[data-type="agent"] .fn-icon { background: rgba(99,102,241,0.12); }
        .flux-node[data-type="agent"] .fn-icon svg { stroke: #818cf8; }
        .flux-node[data-type="data"] .fn-icon { background: rgba(251,191,36,0.12); }
        .flux-node[data-type="data"] .fn-icon svg { stroke: #fbbf24; }
        .flux-node[data-type="exec"] .fn-icon { background: rgba(168,85,247,0.12); }
        .flux-node[data-type="exec"] .fn-icon svg { stroke: #a855f7; }
        .flux-node[data-type="delivery"] .fn-icon { background: rgba(34,197,94,0.12); }
        .flux-node[data-type="delivery"] .fn-icon svg { stroke: #22c55e; }
        .flux-node[data-type="external"] .fn-icon { background: rgba(148,163,184,0.1); }
        .flux-node[data-type="external"] .fn-icon svg { stroke: #94a3b8; }
        .flux-panel {
            width: 360px;
            border-left: 1px solid var(--border);
            display: flex;
            flex-direction: column;
            background: var(--bg-sidebar);
            overflow-y: auto;
        }
        .flux-panel .fp-section { padding: 14px; border-bottom: 1px solid var(--border); }
        .flux-panel .fp-section.fp-parcours { flex:1; overflow-y:auto; }
        .flux-flow-item {
            padding: 8px 10px; border-radius: var(--radius-sm); cursor: pointer;
            margin-bottom: 2px; border-left: 2.5px solid transparent;
            transition: all 0.15s;
            display: flex; align-items: flex-start; gap: 6px;
        }
        .flux-flow-item .ff-body { flex: 1; min-width: 0; }
        .flux-flow-item .ff-grip {
            display: inline-flex; align-items: center; justify-content: center;
            width: 14px; height: 18px; margin-top: 1px; color: var(--text-dim);
            opacity: 0; transition: opacity 0.15s, color 0.15s;
            cursor: grab; flex-shrink: 0;
        }
        .flux-flow-item .ff-grip:active { cursor: grabbing; }
        .flux-flow-item .ff-grip .ff-grip-icon { width: 14px; height: 14px; }
        .flux-flow-item:hover .ff-grip { opacity: 0.6; }
        .flux-flow-item .ff-grip:hover { opacity: 1; color: var(--accent); }
        .flux-flow-item.dragging { opacity: 0.4; }
        .flux-flow-item.drop-before { box-shadow: 0 -2px 0 0 var(--accent) inset, 0 -2px 0 0 var(--accent); }
        .flux-flow-item.drop-after  { box-shadow: 0 2px 0 0 var(--accent) inset, 0 2px 0 0 var(--accent); }
        .flux-flow-item:hover { background: rgba(255,255,255,0.02); border-left-color: #333; }
        .flux-flow-item.selected { background: var(--accent-dim); border-left-color: var(--accent); }
        .flux-flow-item .ff-name { font-size: 11.5px; font-weight: 600; color: #888; }
        .flux-flow-item.selected .ff-name { color: var(--accent); }
        .flux-flow-item .ff-desc { font-size: 9px; color: var(--text-dim); margin-top: 1px; }
        .flux-step {
            display: flex; gap: 8px; margin-bottom: 8px; padding: 10px;
            border-radius: var(--radius-sm); border:1px solid rgba(255,255,255,0.05);
            border-top: 2px solid var(--step-color, #333);
            background: linear-gradient(180deg, rgba(255,255,255,0.02) 0%, transparent 100%);
            opacity: 0; transform: translateY(6px);
            animation: stepFadeIn 0.2s ease forwards;
            cursor: pointer; transition: background 0.15s, border-color 0.15s;
        }
        .flux-step:hover { background: rgba(255,255,255,0.04); border-color:rgba(255,255,255,0.1); }
        .flux-step.fs-expanded { background: rgba(129,140,248,0.06); border-color:var(--accent); border-top-color:var(--step-color); }
        .fp-parcours.has-active .flux-step{opacity:0.3;transform:scale(0.98);transition:opacity 0.2s,transform 0.2s,background 0.15s,border-color 0.15s}
        .fp-parcours.has-active .flux-step.fs-active{opacity:1;transform:scale(1);background:rgba(129,140,248,0.1);border-color:var(--step-color);box-shadow:0 0 12px rgba(129,140,248,0.15),inset 0 0 0 1px rgba(129,140,248,0.1)}
        .fp-parcours.has-active .flux-step.fs-active .fs-num{transform:scale(1.15);transition:transform 0.2s}
        .fp-parcours.has-active .flux-step.fs-active .fs-route b{color:var(--accent)}
        @keyframes stepFadeIn { to { opacity: 1; transform: translateY(0); } }
        .flux-step .fs-num {
            min-width: 28px; height: 28px; background: var(--step-color);
            color: #000; border-radius: 50%; font-size: 12px; font-weight: 800;
            display: flex; align-items: center; justify-content: center; flex-shrink: 0;
            box-shadow: 0 0 8px var(--step-color), 0 0 2px var(--step-color);
        }
        .flux-step .fs-route { font-size: 11px; color: var(--text-muted); }
        .flux-step .fs-route b { color: var(--text); font-weight: 600; }
        .flux-step .fs-route .fs-arrow { font-size: 16px; font-weight: 700; vertical-align: middle; margin: 0 4px; }
        .flux-step .fs-type { font-size: 9px; font-family: 'JetBrains Mono'; font-weight: 700; letter-spacing: 0.1em; margin-top: 2px; }
        .flux-step .fs-desc { font-size: 10px; color: var(--text-muted); line-height: 1.4; margin-top: 2px; }
        .flux-step .fs-detail { display:none; margin-top:8px; padding-top:8px; border-top:1px dashed var(--border); font-size:10.5px; color:var(--text); line-height:1.6; }
        .flux-step.fs-expanded .fs-detail { display:block; }
        .fn-action-item { display:flex; gap:8px; margin-bottom:6px; padding:8px 10px; border-radius: var(--radius-sm); background:rgba(255,255,255,0.02); border:1px solid rgba(255,255,255,0.06); opacity:0; transform:translateY(4px); animation:stepFadeIn 0.2s ease forwards; cursor:pointer; transition:background 0.15s, border-color 0.15s; }
        .fn-action-item:hover { background:rgba(255,255,255,0.05); border-color:rgba(255,255,255,0.12); }
        .fn-action-item .fna-num { min-width:22px; height:22px; background:rgba(255,255,255,0.12); color:var(--text-muted); border-radius:50%; font-size:10px; font-weight:800; display:flex; align-items:center; justify-content:center; flex-shrink:0; border:1px solid var(--border); }
        .fn-action-item .fna-name { font-size:11px; font-weight:600; color:var(--text); }
        .fn-action-item .fna-role { font-size:9px; color:var(--text-muted); margin-top:1px; }
        .fn-action-item .fna-action { display:none; font-size:10px; color:var(--text); line-height:1.5; margin-top:6px; padding-top:6px; border-top:1px dashed var(--border); }
        .fn-action-item.fna-expanded .fna-action { display:block; }
        @keyframes fluxArrow {
            0% { offset-distance: 0%; opacity: 0; }
            3% { opacity: 0.85; }
            97% { opacity: 0.85; }
            100% { offset-distance: 100%; opacity: 0; }
        }
        .flux-arrow {
            width: 12px; height: 7px; position: absolute;
            clip-path: polygon(0% 0%, 60% 0%, 100% 50%, 60% 100%, 0% 100%, 40% 50%);
            offset-rotate: auto;
            pointer-events: none;
            animation-timing-function: linear;
            animation-iteration-count: infinite;
        }

        /* ===== SCROLLBAR ===== */
        ::-webkit-scrollbar { width: 4px; }
        ::-webkit-scrollbar-track { background: transparent; }
        ::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.05); border-radius: 2px; }

        /* ===== JIRA BANNER ===== */
        .jira-banner {
            display:flex;align-items:center;gap:14px;padding:10px 14px;
            background:linear-gradient(90deg, rgba(99,102,241,0.08), rgba(78,205,196,0.04));
            border:1px solid rgba(129,140,248,0.25);border-radius: var(--radius-md);margin-bottom:18px;
        }
        .jira-banner .jb-ic{width:32px;height:32px;border-radius: var(--radius-sm);background:rgba(129,140,248,0.15);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--accent)}
        .jira-banner .jb-txt{flex:1;font-size:11.5px;color:var(--text);line-height:1.5}
        .jira-banner .jb-txt b{color:#fff}
        .jira-banner code{font-family:'JetBrains Mono',monospace;font-size:10.5px;padding:1px 6px;background:rgba(255,255,255,0.05);border-radius:3px;color:var(--cyan)}
        .jira-banner .jb-btn{padding:6px 12px;border:1px solid rgba(255,255,255,0.15);background:transparent;color:var(--text);font:inherit;font-size:11px;border-radius:5px;cursor:pointer;white-space:nowrap}
        .jira-banner .jb-btn:hover{background:rgba(255,255,255,0.05);border-color:var(--accent)}

        /* ===== FILTER BAR ===== */
        .filter-bar{display:flex;gap:8px;align-items:center;margin-bottom:18px;flex-wrap:wrap}
        .filter-bar .fb-search{flex:1;min-width:200px;position:relative}
        .filter-bar input{width:100%;padding:8px 12px 8px 32px;background:var(--bg-card);border:1px solid var(--border);border-radius: var(--radius-sm);color:var(--text);font:inherit;font-size:12px;outline:none}
        .filter-bar input:focus{border-color:var(--accent)}
        .filter-bar .fb-search svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:14px;height:14px;color:var(--text-muted)}
        .filter-chip{padding:6px 11px;background:var(--bg-card);border:1px solid var(--border);border-radius: var(--radius-sm);font-size:11px;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;gap:6px;font-family:inherit;font-weight:500}
        .filter-chip:hover{color:var(--text);border-color:var(--border-hover)}
        .filter-chip.active{color:#fff;border-color:var(--accent);background:var(--accent-dim)}
        .filter-chip .cnt{font-family:'JetBrains Mono',monospace;font-size:10px;opacity:0.7}
        .filter-chip .dot{width:7px;height:7px;border-radius:50%;display:inline-block}
        .filter-chip .chip-ico{display:inline-flex;align-items:center;justify-content:center;line-height:0}

        .section-head-compact{margin-top:26px;margin-bottom:14px}

        /* ===== TICKET INTERACTIVITY ===== */
        .tasks-list li{cursor:pointer;transition:background 0.15s, padding-left 0.15s;border-radius:4px;padding-left:6px}
        .tasks-list li:hover{background:rgba(255,255,255,0.04);padding-left:10px}
        .tasks-list li .task-key{font-size:8.5px;opacity:0.5;font-family:'JetBrains Mono',monospace;color:var(--cyan)}
        .tasks-list li:hover .task-key{opacity:1}

        /* ===== MODAL ===== */
        .modal-overlay{position:fixed;inset:0;background:rgba(5,5,12,0.75);backdrop-filter:blur(6px);z-index:1000;display:none;align-items:center;justify-content:center;animation:modalIn 0.18s ease}
        .modal-overlay.open{display:flex}
        @keyframes modalIn{from{opacity:0}to{opacity:1}}
        @keyframes modalSlide{from{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}
        .modal{width:580px;max-width:92vw;max-height:88vh;overflow:auto;background:#14141f;border:1px solid var(--border-hover);border-radius: var(--radius-md);box-shadow:0 24px 80px rgba(0,0,0,0.6), 0 0 0 1px rgba(129,140,248,0.08);animation:modalSlide 0.22s ease}
        .modal-head{padding:18px 22px 14px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:flex-start;gap:14px}
        .modal-head .mh-l{flex:1;min-width:0}
        .modal-head .mh-key{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--cyan);letter-spacing:0.08em;margin-bottom:5px;display:flex;align-items:center;gap:8px}
        .modal-head .mh-key .epic{color:var(--text-muted)}
        .modal-head .mh-title{font-size:17px;color:#fff;font-weight:600;line-height:1.3}
        .modal-head .mh-close{background:transparent;border:none;color:var(--text-muted);cursor:pointer;font-size:22px;line-height:1;padding:4px 8px;border-radius:4px}
        .modal-head .mh-close:hover{color:#fff;background:rgba(255,255,255,0.05)}
        .modal-body{padding:18px 22px}
        .modal-grid{display:grid;grid-template-columns:110px 1fr;gap:10px 16px;font-size:12px;margin-bottom:18px}
        .modal-grid .mg-lbl{color:var(--text-muted);font-size:10.5px;text-transform:uppercase;letter-spacing:0.1em;padding-top:3px}
        .modal-grid .mg-val{color:var(--text)}
        .status-pill{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:4px;font-size:10.5px;font-weight:600;letter-spacing:0.03em}
        .status-pill .dot{width:6px;height:6px;border-radius:50%}
        .status-pill.s-Termine{background:rgba(74,222,128,0.12);color:var(--green)}
        .status-pill.s-Termine .dot{background:var(--green)}
        .status-pill.s-En-test{background:rgba(251,191,36,0.12);color:var(--yellow)}
        .status-pill.s-En-test .dot{background:var(--yellow)}
        .status-pill.s-En-cours{background:rgba(129,140,248,0.14);color:var(--accent)}
        .status-pill.s-En-cours .dot{background:var(--accent)}
        .status-pill.s-A-faire{background:rgba(255,255,255,0.05);color:var(--text-muted)}
        .status-pill.s-A-faire .dot{background:var(--text-muted)}
        .modal-section{margin-top:16px}
        .modal-section h4{font-size:10.5px;text-transform:uppercase;letter-spacing:0.12em;color:var(--text-muted);margin-bottom:8px;font-weight:600}
        .status-changer{display:flex;gap:6px;flex-wrap:wrap}
        .status-changer button{padding:6px 10px;background:var(--bg);border:1px solid var(--border);border-radius:5px;color:var(--text-muted);font:inherit;font-size:11px;cursor:pointer;display:flex;align-items:center;gap:6px}
        .status-changer button:hover{color:#fff;border-color:var(--border-hover)}
        .status-changer button.current{color:#fff;border-color:var(--accent);background:var(--accent-dim)}
        .status-changer button .d{width:7px;height:7px;border-radius:50%}
        .modal-foot{padding:14px 22px;border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;gap:10px;background:rgba(0,0,0,0.2)}
        .modal-foot .hint{font-size:10.5px;color:var(--text-dim);font-family:'JetBrains Mono',monospace}
        .modal-foot .btns{display:flex;gap:8px}
        .btn{padding:8px 14px;border-radius: var(--radius-sm);font:inherit;font-size:12px;font-weight:500;cursor:pointer;border:1px solid var(--border);background:transparent;color:var(--text);display:inline-flex;align-items:center;gap:6px}
        .btn:hover{border-color:var(--border-hover)}
        .btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}
        .btn.primary:hover{background:#9aa4f9}
        .btn.disabled{opacity:0.4;cursor:not-allowed}

        /* ===== FLUX NODE INTERACTION ===== */
        .flux-node.active:hover{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent), 0 0 18px rgba(129,140,248,0.25)}
        .flux-node.dimmed:not(.fn-visible){opacity:0 !important;pointer-events:none}
        .flux-node.fn-visible.dimmed{opacity:0.18 !important}
        .flux-node.fn-pending.fn-visible{opacity:1 !important;transform:translate(-50%,-50%) scale(1);pointer-events:auto}
        .flux-node.active.fn-visible{opacity:1 !important;transform:translate(-50%,-50%) scale(1);pointer-events:auto}
        .flux-node.focused{box-shadow:0 0 0 2px var(--accent), 0 0 24px rgba(129,140,248,0.4);z-index:20;border-color:var(--accent)}
        .fp-path.dimmed{opacity:0.08 !important}

        /* ===== PIPE EDIT MODE ===== */
        .flux-canvas.pipe-edit #flux-svg{pointer-events:auto}
        .flux-canvas.pipe-edit .fp-path{pointer-events:stroke;cursor:pointer}
        .flux-canvas.pipe-edit .fp-path:hover{filter:brightness(1.4)}
        .fp-handle{fill:white;stroke:var(--accent);stroke-width:2;cursor:grab;pointer-events:auto;filter:drop-shadow(0 0 3px rgba(129,140,248,0.6))}
        .fp-handle:hover{fill:var(--accent);transform:scale(1.3)}
        .fp-handle.dragging{cursor:grabbing;fill:#fbbf24;stroke:#fbbf24}
        /* Anchor snap indicators */
        .pipe-anchor{position:absolute;width:18px;height:18px;border-radius:50%;background:rgba(74,222,128,0.15);border:2px solid #4ade80;cursor:pointer;z-index:150;transform:translate(-50%,-50%);transition:all .15s;display:none}
        .pipe-anchor:hover{background:#4ade80;transform:translate(-50%,-50%) scale(1.3);box-shadow:0 0 8px #4ade80}
        .pipe-anchor.anchor-connected{background:rgba(129,140,248,0.2);border-color:var(--accent)}
        .pipe-anchor.anchor-connected:hover{background:var(--accent);box-shadow:0 0 8px var(--accent)}
        .pipe-anchor .anchor-label{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:7px;font-weight:700;color:#fff;pointer-events:none}
        .flux-canvas.pipe-edit .pipe-anchor{display:flex;align-items:center;justify-content:center}
        .fp-handle-line{stroke:rgba(129,140,248,0.4);stroke-width:1;stroke-dasharray:4 3;pointer-events:none}
        .fp-path.pipe-selected{stroke-width:6 !important;opacity:1 !important;filter:drop-shadow(0 0 6px currentColor)}
        .flux-zoom-bar .edit-toggle{font-size:11px;width:auto;padding:0 10px;transition:all .15s}
        .flux-zoom-bar .edit-toggle.active{background:var(--accent);color:#fff;border-color:var(--accent)}

        /* ===== NODE DRAG MODE ===== */
        .flux-canvas.node-edit .flux-node.active{cursor:grab !important;touch-action:none;user-select:none;-webkit-user-select:none;transition:box-shadow 0.15s, border-color 0.15s !important}
        .flux-canvas.node-edit .flux-node.active:hover{box-shadow:0 0 0 1px rgba(129,140,248,0.4),0 4px 16px rgba(0,0,0,0.3)}
        .flux-canvas.node-edit .flux-node.node-dragging{cursor:grabbing !important;z-index:100 !important;box-shadow:0 0 0 2px var(--accent),0 8px 32px rgba(0,0,0,0.5) !important;border-color:var(--accent) !important;transition:none !important}
        /* Inline text editing (via context menu only) */
        [contenteditable="true"]{outline:none;border-bottom:1px dashed var(--accent);background:rgba(129,140,248,0.06);border-radius:2px;padding:0 2px}
        /* Pipe thickness variants */
        .flux-canvas .fp-path.pipe-thin{stroke-width:3 !important}
        .flux-canvas .fp-path.pipe-thin.fp-inner{stroke-width:1.5 !important}
        .flux-canvas .fp-path.pipe-medium{stroke-width:5 !important}
        .flux-canvas .fp-path.pipe-medium.fp-inner{stroke-width:3 !important}
        .flux-canvas .fp-path.pipe-thick{stroke-width:8 !important}
        .flux-canvas .fp-path.pipe-thick.fp-inner{stroke-width:5.5 !important}
        .flux-canvas .fp-path.pipe-xl{stroke-width:12 !important}
        .flux-canvas .fp-path.pipe-xl.fp-inner{stroke-width:9 !important}
        .flux-arrow.arrow-thin{width:8px;height:5px}
        .flux-arrow.arrow-medium{width:12px;height:7px}
        .flux-arrow.arrow-thick{width:16px;height:10px}
        .flux-arrow.arrow-xl{width:22px;height:13px}
        /* Size toolbar */
        .flux-size-bar{position:absolute;top:10px;right:14px;z-index:60;display:flex;gap:3px;align-items:center}
        .flux-size-bar button{width:28px;height:28px;border-radius: var(--radius-sm);border:1px solid var(--border);background:var(--bg-card);color:var(--text-muted);font-size:11px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}
        .flux-size-bar button:hover{border-color:var(--accent);color:var(--accent)}
        .flux-size-bar button.active{background:var(--accent);color:#fff;border-color:var(--accent)}
        .flux-size-bar .size-label{font-size:9px;color:var(--text-muted);margin:0 4px}
        .flux-zoom-bar .node-edit-toggle{font-size:11px;width:auto;padding:0 10px;transition:all .15s}
        .flux-zoom-bar .node-edit-toggle.active{background:#22c55e;color:#fff;border-color:#22c55e}
        /* Context menu "..." */
        .ctx-dots{position:absolute;top:4px;right:4px;width:22px;height:22px;border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0.4;transition:opacity .15s;font-size:16px;font-weight:700;color:var(--text-muted);z-index:10;line-height:1}
        .ctx-dots:hover{background:rgba(255,255,255,0.1);color:var(--accent);opacity:1}
        .flux-flow-item:hover .ctx-dots,.flux-node:hover .ctx-dots,.flux-step:hover .ctx-dots{opacity:1}
        .flux-flow-item{position:relative;overflow:visible}
        .ctx-menu{position:absolute;top:100%;right:0;min-width:130px;background:var(--bg-card);border:1px solid var(--border);border-radius: var(--radius-sm);box-shadow:0 8px 24px rgba(0,0,0,0.5);z-index:500;padding:4px 0;display:none}
        .ctx-menu.visible{display:block}
        .ctx-menu-item{padding:6px 12px;font-size:11px;color:var(--text);cursor:pointer;display:flex;align-items:center;gap:8px;transition:background .1s}
        .ctx-menu-item:hover{background:rgba(129,140,248,0.12);color:var(--accent)}
        .ctx-menu-item.danger{color:#f87171}
        .ctx-menu-item.danger:hover{background:rgba(248,113,113,0.12)}
        .ctx-menu-item svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:1.5}
        /* Add button "+" */
        .add-btn{display:flex;align-items:center;gap:6px;padding:6px 10px;margin-top:6px;border-radius: var(--radius-sm);border:1px dashed var(--border);color:var(--text-muted);font-size:11px;cursor:pointer;transition:all .15s}
        .add-btn:hover{border-color:var(--accent);color:var(--accent);background:rgba(129,140,248,0.06)}
        .add-btn svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2}
        /* Undo toast */
        .flux-undo-toast{position:absolute;bottom:50px;left:50%;transform:translateX(-50%);background:var(--bg-card);border:1px solid var(--accent);border-radius: var(--radius-sm);padding:6px 14px;font-size:11px;color:var(--accent);opacity:0;transition:opacity 0.2s;pointer-events:none;z-index:200}
        .flux-undo-toast.visible{opacity:1}

        /* ===== FLUX (no static grid — free positioning) ===== */

        /* ===== FLUX LEGEND (horizontal bar) ===== */
        .flux-legend{position:absolute;bottom:10px;left:14px;right:14px;background:rgba(18,18,28,0.92);border:1px solid var(--border);border-radius: var(--radius-sm);padding:8px 16px;z-index:50;backdrop-filter:blur(8px);display:flex;align-items:center;gap:16px;flex-wrap:wrap}
        .flux-legend .leg-item{display:flex;align-items:center;gap:6px;font-size:10px;color:var(--text);white-space:nowrap}
        .flux-legend .ball{width:7px;height:7px;border-radius:50%;flex-shrink:0}

        /* ===== ROADMAP PAGE (Gantt mensuel) ===== */
        .roadmap-toolbar{display:flex;gap:10px;align-items:center;margin-bottom:18px;flex-wrap:wrap}
        .roadmap-toolbar .rt-title{font-size:13px;font-weight:600;color:#fff;margin-right:auto}
        .roadmap-toolbar .rt-sub{font-size:11px;color:var(--text-muted);font-family:'JetBrains Mono',monospace}
        .roadmap-grid{background:var(--bg-card);border:1px solid var(--border);border-radius: var(--radius-md);overflow:visible;position:relative}
        .rm-month-row{display:grid;grid-template-columns:220px repeat(12,1fr);background:rgba(0,0,0,0.4);border-bottom:1px solid var(--border)}
        .rm-month-lbl{padding:10px 14px;font-size:10px;font-weight:700;color:rgba(255,255,255,0.75);text-transform:uppercase;letter-spacing:0.1em;border-right:1px solid var(--border);display:flex;align-items:center}
        .rm-month-cell{padding:8px 4px;text-align:center;font-size:10px;font-weight:700;color:#fff;border-right:1px solid var(--border);letter-spacing:0.06em}
        .rm-month-cell:last-child{border-right:none}
        .rm-month-cell.cur{background:rgba(129,140,248,0.22);color:var(--accent);box-shadow:inset 0 -2px 0 var(--accent)}
        .rm-month-cell.mvp{background:rgba(74,222,128,0.18);color:var(--green)}
        .rm-sw{padding:6px 14px;font-size:10.5px;font-weight:800;color:#fff;text-transform:uppercase;letter-spacing:0.07em;border-bottom:1px solid var(--border)}
        .rm-sw.sw-orch{background:linear-gradient(90deg,#4338ca,#3730a3)}
        .rm-sw.sw-auto{background:linear-gradient(90deg,#b45309,#92400e)}
        .rm-sw.sw-td{background:linear-gradient(90deg,#047857,#065f46)}
        .rm-sw.sw-infra{background:linear-gradient(90deg,#1d4ed8,#1e3a8a)}
        .rm-grow{display:grid;grid-template-columns:220px 1fr;border-bottom:1px solid var(--border);min-height:36px}
        .rm-grow:last-child{border-bottom:none}
        .rm-glbl{padding:6px 14px;font-size:11px;font-weight:600;color:var(--text);border-right:1px solid var(--border);display:flex;flex-direction:column;justify-content:center;line-height:1.25}
        .rm-glbl small{display:block;font-size:9.5px;color:var(--text-muted);font-weight:400;margin-top:2px}
        .rm-garea{position:relative;background-image:repeating-linear-gradient(90deg,transparent 0,transparent calc(8.3333% - 1px),rgba(255,255,255,0.05) calc(8.3333% - 1px),rgba(255,255,255,0.05) 8.3333%)}
        .rm-bar2{position:absolute;height:22px;top:50%;transform:translateY(-50%);border-radius:3px;display:flex;align-items:center;padding:0 8px;font-size:9.5px;font-weight:600;white-space:nowrap;overflow:hidden;letter-spacing:0.02em;cursor:default}
        .rm-bar2.kind-main.sw-orch{background:rgba(129,140,248,0.32);color:#e0e7ff;border:1px solid rgba(129,140,248,0.7)}
        .rm-bar2.kind-main.sw-auto{background:rgba(251,191,36,0.32);color:#fef3c7;border:1px solid rgba(251,191,36,0.7)}
        .rm-bar2.kind-main.sw-td{background:rgba(52,211,153,0.32);color:#d1fae5;border:1px solid rgba(52,211,153,0.7)}
        .rm-bar2.kind-main.sw-infra{background:rgba(96,165,250,0.32);color:#dbeafe;border:1px solid rgba(96,165,250,0.7)}
        .rm-bar2.kind-tu{background:repeating-linear-gradient(-45deg,rgba(255,255,255,0.22) 0,rgba(255,255,255,0.22) 4px,rgba(255,255,255,0.08) 4px,rgba(255,255,255,0.08) 8px);color:#fff;border:1px dashed rgba(255,255,255,0.5);font-size:9px;flex-direction:column;line-height:1.05;padding:2px 4px;align-items:center;justify-content:center;text-align:center}
        .rm-bar2.kind-tu .tu-sub{font-size:7.5px;font-weight:400;opacity:0.9;letter-spacing:0}
        .rm-bar2.kind-pending{background:rgba(96,165,250,0.08);color:#bfdbfe;border:1.5px dashed #60a5fa;font-style:italic}
        .rm-bar2.kind-e2e{background:repeating-linear-gradient(-45deg,rgba(96,165,250,0.35) 0,rgba(96,165,250,0.35) 4px,rgba(96,165,250,0.12) 4px,rgba(96,165,250,0.12) 8px);color:#dbeafe;border:1px solid rgba(96,165,250,0.7)}
        .rm-pending-tag{position:absolute;top:50%;transform:translateY(-50%);background:rgba(245,158,11,0.18);color:#fbbf24;border:1px solid rgba(245,158,11,0.6);font-size:8px;font-weight:700;padding:2px 6px;border-radius:3px;letter-spacing:0.04em;white-space:nowrap;z-index:3}
        .rm-bar-ext-lbl{position:absolute;top:50%;transform:translateY(-50%);font-size:9px;font-weight:600;color:rgba(255,255,255,0.85);font-family:'JetBrains Mono',monospace;white-space:nowrap;letter-spacing:0.02em;z-index:3;text-shadow:0 0 6px rgba(0,0,0,0.6)}
        .rm-now-line{position:absolute;top:0;bottom:0;width:2px;background:var(--accent);box-shadow:0 0 10px var(--accent);z-index:6;pointer-events:none}
        .rm-now-line::after{content:"Aujourd'hui";position:absolute;top:0;left:50%;transform:translate(-50%,-100%);background:var(--accent);color:#fff;font-size:8.5px;font-weight:700;letter-spacing:0.06em;padding:3px 8px;border-radius:3px 3px 0 0;white-space:nowrap;box-shadow:0 2px 8px rgba(129,140,248,0.4)}

        /* Milestones */
        .rm-milestones{margin-top:24px;display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
        .milestone{background:var(--bg-card);border:1px solid var(--border);border-radius: var(--radius-md);padding:14px;position:relative}
        .milestone .ms-date{font-family:'JetBrains Mono',monospace;font-size:10.5px;color:var(--accent);font-weight:600;letter-spacing:0.05em}
        .milestone .ms-title{font-size:13px;font-weight:600;color:#fff;margin-top:5px;line-height:1.3}
        .milestone .ms-desc{font-size:11px;color:var(--text-muted);margin-top:5px;line-height:1.5}
        .milestone .ms-state{position:absolute;top:14px;right:14px;font-size:9px;font-weight:700;letter-spacing:0.1em;padding:2px 7px;border-radius:3px}
        .milestone .ms-state.done{background:rgba(74,222,128,0.15);color:var(--green)}
        .milestone .ms-state.next{background:rgba(129,140,248,0.15);color:var(--accent)}
        .milestone .ms-state.future{background:rgba(255,255,255,0.05);color:var(--text-muted)}
        .milestone .ms-state.risk{background:rgba(248,113,113,0.15);color:var(--red)}

        /* ===== TOAST ===== */
        .toast{position:fixed;bottom:24px;right:24px;background:#1a1a26;border:1px solid var(--border-hover);border-left:3px solid var(--green);padding:12px 18px;border-radius: var(--radius-sm);color:var(--text);font-size:12px;box-shadow:0 8px 24px rgba(0,0,0,0.4);z-index:2000;animation:toastIn 0.25s ease;display:none;align-items:center;gap:10px}
        .toast.show{display:flex}
        @keyframes toastIn{from{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}

        /* ===== PILOTAGE - SECTIONS COMMUNES ===== */
        .section-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px;gap:14px;flex-wrap:wrap}
        .section-head h2{font-size:14px;font-weight:600;color:#fff;letter-spacing:0.02em}
        .section-head .sh-sub{font-size:11px;color:var(--text-muted);font-family:'JetBrains Mono',monospace}
        .section-head .source-pill{font-size:9.5px;color:var(--text-dim);padding:3px 8px;border:1px dashed var(--border);border-radius:4px;font-family:'JetBrains Mono',monospace}

        /* KPI Avant/Apres */
        .kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px;margin-bottom:24px}
        .kpi-card{background:var(--bg-card);border:1px solid var(--border);border-radius: var(--radius-md);padding:16px}
        .kpi-card .kpi-title{font-size:11px;text-transform:uppercase;letter-spacing:0.1em;color:var(--text-muted);font-weight:600;margin-bottom:14px}
        .kpi-bars{display:flex;flex-direction:column;gap:10px}
        .kpi-row{display:flex;align-items:center;gap:10px}
        .kpi-row .kpi-lbl{width:54px;font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.08em;flex-shrink:0}
        .kpi-row .kpi-bar{flex:1;height:10px;background:rgba(255,255,255,0.04);border-radius:5px;position:relative;overflow:hidden}
        .kpi-row .kpi-bar .fill{position:absolute;left:0;top:0;bottom:0;border-radius:5px}
        .kpi-row .kpi-val{width:80px;text-align:right;font-family:'JetBrains Mono',monospace;font-size:11.5px;color:#fff;font-weight:600}
        .kpi-card .kpi-delta{margin-top:12px;padding-top:12px;border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}
        .kpi-card .kpi-delta .gain{font-size:18px;font-weight:700;font-family:'JetBrains Mono',monospace}
        .kpi-card .kpi-delta .gain.up{color:var(--green)}
        .kpi-card .kpi-delta .gain.down{color:var(--green)} /* baisse = bonne nouvelle pour temps/cout */
        .kpi-card .kpi-delta .gain-lbl{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.08em}

        /* BUDGET */
        .budget-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px}
        .budget-card{background:var(--bg-card);border:1px solid var(--border);border-radius: var(--radius-md);padding:16px;border-top:3px solid var(--accent)}
        .budget-card.build{border-top-color:var(--cyan)}
        .budget-card.run{border-top-color:var(--purple)}
        .budget-card.tco{border-top-color:var(--yellow)}
        .budget-card.roi{border-top-color:var(--green)}
        .budget-card .b-lbl{font-size:10px;text-transform:uppercase;letter-spacing:0.1em;color:var(--text-muted);font-weight:600}
        .budget-card .b-val{font-size:24px;font-weight:700;color:#fff;margin-top:6px;font-family:'JetBrains Mono',monospace}
        .budget-card .b-sub{font-size:10.5px;color:var(--text-muted);margin-top:4px}
        .budget-card .b-foot{font-size:10px;color:var(--text-dim);margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}
        .budget-table{background:var(--bg-card);border:1px solid var(--border);border-radius: var(--radius-md);overflow:hidden}
        .budget-table table{width:100%;border-collapse:collapse;font-size:12px}
        .budget-table th{text-align:left;padding:11px 14px;background:rgba(255,255,255,0.02);color:var(--text-muted);font-size:10px;text-transform:uppercase;letter-spacing:0.1em;font-weight:600;border-bottom:1px solid var(--border)}
        .budget-table th.r,.budget-table td.r{text-align:right;font-family:'JetBrains Mono',monospace}
        .budget-table td{padding:11px 14px;color:var(--text);border-bottom:1px solid var(--border)}
        .budget-table tr:last-child td{border-bottom:none}
        .budget-table tr.total td{background:rgba(129,140,248,0.06);color:#fff;font-weight:600}
        .budget-table .pct{font-size:10px;color:var(--text-muted);margin-left:6px}

        /* RISQUES */
        .risk-matrix{display:grid;grid-template-columns:120px repeat(3,1fr);gap:6px;margin-bottom:22px;background:var(--bg-card);border:1px solid var(--border);border-radius: var(--radius-md);padding:14px}
        .risk-matrix .rm-head{font-size:10px;text-transform:uppercase;letter-spacing:0.1em;color:var(--text-muted);font-weight:600;padding:8px;text-align:center}
        .risk-matrix .rm-y{font-size:10px;color:var(--text-muted);font-weight:600;padding:8px 4px;display:flex;align-items:center;writing-mode:horizontal-tb;text-transform:uppercase;letter-spacing:0.08em}
        .risk-matrix .rm-cell{min-height:74px;border-radius: var(--radius-sm);padding:8px;display:flex;flex-direction:column;gap:4px;border:1px solid rgba(255,255,255,0.04)}
        .risk-matrix .rm-cell.green{background:rgba(74,222,128,0.06);border-color:rgba(74,222,128,0.2)}
        .risk-matrix .rm-cell.yellow{background:rgba(251,191,36,0.07);border-color:rgba(251,191,36,0.22)}
        .risk-matrix .rm-cell.orange{background:rgba(255,107,157,0.07);border-color:rgba(255,107,157,0.22)}
        .risk-matrix .rm-cell.red{background:rgba(248,113,113,0.08);border-color:rgba(248,113,113,0.3)}
        .risk-matrix .rm-chip{font-size:10px;padding:3px 6px;border-radius:3px;background:rgba(255,255,255,0.06);color:#fff;font-weight:500;line-height:1.3}
        .risk-list{background:var(--bg-card);border:1px solid var(--border);border-radius: var(--radius-md);overflow:hidden}
        .risk-row{display:grid;grid-template-columns:30px 1fr 80px 80px 1.4fr;gap:14px;padding:12px 16px;border-bottom:1px solid var(--border);align-items:center;font-size:11.5px}
        .risk-row:last-child{border-bottom:none}
        .risk-row.head{background:rgba(255,255,255,0.02);font-size:10px;text-transform:uppercase;letter-spacing:0.1em;color:var(--text-muted);font-weight:600}
        .risk-row .r-id{font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--text-dim)}
        .risk-row .r-name{color:#fff;font-weight:500}
        .risk-row .r-name .r-cat{display:block;font-size:9.5px;color:var(--text-dim);margin-top:2px;font-weight:400}
        .risk-row .level{padding:3px 8px;border-radius:3px;font-size:10px;font-weight:600;text-align:center;letter-spacing:0.03em}
        .level.haute{background:rgba(248,113,113,0.15);color:var(--red)}
        .level.moyenne{background:rgba(251,191,36,0.15);color:var(--yellow)}
        .level.basse{background:rgba(74,222,128,0.15);color:var(--green)}
        .risk-row .r-mit{font-size:10.5px;color:var(--text-muted);line-height:1.45}

        /* RACI / EQUIPE */
        .team-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;margin-bottom:22px}
        .team-card{background:var(--bg-card);border:1px solid var(--border);border-radius: var(--radius-md);padding:16px;display:flex;gap:12px;align-items:flex-start}
        .team-card .avatar{width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--cyan));display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:13px;flex-shrink:0;font-family:'JetBrains Mono',monospace}
        .team-card .t-info{flex:1;min-width:0}
        .team-card .t-name{font-size:13px;font-weight:600;color:#fff}
        .team-card .t-role{font-size:10.5px;color:var(--accent);margin-top:1px;font-weight:500}
        .team-card .t-entity{font-size:10px;color:var(--text-muted);margin-top:4px}
        .team-card .t-alloc{display:inline-block;margin-top:8px;font-size:9.5px;font-family:'JetBrains Mono',monospace;padding:2px 7px;background:rgba(255,255,255,0.04);border-radius:3px;color:var(--text-muted)}
        .raci-table{background:var(--bg-card);border:1px solid var(--border);border-radius: var(--radius-md);overflow:hidden}
        .raci-table table{width:100%;border-collapse:collapse;font-size:11.5px}
        .raci-table th{text-align:left;padding:11px 14px;background:rgba(255,255,255,0.02);color:var(--text-muted);font-size:10px;text-transform:uppercase;letter-spacing:0.1em;font-weight:600;border-bottom:1px solid var(--border)}
        .raci-table th.c{text-align:center;width:56px}
        .raci-table td{padding:11px 14px;border-bottom:1px solid var(--border);color:var(--text)}
        .raci-table td.c{text-align:center;font-weight:700;font-family:'JetBrains Mono',monospace}
        .raci-table tr:last-child td{border-bottom:none}
        .raci-table .rci{display:inline-block;width:22px;height:22px;line-height:22px;border-radius:50%;font-size:10.5px;text-align:center}
        .raci-table .rci.R{background:rgba(248,113,113,0.18);color:var(--red)}
        .raci-table .rci.A{background:rgba(129,140,248,0.18);color:var(--accent)}
        .raci-table .rci.C{background:rgba(251,191,36,0.18);color:var(--yellow)}
        .raci-table .rci.I{background:rgba(255,255,255,0.06);color:var(--text-muted)}
        .raci-table .rci.G{background:rgba(34,197,94,0.18);color:var(--green)}
        .doc-status{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:500;letter-spacing:0.02em;white-space:nowrap}
        .doc-status::before{content:'';width:6px;height:6px;border-radius:50%;flex-shrink:0}
        .doc-status.s-done{background:rgba(34,197,94,0.12);color:#4ade80;border:1px solid rgba(34,197,94,0.25)}
        .doc-status.s-done::before{background:#22c55e;box-shadow:0 0 6px rgba(34,197,94,0.5)}
        .doc-status.s-wip{background:rgba(251,191,36,0.12);color:#fbbf24;border:1px solid rgba(251,191,36,0.25)}
        .doc-status.s-wip::before{background:#f59e0b;box-shadow:0 0 6px rgba(245,158,11,0.5)}
        .doc-status.s-todo{background:rgba(255,255,255,0.04);color:var(--text-muted);border:1px solid rgba(255,255,255,0.08)}
        .doc-status.s-todo::before{background:var(--text-muted);opacity:0.5}
        #docs-table tbody tr.doc-row{cursor:pointer;transition:background 0.15s}
        #docs-table tbody tr.doc-row:hover{background:rgba(255,255,255,0.03)}
        #docs-table tbody tr.doc-row.expanded{background:rgba(99,102,241,0.06)}
        #docs-table tbody tr.doc-row td:first-child{position:relative;padding-left:22px}
        #docs-table tbody tr.doc-row td:first-child::before{content:'';position:absolute;left:6px;top:50%;width:5px;height:5px;border-right:1.5px solid var(--text-muted);border-bottom:1.5px solid var(--text-muted);transform:translateY(-50%) rotate(-45deg);transition:transform 0.2s}
        #docs-table tbody tr.doc-row.expanded td:first-child::before{transform:translateY(-50%) rotate(45deg)}
        #docs-table tbody tr.doc-detail{display:none}
        #docs-table tbody tr.doc-detail.open{display:table-row}
        #docs-table tbody tr.doc-detail>td{padding:0;border-top:none}
        .doc-expand{padding:16px 24px;background:rgba(15,18,30,0.6);border-top:1px solid rgba(255,255,255,0.04);animation:docSlide 0.2s ease}
        @keyframes docSlide{from{opacity:0;max-height:0}to{opacity:1;max-height:400px}}
        .doc-expand h4{font-size:13px;color:var(--accent);margin:0 0 10px;font-weight:600}
        .doc-expand .doc-sections{display:grid;grid-template-columns:1fr 1fr;gap:12px 24px}
        .doc-expand .doc-sec{font-size:11.5px;color:var(--text-muted);line-height:1.6}
        .doc-expand .doc-sec b{color:var(--text);display:block;margin-bottom:2px;font-size:11px;text-transform:uppercase;letter-spacing:0.04em}
        .doc-expand .doc-meta{display:flex;gap:16px;margin-top:12px;padding-top:10px;border-top:1px solid rgba(255,255,255,0.05);font-size:10.5px;color:var(--text-muted)}
        .doc-expand .doc-meta span{display:flex;align-items:center;gap:4px}
        .doc-full{font-size:12px;color:var(--text-muted);line-height:1.7}
        .doc-full h5{font-size:12px;color:var(--accent);margin:14px 0 6px;font-weight:600;text-transform:uppercase;letter-spacing:0.03em}
        .doc-full h5:first-child{margin-top:0}
        .doc-full p{margin:4px 0}
        .doc-full ul{margin:4px 0 8px 16px;padding:0}
        .doc-full li{margin:2px 0}
        .doc-full table{width:100%;border-collapse:collapse;margin:8px 0;font-size:11px}
        .doc-full table th{text-align:left;padding:5px 8px;background:rgba(99,102,241,0.08);color:var(--text);font-size:10px;text-transform:uppercase;letter-spacing:0.03em;border-bottom:1px solid rgba(255,255,255,0.08)}
        .doc-full table td{padding:4px 8px;border-bottom:1px solid rgba(255,255,255,0.03);color:var(--text-muted)}
        .doc-full .adr{background:rgba(255,255,255,0.02);border:1px solid rgba(255,255,255,0.06);border-radius: var(--radius-sm);padding:10px 12px;margin:8px 0}
        .doc-full .adr-title{font-size:11px;font-weight:600;color:var(--text);margin-bottom:4px}
        .doc-full .adr-status{font-size:10px;color:var(--green);margin-bottom:6px}
        .doc-full .two-col{display:grid;grid-template-columns:1fr 1fr;gap:12px 24px}
        .raci-legend{margin-top:10px;font-size:10.5px;color:var(--text-muted);display:flex;gap:18px;flex-wrap:wrap;padding:8px 4px}
        .raci-legend b{color:var(--text)}
        .doc-pdf-btn{background:var(--accent);color:#000;border:none;border-radius: var(--radius-sm);padding:4px 10px;font-size:10px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:opacity 0.2s;text-decoration:none}
        .doc-pdf-btn:hover{opacity:0.85}
        .doc-link{color:var(--text-muted);transition:color 0.2s}
        .doc-link:hover{color:var(--accent)}
        @media print{.sidebar,.topbar,.doc-pdf-btn,.raci-legend{display:none!important}.main-content{margin:0!important;padding:20px!important}.page{display:block!important}}

        /* COMITOLOGIE */
        .comito-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
        .comito-card{background:var(--bg-card);border:1px solid var(--border);border-radius: var(--radius-md);padding:18px;position:relative;border-left:3px solid var(--accent)}
        .comito-card.copil{border-left-color:var(--purple)}
        .comito-card.coproj{border-left-color:var(--cyan)}
        .comito-card.archi{border-left-color:var(--green)}
        .comito-card.tech{border-left-color:var(--yellow)}
        .comito-card.issb{border-left-color:var(--red)}
        .comito-card .c-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}
        .comito-card .c-name{font-size:14px;font-weight:600;color:#fff;letter-spacing:0.02em}
        .comito-card .c-cad{font-size:10px;color:var(--text-muted);font-family:'JetBrains Mono',monospace;text-transform:uppercase;letter-spacing:0.08em}
        .comito-card .c-purpose{font-size:11px;color:var(--text-muted);line-height:1.5;margin-bottom:12px}
        .comito-card .c-meta{display:flex;flex-direction:column;gap:6px;font-size:10.5px;padding-top:10px;border-top:1px solid var(--border)}
        .comito-card .c-meta .row{display:flex;gap:8px;align-items:flex-start}
        .comito-card .c-meta .lbl{color:var(--text-dim);width:74px;text-transform:uppercase;font-size:9.5px;letter-spacing:0.08em;flex-shrink:0;padding-top:1px}
        .comito-card .c-meta .v{color:var(--text);flex:1}
        .comito-card .next-date{display:inline-block;margin-top:10px;font-size:10px;padding:3px 8px;background:rgba(129,140,248,0.1);color:var(--accent);border-radius:3px;font-family:'JetBrains Mono',monospace;font-weight:600}

        /* ===== PIPELINE PAGE ===== */
        .pipeline-container{display:flex;height:calc(100vh - 96px);margin:-24px}
        .pipeline-selector{width:200px;padding:16px;border-right:1px solid var(--border);overflow-y:auto;flex-shrink:0}
        .pipeline-selector .pip-item{padding:8px 12px;border-radius: var(--radius-sm);cursor:pointer;font-size:12px;color:var(--text-muted);margin-bottom:4px;transition:all .15s}
        .pipeline-selector .pip-item:hover{background:var(--accent-dim);color:var(--text)}
        .pipeline-selector .pip-item.active{background:var(--accent-dim);color:var(--accent);font-weight:600}
        .pipeline-canvas{flex:1;position:relative;overflow:auto;padding:40px 60px;display:flex;align-items:center}
        .pipeline-empty{color:var(--text-dim);font-size:13px;margin:auto}
        .pipeline-track{display:flex;align-items:center;gap:0;position:relative;min-width:max-content}
        .pip-node{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;z-index:2}
        .pip-node .pip-box{width:140px;padding:14px 10px;border-radius: var(--radius-md);border:1.5px solid var(--border);background:var(--bg-card);text-align:center;transition:all .2s;cursor:default}
        .pip-node .pip-box:hover{border-color:var(--border-hover);transform:scale(1.03)}
        .pip-node .pip-icon{width:28px;height:28px;margin:0 auto 6px;border-radius: var(--radius-sm);display:flex;align-items:center;justify-content:center}
        .pip-node .pip-icon svg{width:16px;height:16px;stroke:currentColor}
        .pip-node .pip-name{font-size:11px;font-weight:600;color:var(--text);line-height:1.3}
        .pip-node .pip-role{font-size:9.5px;color:var(--text-muted);margin-top:2px}
        .pip-node .pip-type{font-size:8.5px;font-weight:700;letter-spacing:0.06em;margin-top:4px;padding:2px 6px;border-radius:3px;display:inline-block}
        .pip-connector{display:flex;align-items:center;width:80px;position:relative;z-index:1;flex-shrink:0}
        .pip-connector svg{width:100%;height:24px}
        .pip-connector .conn-label{position:absolute;top:-14px;left:50%;transform:translateX(-50%);font-size:8px;color:var(--text-dim);white-space:nowrap;font-family:'JetBrains Mono',monospace}
        .pip-branch{display:flex;flex-direction:column;align-items:center;position:absolute;z-index:3}
        .pip-branch-line{width:1.5px;background:var(--border);position:absolute}
        .pip-branch-node .pip-box{width:120px;padding:10px 8px;border-style:dashed}
        .pip-branch-node .pip-name{font-size:10px}
        .pip-branch-node .pip-role{font-size:9px}

        /* ===== AVANCEMENT MACRO ===== */
        .avanc-summary{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-bottom:24px}
        .avanc-stat{background:var(--bg-card);border:1px solid var(--border);border-radius: var(--radius-md);padding:14px 16px;text-align:center}
        .avanc-stat .as-val{font-size:22px;font-weight:700;color:#fff;font-family:'JetBrains Mono',monospace}
        .avanc-stat .as-lbl{font-size:10px;color:var(--text-muted);margin-top:4px;text-transform:uppercase;letter-spacing:0.06em}
        .avanc-grid{display:flex;flex-direction:column;gap:16px}
        .avanc-card{background:var(--bg-card);border:1px solid var(--border);border-radius: var(--radius-md);padding:20px 24px;transition:border-color 0.2s}
        .avanc-card:hover{border-color:rgba(129,140,248,0.3)}
        .avanc-header{display:flex;align-items:center;gap:14px;margin-bottom:16px}
        .avanc-icon{width:38px;height:38px;border-radius: var(--radius-md);display:flex;align-items:center;justify-content:center;flex-shrink:0}
        .avanc-icon svg{width:20px;height:20px}
        .avanc-title{font-size:14px;font-weight:600;color:var(--text)}
        .avanc-role{font-size:11px;color:var(--text-muted);margin-top:2px}
        .avanc-pct{margin-left:auto;font-size:20px;font-weight:700;font-family:'JetBrains Mono',monospace}
        .avanc-phase{font-size:9px;color:var(--text-muted);margin-top:2px;text-align:right}
        .avanc-stepper{display:flex;align-items:flex-start;gap:0;position:relative;margin-top:4px}
        .avanc-step{flex:1;display:flex;flex-direction:column;align-items:center;position:relative;z-index:2}
        .avanc-dot{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;font-family:'JetBrains Mono',monospace;border:2px solid var(--border);background:var(--bg-card);color:var(--text-dim);transition:all 0.3s}
        .avanc-dot.done{background:var(--green);border-color:var(--green);color:#000}
        .avanc-dot.active{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 0 12px rgba(129,140,248,0.4)}
        .avanc-dot.pending{background:transparent;border-color:var(--border);color:var(--text-dim)}
        .avanc-slbl{font-size:9px;color:var(--text-muted);margin-top:6px;text-align:center;line-height:1.3;max-width:80px}
        .avanc-slbl.done{color:var(--green)}
        .avanc-slbl.active{color:var(--accent);font-weight:600}
        .avanc-line{position:absolute;top:14px;left:0;right:0;height:2px;background:var(--border);z-index:1}
        .avanc-line-fill{position:absolute;top:14px;left:0;height:2px;background:linear-gradient(90deg,var(--green),var(--accent));z-index:1;transition:width 0.4s}
        .avanc-scope{display:inline-block;margin-top:12px;padding:4px 10px;border-radius:4px;font-size:10px;font-weight:500;letter-spacing:0.02em}
        .avanc-scope.mvp{background:rgba(129,140,248,0.12);color:var(--accent);border:1px solid rgba(129,140,248,0.25)}
        .avanc-scope.post{background:rgba(251,191,36,0.1);color:var(--yellow);border:1px solid rgba(251,191,36,0.2)}

        /* ===== MINI MACRO STEPPER (in agent cards) ===== */
        .agent-macro{margin-top:14px;padding-top:12px;border-top:1px dashed rgba(255,255,255,0.06)}
        .agent-macro-head{display:flex;justify-content:space-between;align-items:center;font-size:9px;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.06em;margin-bottom:10px}
        .agent-macro-phase{color:var(--accent);font-weight:600;text-transform:none;letter-spacing:0;font-size:10px}
        .agent-macro-stepper .avanc-dot{width:20px;height:20px;font-size:8.5px;border-width:1.5px}
        .agent-macro-stepper .avanc-line,.agent-macro-stepper .avanc-line-fill{top:10px;height:1.5px}
        .agent-macro-stepper .avanc-slbl{font-size:8px;margin-top:5px;max-width:60px}
        .agent-macro-stepper .avanc-dot.active{box-shadow:0 0 8px rgba(129,140,248,0.4)}
/* === Agent group header (Test Designer) === */
.agent-group-header {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    gap: 14px;
    margin: 18px 0 4px;
}
.agent-group-header .agh-line {
    flex: 1;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--purple, #a78bfa) 50%, transparent);
    opacity: 0.5;
}
.agent-group-header .agh-title {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 6px 14px;
    background: rgba(139, 92, 246, 0.10);
    border: 1px solid rgba(139, 92, 246, 0.35);
    border-radius: 999px;
    font-size: 12px;
    font-weight: 700;
    color: var(--purple, #a78bfa);
    letter-spacing: 0.02em;
    text-transform: uppercase;
}
.agent-group-header .agh-sub {
    font-size: 10px;
    font-weight: 500;
    color: var(--text-muted);
    text-transform: none;
    letter-spacing: 0;
    margin-left: 6px;
}
