.vflow { flex: 1; min-height: 0; display: flex; flex-direction: column; padding: 8px 12px 12px; } .vflow-caption { margin: 0 0 8px; text-align: center; font-family: 'Georgia', serif; font-size: 13px; font-style: italic; color: rgba(201, 169, 110, 0.65); flex-shrink: 0; } .vflow-empty { flex: 1; display: flex; align-items: center; justify-content: center; padding: 48px; text-align: center; color: rgba(201, 169, 110, 0.6); font-family: 'Georgia', serif; } .vflow-canvas { position: relative; flex: 1; min-height: 0; width: 100%; border-radius: 8px; background: radial-gradient(ellipse 70% 80% at 50% 0%, rgba(201, 169, 110, 0.07), transparent 70%), rgba(0, 0, 0, 0.25); border: 1px solid rgba(201, 169, 110, 0.12); overflow: hidden; cursor: grab; touch-action: none; } .vflow-canvas.vflow-panning { cursor: grabbing; } .vflow-svg { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 1; } .vflow-stream { stroke-linecap: round; stroke-linejoin: round; opacity: 0.72; cursor: pointer; transition: opacity 0.15s ease, filter 0.15s ease; vector-effect: non-scaling-stroke; } .vflow-stream-highlighted { opacity: 1; filter: brightness(1.15); } .vflow-branch { stroke-linecap: round; stroke-linejoin: round; opacity: 0.95; pointer-events: none; vector-effect: non-scaling-stroke; } .vflow-branch-highlighted { opacity: 1; filter: brightness(1.25) drop-shadow(0 0 4px rgba(255, 230, 180, 0.45)); } .vflow-label { position: absolute; z-index: 4; transform: translate(-50%, 50%); margin: 0; padding: 2px 8px; border: none; border-radius: 4px; background: rgba(12, 12, 22, 0.72); color: rgba(245, 230, 200, 0.95); font-family: 'Georgia', serif; font-size: 12px; white-space: nowrap; cursor: pointer; pointer-events: auto; } .vflow-label:hover { background: rgba(30, 28, 40, 0.9); color: #fff6e0; }