/* * Reifen Späth – App Interop styles * Reconnect overlay + idle-lock overlay. * Uses global design tokens from app.css. */ /* ============================================= Blazor reconnect overlay (replaces default) The framework toggles styles on: #components-reconnect-modal via classes: components-reconnect-show / hide / failed / rejected ============================================= */ #components-reconnect-modal { display: none; position: fixed; inset: 0; z-index: 2147483000; align-items: center; justify-content: center; padding: var(--space-4, 1rem); background: rgba(0, 0, 0, 0.78); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); font-family: var(--font-family-base, sans-serif); color: var(--text-primary, #fff); } #components-reconnect-modal.components-reconnect-show, #components-reconnect-modal.components-reconnect-failed, #components-reconnect-modal.components-reconnect-rejected { display: flex; } #components-reconnect-modal .reconnect-dialog { background: var(--surface-primary, rgba(28, 28, 30, 0.95)); border: 0.5px solid var(--border-default, rgba(255, 255, 255, 0.1)); border-radius: var(--radius-xl, 20px); box-shadow: var(--shadow-xl, 0 20px 40px rgba(0, 0, 0, 0.5)); padding: var(--space-6, 1.5rem); width: 100%; max-width: 420px; text-align: center; } #components-reconnect-modal .reconnect-icon { width: 56px; height: 56px; margin: 0 auto var(--space-4, 1rem); display: flex; align-items: center; justify-content: center; border-radius: 50%; background: rgba(220, 38, 38, 0.15); color: var(--color-primary-light, #ef4444); } #components-reconnect-modal .reconnect-icon svg { animation: reconnect-spin 1.4s linear infinite; } @keyframes reconnect-spin { to { transform: rotate(360deg); } } #components-reconnect-modal h2 { margin: 0 0 var(--space-2, 0.5rem); font-size: var(--text-xl, 1.25rem); font-family: var(--font-family-base, sans-serif); font-weight: var(--font-weight-semibold, 600); } #components-reconnect-modal p { margin: 0 0 var(--space-5, 1.25rem); color: var(--text-secondary, rgba(255, 255, 255, 0.7)); font-size: var(--text-sm, 0.875rem); line-height: var(--line-height-relaxed, 1.6); } #components-reconnect-modal .reconnect-actions { display: flex; flex-direction: column; gap: var(--space-3, 0.75rem); } #components-reconnect-modal .reconnect-text-show, #components-reconnect-modal .reconnect-text-failed, #components-reconnect-modal .reconnect-text-rejected, #components-reconnect-modal .reconnect-actions-failed { display: none; } #components-reconnect-modal.components-reconnect-show .reconnect-text-show { display: block; } #components-reconnect-modal.components-reconnect-failed .reconnect-text-failed, #components-reconnect-modal.components-reconnect-failed .reconnect-actions-failed { display: block; } #components-reconnect-modal.components-reconnect-failed .reconnect-actions-failed { display: flex; flex-direction: column; gap: var(--space-3, 0.75rem); } #components-reconnect-modal.components-reconnect-rejected .reconnect-text-rejected, #components-reconnect-modal.components-reconnect-rejected .reconnect-actions-failed { display: block; } #components-reconnect-modal.components-reconnect-rejected .reconnect-actions-failed { display: flex; flex-direction: column; gap: var(--space-3, 0.75rem); } /* Hide default retry countdown */ #components-reconnect-modal .components-reconnect-current-attempt, #components-reconnect-modal .components-reconnect-max-retries { color: var(--text-tertiary, rgba(255, 255, 255, 0.5)); font-size: var(--text-xs, 0.75rem); } #components-reconnect-modal button { min-height: var(--touch-target, 44px); padding: var(--space-3, 0.75rem) var(--space-5, 1.25rem); border-radius: var(--radius-md, 10px); border: none; font-family: var(--font-family-base, sans-serif); font-size: var(--text-sm, 0.875rem); font-weight: var(--font-weight-semibold, 600); cursor: pointer; transition: all var(--duration-fast, 150ms) var(--ease-out, ease); } #components-reconnect-modal .reconnect-retry { background: linear-gradient(180deg, var(--color-primary-light, #ef4444) 0%, var(--color-primary, #dc2626) 100%); color: var(--text-primary, #fff); box-shadow: var(--shadow-btn-primary, 0 4px 12px rgba(220, 38, 38, 0.3)); } #components-reconnect-modal .reconnect-reload { background: rgba(255, 255, 255, 0.08); color: var(--text-primary, #fff); border: 0.5px solid var(--border-default, rgba(255, 255, 255, 0.1)); } #components-reconnect-modal button:hover:not(:disabled) { transform: translateY(-1px); } /* ============================================= Idle lock overlay ============================================= */ #app-idle-overlay { display: none; position: fixed; inset: 0; z-index: 2147482000; align-items: center; justify-content: center; padding: var(--space-4, 1rem); background: rgba(0, 0, 0, 0.82); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); font-family: var(--font-family-base, sans-serif); color: var(--text-primary, #fff); animation: fadeIn var(--duration-normal, 250ms) var(--ease-out, ease); } #app-idle-overlay.visible { display: flex; } #app-idle-overlay .app-idle-dialog { background: var(--surface-primary, rgba(28, 28, 30, 0.95)); border: 0.5px solid var(--border-default, rgba(255, 255, 255, 0.1)); border-radius: var(--radius-xl, 20px); box-shadow: var(--shadow-xl, 0 20px 40px rgba(0, 0, 0, 0.5)); padding: var(--space-6, 1.5rem); width: 100%; max-width: 420px; text-align: center; } #app-idle-overlay .app-idle-icon { width: 64px; height: 64px; margin: 0 auto var(--space-4, 1rem); display: flex; align-items: center; justify-content: center; border-radius: 50%; background: rgba(251, 191, 36, 0.15); color: var(--color-warning, #fbbf24); } #app-idle-overlay h2 { margin: 0 0 var(--space-2, 0.5rem); font-size: var(--text-xl, 1.25rem); font-weight: var(--font-weight-semibold, 600); } #app-idle-overlay p { margin: 0 0 var(--space-5, 1.25rem); color: var(--text-secondary, rgba(255, 255, 255, 0.7)); font-size: var(--text-sm, 0.875rem); line-height: var(--line-height-relaxed, 1.6); } #app-idle-overlay .app-idle-resume { min-height: var(--touch-target, 44px); width: 100%; padding: var(--space-3, 0.75rem) var(--space-5, 1.25rem); border-radius: var(--radius-md, 10px); border: none; background: linear-gradient(180deg, var(--color-primary-light, #ef4444) 0%, var(--color-primary, #dc2626) 100%); color: var(--text-primary, #fff); font-family: var(--font-family-base, sans-serif); font-size: var(--text-base, 1rem); font-weight: var(--font-weight-semibold, 600); cursor: pointer; box-shadow: var(--shadow-btn-primary, 0 4px 12px rgba(220, 38, 38, 0.3)); transition: transform var(--duration-fast, 150ms) var(--ease-out, ease); } #app-idle-overlay .app-idle-resume:hover { transform: translateY(-1px); } #app-idle-overlay .app-idle-resume:focus-visible { outline: 3px solid rgba(220, 38, 38, 0.5); outline-offset: 2px; }