
        /* Basic body styling */
        body { font-family: 'Inter', sans-serif; background-color: #f3f4f6; }
        /* SankeyChart styles */
        .sankey-container { display: flex; justify-content: center; align-items: center; min-height: 300px; }
        .sankey-chart { display: block; margin: 0 auto; }
        .node rect { /* D3 controlled */ }
        .node text { pointer-events: none; /* D3 controlled */ }
        .link { fill: none; /* D3 controlled */ }
        .link:hover { stroke-opacity: 0.8 !important; }

        /* DataEditor styles */
        .editor-section { background-color: #ffffff; padding: 1rem; border-radius: 0.375rem; box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); margin-bottom: 1rem; border: 1px solid #e5e7eb; }
        .editor-section h3 { font-size: 1.125rem; font-weight: 600; color: #374151; margin-bottom: 0.75rem; border-bottom: 1px solid #e5e7eb; padding-bottom: 0.5rem; }
        .editor-list { max-height: 200px; overflow-y: auto; border: 1px solid #e5e7eb; border-radius: 0.25rem; margin-bottom: 0.75rem; }
        .editor-list-item { display: flex; justify-content: space-between; align-items: center; padding: 0.5rem 0.75rem; border-bottom: 1px solid #f3f4f6; font-size: 0.875rem; gap: 0.5rem; flex-wrap: wrap; }
        .editor-list-item:last-child { border-bottom: none; }
        .editor-list-item .link-info { color: #4b5563; flex-grow: 1; display: flex; align-items: center; gap: 0.5rem; flex-wrap: nowrap; }
        .editor-list-item code { background-color: #f3f4f6; padding: 0.1rem 0.3rem; border-radius: 0.25rem; font-family: monospace; font-size: 0.8rem; white-space: nowrap; }
        .editor-list-item .link-value-input { width: 80px; padding: 0.25rem 0.5rem; border: 1px solid #d1d5db; border-radius: 0.25rem; font-size: 0.875rem; text-align: right; margin-left: auto; }
        .editor-list-item .link-value-input:focus { outline: 1px solid #3b82f6; }
        .editor-list-item .link-value-input.invalid { border-color: #ef4444; /* red-500 */ box-shadow: 0 0 0 1px #ef4444; } /* Add red border for invalid */

        .editor-form { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: flex-end; }
        .editor-form label { display: block; font-size: 0.75rem; font-weight: 500; color: #6b7280; margin-bottom: 0.25rem; }
        .editor-form input, .editor-form select { width: 100%; padding: 0.5rem; border: 1px solid #d1d5db; border-radius: 0.375rem; font-size: 0.875rem; box-shadow: inset 0 1px 2px rgba(0,0,0,0.05); }
        .editor-form input:focus, .editor-form select:focus { outline: 2px solid transparent; outline-offset: 2px; border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.4); }
        .editor-form .input-node-id { flex: 1 1 150px; }
        .editor-form .input-node-type { flex: 1 1 100px; }
        .editor-form .input-link-source { flex: 1 1 120px; }
        .editor-form .input-link-target { flex: 1 1 120px; }
        .editor-form .input-link-value { flex: 1 1 80px; }
        .editor-form button { padding: 0.5rem 0.75rem; font-size: 0.875rem; font-weight: 500; border-radius: 0.375rem; cursor: pointer; transition: background-color 0.2s ease-in-out; white-space: nowrap; }

        .delete-button { padding: 0.25rem 0.5rem; font-size: 0.75rem; background-color: #fee2e2; color: #b91c1c; border-radius: 0.25rem; border: 1px solid #fecaca; cursor: pointer; transition: background-color 0.2s ease-in-out; }
        .delete-button:hover { background-color: #fecaca; }
        .add-button { background-color: #6366f1; color: white; }
        .add-button:hover { background-color: #4f46e5; }
        .add-button:disabled { opacity: 0.5; cursor: not-allowed; }