  /* === NAV === */
  .nav-bar {
    display: flex;
    gap: 8px;
    justify-content: center;
    padding: 10px 20px 20px;
    flex-wrap: wrap;
  }
  .nav-dot {
    width: 12px; height: 12px;
    border-radius: 50%;
    background: #ccc;
    border: none;
    cursor: pointer;
    transition: all 0.2s ease;
  }
  .nav-dot.active { background: var(--primary); transform: scale(1.4); }
  .nav-dot.completed { background: var(--success); }
  .nav-dot:hover { transform: scale(1.2); }

  /* === RADAR CHART === */
  .radar-svg { display:block; width:100%; height:auto; }
  .radar-svg .grid-poly { fill:none; stroke:rgba(0,0,0,0.06); stroke-width:1; }
  body.dark .radar-svg .grid-poly { stroke:rgba(255,255,255,0.08); }
  .radar-svg .axis-line { stroke:rgba(0,0,0,0.08); stroke-width:1; }
  body.dark .radar-svg .axis-line { stroke:rgba(255,255,255,0.1); }
  .radar-svg .label { font-size:8px; font-weight:500; fill:var(--text); }
  .radar-svg .value-label { font-size:7px; fill:var(--text-light); }
  .radar-svg .data-poly { stroke-width:2; fill-opacity:0.15; animation:radarDraw 1.2s ease-out forwards; transform-origin:center; }
  @keyframes radarDraw { 0% { transform:scale(0.3); } 60% { transform:scale(1.05); } 100% { transform:scale(1); } }
  @keyframes radarFade { 0% { opacity:0; } 100% { opacity:1; } }
  .radar-svg .data-poly.avant { opacity:0.7; }
  .radar-svg .data-poly.apres { opacity:0.7; stroke-dasharray:6,3; }
  #radarContainer[data-mode="avant"] .data-poly.apres { opacity:0 !important; }
  #radarContainer[data-mode="avant"] .data-poly.avant { opacity:1 !important; }
  #radarContainer[data-mode="apres"] .data-poly.avant { opacity:0.15 !important; }
  #radarContainer[data-mode="apres"] .data-poly.apres { opacity:1 !important; }
  #radarContainer[data-mode="comparer"] .data-poly.avant { opacity:0.7 !important; }
  #radarContainer[data-mode="comparer"] .data-poly.apres { opacity:0.7 !important; }
  .radar-svg .data-circle { fill:#fff; stroke-width:2; cursor:pointer; transition:all 0.3s ease; }
  .radar-svg .data-circle:hover { r:6; }
  .radar-mode-bar {
    display:flex; gap:6px; justify-content:center; margin:-4px auto 10px;
    max-width:580px;
  }
  .radar-mode-btn {
    padding:5px 12px; border-radius:20px; border:1.5px solid #ddd;
    background:#fafafa; font-size:0.72rem; font-weight:500;
    cursor:pointer; transition:all 0.25s ease; color:var(--text);
  }
  .radar-mode-btn:hover { border-color:var(--primary); background:var(--primary-light); color:#fff; }
  .radar-mode-btn.active { border-color:var(--primary); background:var(--primary); color:#fff; }
  .radar-svg .radar-legend text { fill:var(--text-light); font-size:9px; }
  body.dark .radar-mode-btn { background:#333; border-color:#555; }
  body.dark .radar-mode-btn:hover { background:var(--primary); border-color:var(--primary); }
  body.dark .radar-mode-btn.active { background:var(--primary); border-color:var(--primary); }
  .radar-layer.dim { opacity:0.35 !important; transition:opacity 0.3s ease; }
  .radar-layer.active { opacity:1 !important; }

  /* === MICRO-INTERACTIONS === */
  .macro-card, .axis-card-v2, .card-mini, .forfait-card, .constat-card, .kpi-card, .tree-node, .slide-header {
    will-change: transform;
    transition: transform 0.25s cubic-bezier(0.25,0.46,0.45,0.94), box-shadow 0.25s ease, background 0.2s ease;
  }
  .axis-card-v2:hover, .card-mini:hover, .forfait-card:hover, .kpi-card:hover, .tree-node:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 24px rgba(0,0,0,0.10);
  }
  .slide-header:hover { transform: translateY(-1px); box-shadow: 0 2px 8px rgba(0,0,0,0.04); }
  body.dark .macro-card:hover, body.dark .axis-card-v2:hover, body.dark .card-mini:hover, body.dark .kpi-card:hover {
    box-shadow: 0 6px 24px rgba(0,0,0,0.30);
  }

  /* === DARK MODE BUTTON === */
  .dark-btn {
    background:var(--card); border:1px solid #ddd; border-radius:10px;
    padding:7px 14px; font-size:0.8rem; cursor:pointer; color:var(--text);
    transition:all 0.2s ease; display:flex; align-items:center; gap:5px;
  }
  .dark-btn:hover { border-color:var(--primary-light); background:var(--primary-light); color:#fff; }

  /* === ONE-PAGER PRINT === */
  @media print {
    body { background:#fff !important; color:#000 !important; }
    .timer-bar-container { display:none !important; }
    .slide-counter { display:none !important; }
    .nav-bar { display:none !important; }
    .header { -webkit-print-color-adjust:exact; print-color-adjust:exact; }
    .slide { opacity:1 !important; filter:none !important; border:1px solid #ddd !important; break-inside:avoid; margin-bottom:10px !important; }
    .slide.active { border:2px solid #0d47a1 !important; }
    .slide.completed { opacity:1 !important; filter:none !important; }
    .slide-body { max-height:10000px !important; overflow:visible !important; }
    .slide.open .slide-body { max-height:10000px !important; }
    .key-msg { -webkit-print-color-adjust:exact; print-color-adjust:exact; }
    .diagram { -webkit-print-color-adjust:exact; print-color-adjust:exact; }
    .fullscreen-btn, .notes-toggle, .auto-btn, .qa-btn, .sound-btn, .pv-btn { display:none !important; }
    .qa-overlay, .notes-overlay { display:none !important; }
    .container { max-width:100% !important; padding:8px !important; }
    .grid-2, .grid-3 { break-inside:avoid; }
    .card-mini { break-inside:avoid; }
    .table-wrap { break-inside:avoid; }
  }

  /* === LOGO BADGES === */
  .logo-badges {
    display: flex;
    justify-content: center;
    gap: 24px;
    margin: 10px 0 4px;
    flex-wrap: wrap;
  }
  .logo-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 6px 14px;
    border-radius: 8px;
    background: rgba(255,255,255,0.08);
    font-size: 0.78rem;
    font-weight: 600;
    transition: background 0.2s, transform 0.2s;
    cursor: default;
  }
  .logo-badge:hover { background: rgba(255,255,255,0.15); transform: translateY(-1px); }
  .logo-badge svg { flex-shrink: 0; }

  /* === TOOLTIPS === */
  .tip {
    position: relative;
    display: inline-flex;
    align-items: center;
    cursor: help;
    border-bottom: 1px dashed var(--primary-light);
    color: var(--primary);
    font-weight: 500;
  }
  .tip[data-std] {
    cursor: pointer;
    border-bottom-style: solid;
    transition: all 0.15s ease;
  }
  .tip[data-std]:hover,
  .tip[data-std]:focus-visible {
    color: var(--accent);
    border-bottom-color: var(--accent);
    outline: 2px solid var(--accent);
    outline-offset: 2px;
  }
  .tip::after {
    content: attr(data-tip);
    position: absolute;
    top: calc(100% + 8px);
    left: 50%;
    transform: translateX(-50%) scale(0.9);
    background: #1a1a2e;
    color: #f0f0ff;
    padding: 8px 14px;
    border-radius: 8px;
    font-size: 0.78rem;
    font-weight: 400;
    white-space: normal;
    width: max-content;
    max-width: 280px;
    line-height: 1.5;
    opacity: 0;
    pointer-events: none;
    transition: all 0.2s cubic-bezier(0.4,0,0.2,1);
    box-shadow: 0 8px 30px rgba(0,0,0,0.25);
    z-index: 100;
    text-align: left;
    border: 1px solid rgba(255,255,255,0.08);
  }
  .tip::before {
    content: '';
    position: absolute;
    top: calc(100% + 4px);
    left: 50%;
    transform: translateX(-50%) scale(0.9);
    border: 6px solid transparent;
    border-bottom-color: #1a1a2e;
    opacity: 0;
    pointer-events: none;
    transition: all 0.2s cubic-bezier(0.4,0,0.2,1);
    z-index: 100;
  }
  .tip:hover::after, .tip:hover::before {
    opacity: 1;
    transform: translateX(-50%) scale(1);
  }
  @media (max-width: 600px) {
    .tip::after { max-width: 200px; font-size: 0.72rem; }
  }

  /* === VULGARISATION === */
  .vulgarisation {
    background: linear-gradient(135deg, #f3e5f5, #e1bee7);
    border: 1px solid #ce93d8;
    border-radius: 10px;
    margin: 14px 0;
    overflow: hidden;
    transition: box-shadow 0.3s ease;
  }
  .vulgarisation:hover { box-shadow: 0 4px 16px rgba(106,27,154,0.12); }
  .vulgarisation-header {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px 16px;
    cursor: pointer;
    font-size: 0.85rem;
    font-weight: 600;
    color: #6a1b9a;
    user-select: none;
    transition: background 0.2s;
  }
  .vulgarisation-header:hover { background: rgba(106,27,154,0.05); }
  .vulgarisation-header .icon { transition: transform 0.3s ease; font-size: 0.8rem; }
  .vulgarisation.open .vulgarisation-header .icon { transform: rotate(90deg); }
  .vulgarisation-body {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4,0,0.2,1);
  }
  .vulgarisation.open .vulgarisation-body { max-height: 600px; }
  .vulgarisation-body-inner {
    padding: 0 16px 16px;
    font-size: 0.88rem;
    line-height: 1.7;
    color: #333;
  }
  .vulgarisation-body-inner strong { color: #6a1b9a; }

  /* === INCIDENT SIMULATOR === */
  .sim-scenarios { display:flex; flex-direction:column; gap:8px; margin-bottom:10px; }
  .sim-scenario { padding:6px 10px; border-radius:8px; background:rgba(0,0,0,0.02); }
  body.dark .sim-scenario { background:rgba(255,255,255,0.04); }
  .sim-head { display:flex; align-items:center; gap:8px; margin-bottom:4px; font-size:0.78rem; }
  .sim-icon { font-size:1rem; }
  .sim-name { flex:1; font-weight:600; }
  .sim-cost { font-size:0.72rem; color:var(--text-light); background:rgba(0,0,0,0.05); padding:1px 6px; border-radius:4px; }
  body.dark .sim-cost { background:rgba(255,255,255,0.08); }
  .sim-prob { font-weight:700; font-size:0.85rem; min-width:50px; text-align:right; }
  .sim-pval { color:var(--primary); font-size:0.9rem; }
  .sim-track { position:relative; height:24px; }
  .sim-slider {
    -webkit-appearance:none; appearance:none; width:100%; height:6px;
    border-radius:3px; background:linear-gradient(90deg,#e8f5e9 0%,#fff3e0 40%,#ffebee 70%,#fce4ec 100%);
    outline:none; cursor:pointer;
  }
  .sim-slider::-webkit-slider-thumb {
    -webkit-appearance:none; appearance:none; width:18px; height:18px;
    border-radius:50%; background:var(--primary); border:2px solid #fff;
    box-shadow:0 1px 4px rgba(0,0,0,0.2); cursor:pointer; transition:transform 0.15s ease;
  }
  .sim-slider::-webkit-slider-thumb:hover { transform:scale(1.2); }
  .sim-slider::-moz-range-thumb {
    width:18px; height:18px; border-radius:50%; background:var(--primary);
    border:2px solid #fff; box-shadow:0 1px 4px rgba(0,0,0,0.2); cursor:pointer;
  }
  .sim-track-label { position:absolute; top:14px; font-size:0.55rem; color:var(--text-light); }
  .sim-total {
    display:flex; align-items:center; gap:12px; padding:10px 14px;
    background:linear-gradient(135deg,#e8f5e9,#c8e6c9); border-radius:10px;
    margin-top:4px; transition:all 0.3s ease;
  }
  body.dark .sim-total { background:linear-gradient(135deg,#1b3a1b,#1a2e1a); }
  .sim-total.danger { background:linear-gradient(135deg,#ffebee,#ffcdd2); }
  body.dark .sim-total.danger { background:linear-gradient(135deg,#3a1b1b,#2e1a1a); }
  .sim-total-label { font-size:0.78rem; font-weight:600; flex-shrink:0; }
  .sim-total-value { text-align:center; flex-shrink:0; }
  .sim-amount { font-size:1.4rem; font-weight:700; color:#2e7d32; transition:color 0.3s ease; }
  .sim-total.danger .sim-amount { color:#c62828; }
  .sim-unit { font-size:0.75rem; color:var(--text-light); }
  .sim-vs-audit { flex:1; min-width:120px; }
  .sim-bar-wrap {
    display:flex; height:22px; border-radius:4px; overflow:hidden;
    background:#e0e0e0; position:relative;
  }
  .sim-bar { display:flex; align-items:center; justify-content:center; font-size:0.6rem; font-weight:600; transition:width 0.3s ease; }
  .sim-bar.audit { background:#1565c0; color:#fff; }
  .sim-bar.risk { background:#c62828; color:#fff; min-width:2px; }

  /* === BUDGET DONUT === */
  .donut-wrap {
    display:flex; align-items:center; gap:24px; flex-wrap:wrap;
    justify-content:center;
  }
  .donut-svg { width:180px; height:180px; flex-shrink:0; }
  .donut-svg circle { cursor:pointer; }
  .donut-svg circle:hover { filter:brightness(1.15); }
  .donut-legend { display:flex; flex-direction:column; gap:2px; flex:1; min-width:140px; }
  .donut-item {
    display:flex; align-items:center; gap:6px; padding:5px 8px;
    border-radius:6px; cursor:pointer; transition:background 0.2s ease;
    font-size:0.78rem;
  }
  .donut-item:hover { background:rgba(0,0,0,0.03); }
  body.dark .donut-item:hover { background:rgba(255,255,255,0.04); }
  .donut-dot { width:10px; height:10px; border-radius:50%; flex-shrink:0; }
  .donut-label { flex:1; font-weight:600; }
  .donut-pct { font-weight:700; font-size:0.72rem; min-width:32px; text-align:right; }
  .donut-val { color:var(--text-light); font-size:0.7rem; min-width:40px; text-align:right; }
  .donut-detail {
    max-height:0; overflow:hidden; transition:max-height 0.3s ease;
    margin:0 0 0 22px; border-radius:6px; background:#f5f5f5;
  }
  body.dark .donut-detail { background:#22224a; }
  .donut-detail.open { max-height:200px; }
  .donut-detail-inner { padding:6px 10px; font-size:0.75rem; }

  /* === WATERFALL CHART (ROI Cascade) === */
  .wf-chart { display: flex; flex-direction: column; gap: 2px; position: relative; }
  .wf-row {
    display: flex; align-items: center; gap: 8px; padding: 6px 0;
    font-size: 0.78rem;
  }
  .wf-row.total { border-top: 2px solid #e0e0e0; margin-top: 4px; padding-top: 10px; }
  .wf-label { width: 110px; flex-shrink: 0; font-weight: 600; font-size: 0.75rem; }
  .wf-bar-wrap {
    flex: 1; height: 28px; position: relative; background: #f5f5f5;
    border-radius: 4px; overflow: visible;
  }
  .wf-bar {
    position: absolute; top: 2px; height: 24px; border-radius: 4px;
    display: flex; align-items: center; transition: all 0.5s ease;
    min-width: 4px;
  }
  .wf-bar.neg { background: #ef9a9a; }
  .wf-bar.pos { background: #a5d6a7; }
  .wf-bar.total { background: #43a047; }
  .wf-bar .wf-delta {
    position: absolute; right: -60px; font-size: 0.65rem; font-weight: 700;
    white-space: nowrap;
  }
  .wf-bar.neg .wf-delta { color: #c62828; }
  .wf-bar.pos .wf-delta,
  .wf-bar.total .wf-delta { color: #2e7d32; }
  .wf-cumul { min-width: 60px; font-size: 0.72rem; font-weight: 600; text-align: right; }
  .wf-scale {
    display: flex; align-items: center; position: relative;
    height: 20px; margin-top: 6px; font-size: 0.6rem; color: var(--text-light);
    border-top: 1px solid #ddd; padding-top: 4px;
  }
  .wf-scale span { position: absolute; }
  body.dark .wf-bar-wrap { background: #333; }
  body.dark .wf-row.total { border-color: #555; }
  body.dark .wf-scale { border-color: #555; }

  /* === AX SLIDERS (Avant/Après) === */
  .ax-sliders { display: flex; flex-direction: column; gap: 6px; }
  .ax-slider {
    display: flex; align-items: center; gap: 8px; padding: 6px 10px;
    border-radius: 8px; cursor: pointer; transition: background 0.2s ease;
    font-size: 0.78rem;
  }
  .ax-slider:hover { background: rgba(0,0,0,0.03); }
  .ax-slider .ax-label { width: 100px; flex-shrink: 0; font-weight: 600; }
  .ax-slider .slider-track {
    flex: 1; height: 20px; position: relative; background: #eee;
    border-radius: 10px; overflow: visible;
  }
  .ax-slider .slider-bar {
    position: absolute; top: 0; left: 0; height: 100%;
    border-radius: 10px; transition: width 0.5s ease;
  }
  .ax-slider .slider-bar.before { background: #e0e0e0; z-index: 0; }
  .ax-slider .slider-gap {
    position: absolute; top: 0; height: 100%; background: #c8e6c9; z-index: 1;
    border-radius: 0;
  }
  .ax-slider .slider-gap::after {
    content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0;
    background: repeating-linear-gradient(90deg, transparent, transparent 4px, rgba(255,255,255,0.4) 4px, rgba(255,255,255,0.4) 8px);
  }
  .ax-slider .slider-bar.after { background: #43a047; z-index: 0; border-radius: 0 10px 10px 0; }
  .ax-slider .slider-dot {
    position: absolute; top: 50%; transform: translate(-50%,-50%);
    font-size: 1rem; z-index: 2; text-shadow: 0 1px 2px rgba(0,0,0,0.3);
    transition: left 0.5s ease;
  }
  .ax-slider .slider-dot.before { color: #757575; }
  .ax-slider .slider-dot.after { color: #fff; }
  .ax-slider .slider-val { font-size: 0.72rem; min-width: 32px; }
  .ax-slider .slider-val.before { color: #757575; }
  .ax-slider .slider-val.after { color: #2e7d32; font-weight: 700; }
  .ax-slider .slider-arrow { color: #999; font-size: 0.7rem; }
  .slider-detail {
    margin-top: 8px; padding: 12px 16px; border-radius: 10px;
    background: #f5f5f5; font-size: 0.82rem; display: none;
    animation: budgetFadeIn 0.25s ease;
  }
  .slider-detail.open { display: block; }
  body.dark .slider-detail { background: #22224a; }
  body.dark .ax-slider:hover { background: rgba(255,255,255,0.03); }
  body.dark .ax-slider .slider-track { background: #444; }

  /* === TIMELINE === */
  .std-timeline {
    position: relative; margin: 12px 0; padding-left: 28px;
  }
  .std-timeline::before {
    content: ''; position: absolute; left: 9px; top: 0; bottom: 0;
    width: 2px; background: #ddd;
  }
  body.dark .std-timeline::before { background: #555; }
  .tl-node {
    position: relative; margin-bottom: 8px; cursor: pointer;
    padding: 8px 12px; border-radius: 8px;
    transition: background 0.2s ease;
  }
  .tl-node:hover { background: rgba(0,0,0,0.03); }
  body.dark .tl-node:hover { background: rgba(255,255,255,0.03); }
  .tl-node .tl-dot {
    position: absolute; left: -21px; top: 14px;
    width: 14px; height: 14px; border-radius: 50%;
    background: var(--primary); border: 2px solid #fff;
    box-shadow: 0 0 0 2px var(--primary);
  }
  body.dark .tl-node .tl-dot { border-color: #1a1a2e; }
  .tl-node.now .tl-dot { background: #e65100; box-shadow: 0 0 0 2px #e65100, 0 0 6px rgba(230,81,0,0.5); }
  .tl-node .tl-content { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
  .tl-node .tl-date {
    font-size: 0.65rem; font-weight: 700; color: var(--primary); white-space: nowrap;
  }
  .tl-node.now .tl-date { color: #e65100; }
  .tl-node .tl-title { font-size: 0.8rem; font-weight: 600; }
  .tl-node .tl-brief { font-size: 0.7rem; color: var(--text-light); }
  .tl-detail {
    margin-top: 8px; padding: 12px 16px; border-radius: 10px;
    background: #f5f5f5; font-size: 0.82rem; display: none;
    animation: budgetFadeIn 0.25s ease;
  }
  .tl-detail.open { display: block; }
  body.dark .tl-detail { background: #22224a; }

  /* === RISK HEATMAP 5×5 === */
  .risk-heatmap {
    display: grid;
    grid-template-columns: auto repeat(5, 1fr);
    gap: 2px;
    margin: 12px 0;
    font-size: 0.7rem;
    align-items: stretch;
  }
  .risk-heatmap .hm-label {
    padding: 2px 4px;
    text-align: center;
    font-weight: 600;
    font-size: 0.62rem;
    color: var(--text-light);
    display: flex;
    align-items: center;
    justify-content: center;
    white-space: nowrap;
  }
  .risk-heatmap .hm-label.y { justify-content: flex-end; padding-right: 6px; }
  .risk-heatmap .hm-label.colhead { font-size: 0.6rem; padding: 2px 0; }
  .risk-heatmap .hm-cell {
    border-radius: 3px;
    min-height: 40px;
    position: relative;
    transition: transform 0.2s ease;
  }
  .risk-heatmap .hm-cell[data-s="1"],
  .risk-heatmap .hm-cell[data-s="2"] { background: #e8f5e9; }
  .risk-heatmap .hm-cell[data-s="3"],
  .risk-heatmap .hm-cell[data-s="4"] { background: #fff8e1; }
  .risk-heatmap .hm-cell[data-s="5"],
  .risk-heatmap .hm-cell[data-s="6"] { background: #fff3e0; }
  .risk-heatmap .hm-cell[data-s="7"],
  .risk-heatmap .hm-cell[data-s="8"] { background: #ffebee; }
  .risk-heatmap .hm-cell[data-s="9"],
  .risk-heatmap .hm-cell[data-s="10"] { background: #fce4ec; }
  .risk-heatmap .hm-pin {
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    width: 18px; height: 18px;
    border-radius: 50%;
    border: 2px solid rgba(255,255,255,0.9);
    cursor: pointer;
    transition: all 0.25s ease;
    z-index: 2;
    box-shadow: 0 1px 3px rgba(0,0,0,0.2);
  }
  .risk-heatmap .hm-pin.low { background: #66bb6a; }
  .risk-heatmap .hm-pin.med { background: #ffa726; }
  .risk-heatmap .hm-pin.high { background: #ef5350; }
  .risk-heatmap .hm-pin:hover { transform: translate(-50%, -50%) scale(1.5); z-index: 3; }
  .risk-heatmap .hm-pin.selected { transform: translate(-50%, -50%) scale(1.6); box-shadow: 0 0 0 3px rgba(0,0,0,0.2); }
  .risk-heatmap .hm-pin.low.selected { background: #2e7d32; }
  .risk-heatmap .hm-pin.med.selected { background: #e65100; }
  .risk-heatmap .hm-pin.high.selected { background: #b71c1c; }
  /* Tooltip on pin hover */
  .risk-heatmap .hm-pin::after {
    content: attr(data-label);
    position: absolute;
    bottom: calc(100% + 4px);
    left: 50%; transform: translateX(-50%);
    background: rgba(0,0,0,0.8);
    color: #fff;
    font-size: 0.6rem;
    padding: 2px 6px;
    border-radius: 4px;
    white-space: nowrap;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.2s ease;
  }
  .risk-heatmap .hm-pin:hover::after { opacity: 1; }
  .risk-heatmap .hm-pin .hm-count {
    position: absolute;
    top: -6px; right: -6px;
    background: #c62828;
    color: #fff;
    font-size: 0.5rem;
    border-radius: 50%;
    width: 14px; height: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    border: 1px solid #fff;
  }
  /* Risk detail panels (shared with existing) */
  .risk-detail {
    max-height: 0; overflow: hidden; transition: max-height 0.4s ease;
    background: #fafafa; border-radius: 8px; margin-bottom: 6px;
  }
  .risk-detail.open { max-height: 300px; }
  .risk-detail-inner { padding: 12px 16px; font-size: 0.85rem; }

  /* === OBJECTION FLOW === */
  .obj-map { display: flex; flex-direction: column; gap: 4px; margin: 12px 0; }
  .obj-row { display: flex; align-items: stretch; gap: 6px; }
  .obj-icon { 
    width: 32px; display: flex; align-items: center; justify-content: center;
    font-size: 1rem; flex-shrink: 0;
  }
  .obj-card {
    flex: 1; padding: 10px 14px; border-radius: 8px; font-size: 0.82rem;
    cursor: pointer; transition: all 0.3s ease; border: 1px solid transparent;
  }
  .obj-card:hover { transform: translateX(3px); }
  .obj-card.objection { background: #ffebee; border-color: #ffcdd2; color: #c62828; }
  .obj-card.response { background: #e8f5e9; border-color: #a5d6a7; color: #2e7d32; }
  .obj-card.objection:hover { background: #ffcdd2; }
  .obj-card.response:hover { background: #c8e6c9; }
  .obj-card.selected { border-width: 2px; }
  .obj-response {
    max-height: 0; overflow: hidden; transition: max-height 0.4s ease;
    background: #fafafa; border-radius: 8px; margin: 0 0 4px 38px;
  }
  .obj-response.open { max-height: 200px; }
  .obj-response-inner { padding: 10px 14px; font-size: 0.82rem; border-left: 3px solid #2e7d32; }

  /* === PROGRESS BAR GLOBALE === */
  .global-progress {
    max-width:1100px; margin:8px auto 4px; padding:0 20px;
    display:flex; align-items:center; gap:10px; font-size:0.72rem; color:var(--text-light);
  }
  .global-progress .track { flex:1; height:4px; background:#e0e0e0; border-radius:2px; overflow:hidden; }
  .global-progress .fill { height:100%; width:0%; background:linear-gradient(90deg,var(--primary),var(--accent)); border-radius:2px; transition:width 0.6s ease; }
  .global-progress .label { white-space:nowrap; font-weight:600; }

  /* === BADGE SIMULATION === */
  .sim-badge {
    display:inline-flex; align-items:center; gap:4px;
    background:rgba(106,27,154,0.1); color:#6a1b9a; border:1px solid rgba(106,27,154,0.2);
    padding:2px 10px; border-radius:10px; font-size:0.68rem; font-weight:600;
    cursor:help;
    animation:simPulse 3s ease-in-out infinite;
  }
  @keyframes simPulse { 0%,100% { opacity:0.8; } 50% { opacity:1; box-shadow:0 0 0 3px rgba(106,27,154,0.06); } }

  /* === KPI GAUGES === */
  .kpi-grid { display:grid; grid-template-columns:1fr 1fr 1fr; gap:10px; margin:12px 0; }
  @media (max-width:700px) { .kpi-grid { grid-template-columns:1fr; } }
  .kpi-card {
    background:#fafafa; border-radius:10px; padding:14px; border:1px solid #eee;
    transition:transform 0.3s ease; text-align:center;
  }
  .kpi-card:hover { transform:translateY(-3px); }
  .kpi-card h4 { font-size:0.82rem; margin-bottom:6px; }
  .kpi-ring {
    width:80px; height:80px; margin:0 auto 8px;
    border-radius:50%;
    display:flex; align-items:center; justify-content:center;
    font-size:1.3rem; font-weight:700; position:relative;
  }
  .kpi-ring svg { position:absolute; top:0; left:0; transform:rotate(-90deg); }
  .kpi-ring .bg { fill:none; stroke:#e0e0e0; stroke-width:6; }
  .kpi-ring .fg { fill:none; stroke-width:6; stroke-linecap:round; transition:stroke-dashoffset 1.5s cubic-bezier(0.4,0,0.2,1); }
  .kpi-card .sub { font-size:0.72rem; color:var(--text-light); margin-top:4px; }
  .kpi-card .vec-list { font-size:0.72rem; color:var(--text-light); margin-top:6px; line-height:1.5; }

  /* === COMPARATEUR FORFAITS === */
  .forfait-grid { display:grid; grid-template-columns:1fr 1fr 1fr 1fr; gap:8px; margin:12px 0; }
  @media (max-width:700px) { .forfait-grid { grid-template-columns:1fr 1fr; } }
  .forfait-card {
    border-radius:10px; padding:14px; cursor:pointer; transition:all 0.3s ease;
    border:2px solid transparent; text-align:center;
    background:#fafafa;
  }
  .forfait-card:hover { transform:translateY(-4px); box-shadow:0 8px 25px rgba(0,0,0,0.08); }
  .forfait-card.active { border-color:var(--primary); background:#e3f2fd; transform:translateY(-4px); }
  .forfait-card .price { font-size:1.2rem; font-weight:700; margin:6px 0; }
  .forfait-card .desc { font-size:0.72rem; color:var(--text-light); margin-bottom:4px; }
  .forfait-card .recap { display:none; font-size:0.75rem; margin-top:8px; padding-top:8px; border-top:1px solid #ddd; text-align:left; }
  .forfait-card.active .recap { display:block; }
  .forfait-card .recap-item { display:flex; justify-content:space-between; margin-bottom:2px; }
  .forfait-card .recap-item .val { font-weight:600; }

  /* === CONSTATS SIMULÉS === */
  .constats-grid { display:grid; grid-template-columns:1fr 1fr 1fr; gap:10px; margin:12px 0; }
  @media (max-width:700px) { .constats-grid { grid-template-columns:1fr; } }
  .constat-card {
    border-radius:10px; overflow:hidden; border:1px solid #eee;
    transition:transform 0.3s ease; cursor:pointer;
  }
  .constat-card:hover { transform:translateY(-3px); box-shadow:0 8px 25px rgba(0,0,0,0.08); }
  .constat-card .head { padding:10px 14px; display:flex; justify-content:space-between; align-items:center; }
  .constat-card .head .level { font-size:0.65rem; font-weight:600; padding:2px 8px; border-radius:8px; }
  .constat-card .body { padding:0 14px 14px; font-size:0.82rem; }
  .constat-card .body .desc { margin-bottom:6px; }
  .constat-card .align-bar { height:6px; border-radius:3px; background:#e0e0e0; overflow:hidden; margin-top:4px; }
  .constat-card .align-bar .fill { height:100%; border-radius:3px; transition:width 1s ease; }

  /* === GANTT INTERACTIF === */
  .gantt-wrap { margin:12px 0; }
  .gantt-header { display:flex; margin-bottom:4px; padding-left:120px; }
  .gantt-week { flex:1; text-align:center; font-size:0.68rem; font-weight:600; color:var(--text-light); }
  .gantt-row { display:flex; align-items:center; margin-bottom:3px; border-radius:6px; transition:background 0.2s; cursor:pointer; }
  .gantt-row:hover { background:#f5f5f5; }
  .gantt-row .label { width:120px; font-size:0.75rem; font-weight:600; flex-shrink:0; padding:6px 8px; }
  .gantt-row .bar-wrap { flex:1; height:28px; position:relative; }
  .gantt-row .bar {
    position:absolute; height:100%; border-radius:6px;
    display:flex; align-items:center; padding:0 10px;
    font-size:0.65rem; font-weight:600; color:white;
    transition:all 0.3s ease; cursor:pointer;
  }
  .gantt-row .bar:hover { transform:scaleY(1.15); filter:brightness(1.1); }
  .gantt-detail {
    max-height:0; overflow:hidden; transition:max-height 0.4s ease;
    background:#fafafa; border-radius:6px; margin-bottom:3px;
  }
  .gantt-detail.open { max-height:120px; }
  .gantt-detail-inner { padding:8px 12px; font-size:0.78rem; }

  /* === ROI COUNTER === */
  .roi-widget {
    background:linear-gradient(135deg,#e8f5e9,#c8e6c9); border-radius:10px;
    padding:16px; margin:12px 0; border:1px solid #a5d6a7;
    display:flex; align-items:center; gap:16px; flex-wrap:wrap;
  }
  .roi-widget .icon { font-size:2rem; }
  .roi-widget .content { flex:1; }
  .roi-widget .content h4 { font-size:0.85rem; margin-bottom:4px; }
  .roi-widget .content p { font-size:0.78rem; color:#333; margin:0; }
  .roi-counter {
    font-size:1.8rem; font-weight:800; color:var(--success);
    display:flex; align-items:baseline; gap:4px;
  }
  .roi-counter .unit { font-size:0.85rem; font-weight:400; color:var(--text-light); }
  .roi-counter .label-small { font-size:0.72rem; font-weight:400; color:var(--text-light); }

  /* === SCÉNARIOS === */
  .scenario-grid { display:grid; grid-template-columns:1fr 1fr 1fr; gap:8px; margin:12px 0; }
  @media (max-width:700px) { .scenario-grid { grid-template-columns:1fr; } }
  .scenario-card {
    border-radius:10px; padding:14px; cursor:pointer; transition:all 0.4s ease;
    border:2px solid transparent; text-align:center;
  }
  .scenario-card:hover { transform:translateY(-3px); }
  .scenario-card .icon { font-size:1.6rem; margin-bottom:4px; }
  .scenario-card .title { font-size:0.85rem; font-weight:600; margin-bottom:2px; }
  .scenario-card .sub { font-size:0.72rem; color:var(--text-light); }
  .scenario-card.a { background:#e3f2fd; border-color:#bbdefb; }
  .scenario-card.a.active { background:#1565c0; color:white; }
  .scenario-card.a.active .sub { color:rgba(255,255,255,0.7); }
  .scenario-card.b { background:#fff3e0; border-color:#ffcc80; }
  .scenario-card.b.active { background:#e65100; color:white; }
  .scenario-card.b.active .sub { color:rgba(255,255,255,0.7); }
  .scenario-card.c { background:#f3e5f5; border-color:#ce93d8; }
  .scenario-card.c.active { background:#6a1b9a; color:white; }
  .scenario-card.c.active .sub { color:rgba(255,255,255,0.7); }
  .scenario-table { display:none; margin-top:8px; }
  .scenario-table.open { display:table; }
  .scenario-table td { font-size:0.78rem; padding:6px 10px; }
  .scenario-table td:last-child { font-weight:600; text-align:right; }
  .timeline-proj {
    display:flex; gap:2px; margin:8px 0; padding:0;
    list-style:none; overflow:hidden;
  }
  .timeline-proj li {
    flex:1; text-align:center; font-size:0.68rem; padding:6px 4px;
    border-radius:4px; position:relative;
  }
  .timeline-proj li::after {
    content:''; position:absolute; top:50%; right:-2px; width:4px; height:4px;
    background:#ccc; border-radius:50%; transform:translateY(-50%);
  }
  .timeline-proj li:last-child::after { display:none; }

  /* === MACRO-QUESTIONS === */
  .macro-grid {
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(140px,1fr));
    gap:8px;
    margin:10px 0;
  }
  .macro-card {
    background:#fff;
    border:1px solid #e0e0e0;
    border-radius:10px;
    padding:12px;
    cursor:pointer;
    transition:all 0.2s ease;
    text-align:center;
    box-shadow:0 1px 4px rgba(0,0,0,0.04);
  }
  .macro-card:hover { transform:translateY(-3px); box-shadow:0 6px 20px rgba(0,0,0,0.08); border-color:var(--primary-light); }
  .macro-card.active { border-color:var(--primary); background:#e3f2fd; box-shadow:0 4px 16px rgba(13,71,161,0.15); }
  .macro-head { display:flex; align-items:center; justify-content:center; gap:6px; }
  .macro-icon { font-size:1.5rem; }
  .macro-title { font-size:0.9rem; font-weight:700; }
  .macro-sub { font-size:0.72rem; color:var(--text-light); margin-top:2px; }
  .macro-desc { font-size:0.72rem; color:var(--text-light); margin-top:4px; font-style:italic; }
  .macro-detail {
    margin:8px 0 14px;
    padding:12px 40px 12px 16px;
    border-radius:10px;
    background:#f5f5ff;
    border:1px solid #c5cae9;
    font-size:0.85rem;
    line-height:1.7;
    position:relative;
    animation:nodeDetailFade 0.25s ease;
  }
  .macro-detail-close {
    position:absolute; top:6px; right:8px; background:none; border:none; font-size:1rem;
    cursor:pointer; color:#999; padding:2px 6px; border-radius:4px;
  }
  .macro-detail-close:hover { background:#e0e0e0; color:#333; }
  .macro-result {
    margin:8px 0;
    padding:12px 16px;
    border-radius:10px;
    background:#fafafa;
    border:1px solid #eee;
    font-size:0.82rem;
    display:flex;
    align-items:center;
    gap:8px;
    flex-wrap:wrap;
  }
  .macro-result-icon { font-size:1.2rem; }

  /* === AXES FONDATEURS (v2) === */
  .axis-grid {
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(95px,1fr));
    gap:6px;
    margin:10px 0;
  }
  .axis-card-v2 {
    background:#fafafa;
    border:1px solid #e0e0e0;
    border-radius:10px;
    padding:10px 8px;
    text-align:center;
    cursor:pointer;
    transition:all 0.2s ease;
    border-top:3px solid var(--ac, var(--primary-light));
  }
  .axis-card-v2:hover { transform:translateY(-3px); box-shadow:0 6px 20px rgba(0,0,0,0.08); }
  .axis-card-v2.active { background:var(--ac, var(--primary-light)); border-color:var(--ac, var(--primary-light)); color:#fff; }
  .axis-card-v2.active .axis-v2-desc { color:rgba(255,255,255,0.8); }
  .axis-v2-icon { font-size:1.4rem; }
  .axis-v2-title { font-size:0.8rem; font-weight:700; margin-top:4px; }
  .axis-v2-desc { font-size:0.65rem; color:var(--text-light); margin-top:2px; }
  .axis-detail {
    margin:6px 0 14px;
    padding:12px 40px 12px 16px;
    border-radius:10px;
    background:#fafafa;
    border:1px solid #e0e0e0;
    font-size:0.85rem;
    line-height:1.7;
    position:relative;
    animation:nodeDetailFade 0.25s ease;
  }
  .axis-detail-close {
    position:absolute; top:6px; right:8px; background:none; border:none; font-size:1rem;
    cursor:pointer; color:#999; padding:2px 6px; border-radius:4px;
  }
  .axis-detail-close:hover { background:#e0e0e0; color:#333; }

  /* === FLOW DIAGRAM ANIMATION === */
  .flow-node { transition: all 0.3s ease; cursor: pointer; transform-origin: center; }
  .flow-node:hover { transform: scale(1.06); filter: brightness(1.12); stroke-width: 3px; }
  .flow-node rect { transition: filter 0.3s ease; }
  .flow-node:hover rect { filter: url(#shadowDiag); }

  @keyframes pulse-flow {
    0% { opacity: 0.3; }
    50% { opacity: 1; }
    100% { opacity: 0.3; }
  }
  .pulse-line { animation: pulse-flow 1.8s infinite ease-in-out; }

  .footer {
    text-align: center;
    padding: 20px;
    color: var(--text-light);
    font-size: 0.8rem;
    border-top: 1px solid #e0e0e0;
    margin-top: 20px;
  }

  /* === TRAFFIC LIGHT DASHBOARD === */
  .tl-dash { display:flex; flex-direction:column; gap:2px; margin:8px 0; }
  .tl-row, .tl-composite {
    display:flex; align-items:center; gap:8px; padding:6px 10px;
    border-radius:6px; cursor:pointer; transition:background 0.2s ease;
    font-size:0.78rem;
  }
  .tl-row:hover { background:rgba(0,0,0,0.02); }
  body.dark .tl-row:hover { background:rgba(255,255,255,0.03); }
  .tl-composite { border-top:2px solid #e0e0e0; margin-top:4px; padding-top:10px; cursor:default; }
  body.dark .tl-composite { border-color:#555; }
  .tl-dot { width:12px; height:12px; border-radius:50%; flex-shrink:0; transition:transform 0.2s ease; }
  .tl-dot.green { background:#43a047; }
  .tl-dot.orange { background:#ffa726; }
  .tl-dot.red { background:#ef5350; }
  .tl-crit { width:140px; flex-shrink:0; font-weight:600; }
  .tl-bar-wrap { flex:1; height:10px; background:#eee; border-radius:5px; overflow:hidden; }
  body.dark .tl-bar-wrap { background:#444; }
  .tl-bar { height:100%; border-radius:5px; transition:width 0.5s ease; }
  .tl-score { font-size:0.75rem; font-weight:700; min-width:40px; text-align:right; }
  .tl-score.green { color:#2e7d32; }
  .tl-score.orange { color:#e65100; }
  .tl-score.red { color:#c62828; }
  .tl-dash-detail {
    max-height:0; overflow:hidden; transition:max-height 0.35s ease;
    margin:0 12px; border-radius:6px; background:#f5f5f5;
  }
  body.dark .tl-dash-detail { background:#22224a; }
  .tl-dash-detail.open { max-height:200px; }
  .tl-dash-detail-inner { padding:8px 12px; font-size:0.78rem; }

  /* === STANDARDS TREE (slide 4) === */
  .std-tree { margin:8px 0; }
  .std-node {
    border:1px solid #e0e0e0;
    border-radius:10px;
    margin-bottom:6px;
    background:#fff;
    overflow:hidden;
    transition:box-shadow 0.2s;
  }
  .std-node:hover { box-shadow:0 2px 12px rgba(0,0,0,0.06); }
  .std-node-header {
    display:flex;
    align-items:center;
    gap:8px;
    padding:10px 14px;
    cursor:pointer;
    user-select:none;
    border-left:4px solid var(--ac, var(--primary-light));
    transition:background 0.15s;
  }
  .std-node-header:hover { background:#fafafa; }
  .std-node.open .std-node-header { background:#f5f5f5; }
  .std-arrow {
    font-size:0.6rem;
    transition:transform 0.25s cubic-bezier(0.4,0,0.2,1);
    color:#999;
    flex-shrink:0;
    width:14px;
    text-align:center;
  }
  .std-node.open > .std-node-header .std-arrow { transform:rotate(90deg); }
  .std-node-icon { font-size:1.1rem; flex-shrink:0; }
  .std-node-name { font-size:0.82rem; font-weight:600; }
  .std-node-tag {
    font-size:0.65rem;
    color:var(--text-light);
    margin-left:auto;
    background:#f0f0f0;
    padding:2px 8px;
    border-radius:10px;
  }
  .std-node-body {
    max-height:0;
    overflow:hidden;
    transition:max-height 0.4s cubic-bezier(0.4,0,0.2,1);
  }
  .std-node.open > .std-node-body { max-height:2000px; }
  .std-node-inner {
    padding:4px 14px 12px 36px;
    font-size:0.82rem;
    line-height:1.7;
  }

  /* Sub-branches (tree leaves) */
  .std-leaf {
    border-left:2px solid #e0e0e0;
    margin:4px 0 4px 10px;
    padding-left:10px;
  }
  .std-leaf-header {
    display:flex;
    align-items:center;
    gap:6px;
    padding:5px 8px;
    cursor:pointer;
    border-radius:6px;
    transition:background 0.15s;
    font-size:0.8rem;
    font-weight:600;
  }
  .std-leaf-header:hover { background:#f5f5f5; }
  .std-leaf-arrow {
    font-size:0.55rem;
    transition:transform 0.25s cubic-bezier(0.4,0,0.2,1);
    color:#aaa;
    width:12px;
    text-align:center;
    flex-shrink:0;
  }
  .std-leaf.open > .std-leaf-header .std-leaf-arrow { transform:rotate(90deg); }
  .std-leaf-body {
    max-height:0;
    overflow:hidden;
    transition:max-height 0.35s cubic-bezier(0.4,0,0.2,1);
  }
  .std-leaf.open > .std-leaf-body { max-height:2000px; }
  .std-leaf-inner {
    padding:6px 8px 8px 20px;
    font-size:0.78rem;
    line-height:1.7;
    color:var(--text-light);
  }

  /* Sub-sub branches (risks deep-dive) */
  .std-subleaf {
    margin:4px 0 4px 8px;
    padding:6px 8px 6px 12px;
    border-radius:6px;
  }
  .std-subleaf.historical {
    background:#fff8e1;
    border:1px solid #ffcc80;
  }
  .std-subleaf.historical .std-subleaf-title { color:#e65100; }
  .std-subleaf-title { font-weight:600; font-size:0.78rem; }
  .std-subleaf-text { font-size:0.75rem; color:#555; margin-top:2px; }
  .std-subleaf-fine {
    display:inline-block;
    background:#c62828;
    color:#fff;
    padding:1px 6px;
    border-radius:4px;
    font-size:0.65rem;
    font-weight:700;
    margin-top:2px;
  }

  /* === SVG ENHANCEMENTS === */

  /* animate-draw for pentagon polygons */
  .animate-draw {
    stroke-dasharray:800;
    stroke-dashoffset:800;
    animation:drawPoly 1.8s ease-out forwards;
  }
  @keyframes drawPoly {
    0% { stroke-dashoffset:800; fill-opacity:0; }
    60% { stroke-dashoffset:0; fill-opacity:0.05; }
    100% { stroke-dashoffset:0; fill-opacity:0.25; }
  }

  /* Pentagon vertex dots */
  .vertex-dot {
    fill:#fff;
    stroke-width:1.5;
    cursor:pointer;
    transition:all 0.3s ease;
  }
  .vertex-dot:hover {
    r:6;
    stroke-width:2.5;
    filter:drop-shadow(0 0 4px currentColor);
  }

  /* KPI ring hover glow */
  .kpi-ring:hover .fg {
    filter:drop-shadow(0 0 6px currentColor);
  }
  .kpi-ring .fg {
    transition:stroke-dashoffset 1.5s cubic-bezier(0.4,0,0.2,1), filter 0.3s ease;
  }

  /* Dependency chain: line hover glow */
  .dep-line {
    transition:stroke 0.3s ease, stroke-width 0.3s ease;
  }
  .dep-line:hover {
    stroke:var(--primary) !important;
    stroke-width:2.5;
  }

  /* Dependency box hover */
  .dep-box {
    transition:transform 0.3s ease, filter 0.3s ease, stroke-width 0.3s ease;
    cursor:pointer;
  }
  .dep-box:hover rect,
  .dep-box:focus-visible rect {
    transform:translateY(-3px);
    stroke-width:2.5;
  }

  /* Phase flow hover (Slide 6) */
  .phase-box {
    transition:transform 0.3s ease, filter 0.3s ease;
    cursor:pointer;
  }
  .phase-box:hover,
  .phase-box:focus-visible {
    transform:translateY(-3px) scale(1.03);
  }
  .phase-box:hover rect,
  .phase-box:focus-visible rect {
    stroke-width:2.5;
  }
  .phase-icon {
    transition:transform 0.3s ease;
  }
  .phase-box:hover .phase-icon {
    transform:scale(1.2);
  }
  .phase-label {
    transition:fill 0.3s ease;
  }
  .phase-box:hover .phase-label {
    fill:var(--primary) !important;
  }

  /* Connecting arrow animation */
  .flow-arrow {
    stroke:#bbb;
    stroke-width:2;
    transition:stroke 0.3s ease;
  }
  .flow-arrow-head {
    fill:#bbb;
    transition:fill 0.3s ease;
  }
  .flow-arrow.animated {
    stroke-dasharray:8,6;
    animation:arrowFlow 1.2s infinite linear;
  }
  @keyframes arrowFlow {
    0% { stroke-dashoffset:14; }
    100% { stroke-dashoffset:0; }
  }

  /* Timeline SVG hover */
  .tl-svg-box {
    transition:transform 0.3s ease, filter 0.3s ease;
    cursor:pointer;
  }
  .tl-svg-box:hover,
  .tl-svg-box:focus-visible {
    transform:translateY(-2px) scale(1.04);
  }
  .tl-svg-box:hover rect,
  .tl-svg-box:focus-visible rect {
    stroke-width:2.5;
  }
  .tl-svg-label {
    transition:fill 0.3s ease;
  }
  .tl-svg-box:hover .tl-svg-label {
    fill:var(--primary) !important;
  }

  /* Gauge enhancements */
  .gauge-tick {
    stroke:#999;
    stroke-width:1;
    opacity:0.5;
  }
  .gauge-tick-label {
    font-size:6px;
    fill:var(--text-light);
    text-anchor:middle;
  }
  .gauge-zone-label {
    font-size:6px;
    fill:var(--text-light);
    text-anchor:middle;
    font-weight:500;
  }
  .gauge-needle {
    transform-origin:110px 110px;
    transition:transform 1.8s cubic-bezier(0.25,0.46,0.45,0.94);
  }

  /* SVG risk badges */
  .risk-badge-svg {
    transition:all 0.3s ease;
    cursor:pointer;
  }
  .risk-badge-svg:hover {
    filter:brightness(1.2) drop-shadow(0 0 4px rgba(198,40,40,0.4));
  }

  /* Flow diagram node detail: text hover */
  .flow-node text {
    transition:fill 0.3s ease;
  }
  .flow-node:hover text {
    fill:var(--text) !important;
  }

  /* SVG tooltip style for data circles */
  .data-circle {
    transition:all 0.3s ease;
  }
  .data-circle:hover {
    filter:drop-shadow(0 0 6px currentColor);
  }
}
@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after { animation-duration:0.01ms !important; animation-iteration-count:1 !important; transition-duration:0.01ms !important; }
}
