Files
hydra/src/renderer/src/components/fullscreen-image-modal/fullscreen-image-modal.scss
2025-10-20 01:50:30 +03:00

119 lines
2.0 KiB
SCSS

.fullscreen-image-modal {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.9);
z-index: 9999;
display: flex;
align-items: center;
justify-content: center;
animation: fadeIn 0.2s ease-out;
cursor: pointer;
&__backdrop {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: transparent;
border: none;
padding: 0;
cursor: pointer;
}
&__container {
position: relative;
max-width: 95vw;
max-height: 95vh;
display: flex;
align-items: center;
justify-content: center;
cursor: default;
}
&__close-button {
position: absolute;
top: -50px;
right: 0;
background: rgba(255, 255, 255, 0.1);
border: none;
border-radius: 50%;
width: 40px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
color: white;
transition: background-color 0.2s ease;
z-index: 10000;
&:hover {
background: rgba(255, 255, 255, 0.2);
}
&:focus {
outline: 2px solid var(--color-primary);
outline-offset: 2px;
}
}
&__image-container {
display: flex;
align-items: center;
justify-content: center;
max-width: 100%;
max-height: 100%;
}
&__image {
max-width: 100%;
max-height: 100%;
object-fit: contain;
border-radius: 8px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
animation: scaleIn 0.2s ease-out;
}
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes scaleIn {
from {
transform: scale(0.9);
opacity: 0;
}
to {
transform: scale(1);
opacity: 1;
}
}
// Mobile responsiveness
@media (max-width: 768px) {
.fullscreen-image-modal {
&__close-button {
top: 20px;
right: 20px;
width: 36px;
height: 36px;
}
&__container {
max-width: 100vw;
max-height: 100vh;
padding: 60px 20px 20px;
}
}
}