Files
ReifenSpaeth/Lagerbestand/wwwroot/css/app-interop.css
T

218 lines
7.2 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* 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;
}