gallery_server_client_s190js/public/css/operationBanner.css
2026-10-26 11:00:14 +01:00

114 lines
2.4 KiB
CSS

.operation-banner {
position: fixed;
z-index: 100000;
bottom: 20px;
top: auto;
left: 50%;
transform: translate(-50%, 12px);
width: min(560px, calc(100vw - 28px));
box-sizing: border-box;
padding: 14px 16px;
color: #fff;
background: rgba(25, 29, 36, .45);
border: 1px solid rgba(255, 255, 255, .14);
border-radius: 14px;
box-shadow: 0 10px 35px rgba(0, 0, 0, .28);
backdrop-filter: blur(14px);
-webkit-backdrop-filter: blur(14px);
opacity: 0;
visibility: hidden;
pointer-events: none;
transition: opacity .22s ease, transform .22s ease, bottom .22s ease;
font: 14px/1.45 system-ui, sans-serif;
}
.operation-banner.is-visible {
opacity: 1;
visibility: visible;
transform: translate(-50%, 0);
pointer-events: auto;
}
.operation-banner .ob-row {
display: flex;
align-items: flex-start;
gap: 11px;
}
.operation-banner .ob-icon {
flex: 0 0 24px;
width: 24px;
text-align: center;
font-size: 19px;
}
.operation-banner .ob-content {
flex: 1;
min-width: 0;
overflow-wrap: anywhere;
white-space: pre-line;
}
.operation-banner .ob-close {
border: 0;
padding: 0 2px;
color: #fff;
background: transparent;
font-size: 21px;
cursor: pointer;
}
.operation-banner .ob-progress {
height: 4px;
margin-top: 12px;
overflow: hidden;
border-radius: 99px;
background: rgba(255, 255, 255, .16);
}
.operation-banner .ob-progress-fill {
width: 35%;
height: 100%;
border-radius: inherit;
background: #8ab4f8;
}
.operation-banner .ob-progress-label {
display: none;
margin-top: 9px;
font-size: 12px;
line-height: 1.2;
text-align: right;
font-variant-numeric: tabular-nums;
}
.operation-banner.is-determinate .ob-progress-label {
display: block;
}
.operation-banner.is-determinate .ob-progress-fill {
animation: none !important;
transform: none;
transition: width .3s linear;
}
.operation-banner.is-busy .ob-progress-fill {
animation: operationBannerIndeterminate 1.2s ease-in-out infinite;
}
.operation-banner.is-success .ob-icon { color: #8fe0a5; }
.operation-banner.is-error .ob-icon { color: #ff9999; }
.operation-banner.is-success .ob-progress { display: none; }
@keyframes operationBannerIndeterminate {
from { transform: translateX(-120%); }
to { transform: translateX(330%); }
}
@media (prefers-reduced-motion: reduce) {
.operation-banner,
.operation-banner .ob-progress-fill {
animation: none !important;
transition: none !important;
}
}