/* Funktionales Basis-CSS für CarConnection.js / CarConnectionMonitor.js / CarForms.js (InfonetzWebLib).
   Nur Sichtbarkeit und Klicksperre, keine Gestaltung. Selektoren stehen in :where() (Spezifität 0),
   damit das Site-CSS (app.css) jede Regel ohne !important überschreiben kann. */

/* Reconnect-Modal: Blazor setzt components-reconnect-* auf #components-reconnect-modal */
:where(#components-reconnect-modal) {
    display: none;
}

:where(#components-reconnect-modal.components-reconnect-show,
       #components-reconnect-modal.components-reconnect-retrying,
       #components-reconnect-modal.components-reconnect-failed,
       #components-reconnect-modal.components-reconnect-rejected) {
    display: block;
    position: fixed;
    inset: 0;
    z-index: 1000;
}

:where(#components-reconnect-modal.components-reconnect-hide) {
    display: none;
}

/* Manueller Reload-Link nur, wenn CarConnection den Circuit als verloren und den Server als erreichbar meldet */
:where(#components-reconnect-modal .reconnect-reload-link) {
    display: none;
}

:where(#components-reconnect-modal.reconnect-reload-available .reconnect-reload-link) {
    display: inline;
}

/* Wird von CarConnectionMonitor.js gesetzt, solange der Circuit der Komponente nicht erreichbar ist.
   Die eigentliche Sperre (Maus, Tastatur, Fokus) erfolgt per inert-Attribut; CSS ist nur Darstellung. */
:where(.is-offline) > * {
    opacity: .6;
    filter: grayscale(.4);
    transition: opacity .2s ease;
}

/* Von CarConnection.js auf <html> gesetzt, solange die Seite gesperrt ist (alle body-Kinder ausser Modal sind inert) */
:where(html.car-connection-offline) body > [inert] {
    cursor: default;
}

/* CarForms.js: Klick wegen nicht verifizierter Verbindung abgewiesen */
:where(.is-connection-blocked) {
    animation: car-connection-shake .35s ease;
    box-shadow: 0 0 0 3px rgba(245, 180, 0, .5);
}

@keyframes car-connection-shake {
    0%, 100% { transform: translateX(0); }
    25% { transform: translateX(-4px); }
    75% { transform: translateX(4px); }
}
