186 lines
4.6 KiB
CSS
186 lines
4.6 KiB
CSS
/* ==========================================================================
|
|
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;
|
|
}
|