import numpy as np
import matplotlib.pyplot as plt
from scipy.linalg import expm
import io as _io, base64 as _b64
from IPython.display import HTML as _HTML, display as _ipy_display
from mpl_toolkits.mplot3d import Axes3D
from scipy.linalg import inv, det

np.random.seed(42)
plt.rcParams['figure.figsize'] = (10, 4)

def show_with_alt(fig, alt_text):
    """Save figure as base64 PNG and display with descriptive alt text."""
    buf = _io.BytesIO()
    fig.savefig(buf, format='png', bbox_inches='tight', dpi=100)
    buf.seek(0)
    b64 = _b64.b64encode(buf.read()).decode()
    safe_alt = alt_text.replace('"', '&quot;')
    _ipy_display(_HTML(
        f'<figure><img src="data:image/png;base64,{b64}" '
        f'alt="{safe_alt}" style="max-width:100%;"/></figure>'
    ))
    plt.close(fig)