/* ========================================================================== Midrand Books — Disconnect Overlay (Media Player Aesthetic) ========================================================================== */ /* --- Native Dialog Element Layout Overrides --- */ #components-reconnect-modal { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; max-width: 100vw; max-height: 100vh; margin: 0; padding: 0; border: none; background: transparent; z-index: 99999; overflow: hidden; /* Center the content */ display: flex; align-items: center; justify-content: center; /* Blazor handles visibility, but we handle the fade */ opacity: 0; pointer-events: none; transition: opacity 0.3s ease-in-out; } #components-reconnect-modal::backdrop { background: transparent; } /* Show the modal smoothly when Blazor attaches state classes */ #components-reconnect-modal.components-reconnect-show, #components-reconnect-modal.components-reconnect-failed, #components-reconnect-modal.components-reconnect-rejected { opacity: 1; pointer-events: all; } #components-reconnect-modal.components-reconnect-hide { display: none !important; } /* --- Dark Frosted Jacket Layer --- */ .glassine-page-jacket { position: absolute; inset: 0; background-color: rgba(10, 25, 47, 0.4); /* Deep navy tint */ backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); cursor: wait; z-index: 1; } /* --- Centered Content Wrapper --- */ .reconnect-content { position: relative; z-index: 2; display: flex; flex-direction: column; align-items: center; gap: 1.5rem; color: #f8f9fa; text-align: center; } /* --- SVG Waveform Animation --- */ .waveform-svg { shape-rendering: geometricPrecision; color: #f8f9fa; } .bar { transform-origin: center; animation: wavePulse 1.2s ease-in-out infinite alternate; } .bar-1 { animation-delay: 0.0s; } .bar-2 { animation-delay: 0.3s; } .bar-3 { animation-delay: 0.6s; } .bar-4 { animation-delay: 0.2s; } .bar-5 { animation-delay: 0.5s; } @keyframes wavePulse { 0% { transform: scaleY(0.3); opacity: 0.5; } 100% { transform: scaleY(1); opacity: 1; } } /* Stop the waveform if the connection completely fails */ #components-reconnect-modal.components-reconnect-failed .bar, #components-reconnect-modal.components-reconnect-rejected .bar, #components-reconnect-modal.components-reconnect-paused .bar { animation: none; transform: scaleY(0.1); opacity: 0.3; } /* --- Typography --- */ .small-tracking { font-size: 0.85rem; letter-spacing: 0.15em; font-weight: 500; color: rgba(255, 255, 255, 0.7); } .text-crimson { color: #ff6b6b; /* Softened red for dark mode */ font-weight: 600; } /* --- Glass Buttons --- */ .sync-action-node { margin-top: 1rem; display: flex; gap: 1rem; } .btn-glass-action { background: rgba(255, 255, 255, 0.05); color: #f8f9fa; border: 1px solid rgba(255, 255, 255, 0.1); padding: 0.6rem 1.5rem; font-family: var(--bs-font-monospace); font-size: 0.75rem; letter-spacing: 0.1em; text-transform: uppercase; border-radius: 8px; cursor: pointer; display: inline-flex; align-items: center; gap: 0.5rem; transition: all 0.2s ease; } .btn-glass-action:hover { background: rgba(255, 255, 255, 0.1); border-color: rgba(255, 255, 255, 0.3); transform: translateY(-2px); } /* --- Display Mechanics Matrix Controllers (Preserved) --- */ .components-reconnect-first-attempt-visible, .components-reconnect-repeated-attempt-visible, .components-reconnect-failed-visible, .components-pause-visible, .components-resume-failed-visible { display: none !important; } #components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible, #components-reconnect-modal.components-reconnect-paused .components-pause-visible, #components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible, #components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible, #components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible { display: inline-block !important; } #components-reconnect-modal.components-reconnect-failed .btn-glass-action, #components-reconnect-modal.components-reconnect-paused .btn-glass-action, #components-reconnect-modal.components-reconnect-resume-failed .btn-glass-action { display: inline-flex !important; }