Top-of-app banner shown when the Flask backend stops answering /ping. Visual only — polling lives in useBackendStatus, which the App shell owns so it can branch its grid template (28-px row above the titlebar).
/ping
useBackendStatus
Layout: pulsing amber dot · "Backend unreachable" headline · mono "retrying… (N/10)" meta · spacer · "Retry now" button · "✕" close.
The banner element.
Top-of-app banner shown when the Flask backend stops answering
/ping. Visual only — polling lives inuseBackendStatus, which the App shell owns so it can branch its grid template (28-px row above the titlebar).Layout: pulsing amber dot · "Backend unreachable" headline · mono "retrying… (N/10)" meta · spacer · "Retry now" button · "✕" close.