﻿/* --- START OF REVISED style.css --- */

/* Image Wrapper and Loading Spinner */
.img_wrapper{
    position: relative;
    padding-top: 75%; /* Aspect ratio placeholder */
    overflow: hidden;
}

.img_wrapper img{
    position: absolute;
    top: 0;
    width: 100%;
    opacity: 0;

    -webkit-transition: opacity 150ms;
    -moz-transition: opacity 150ms;
    -ms-transition: opacity 150ms;
    transition: opacity 150ms;
}
.img_wrapper.loaded img{
    opacity: 1;
}
.img_wrapper.loaded .css_spinner{
    display: none;
}

/* CSS loading spinner styles */
.css_spinner{
	position: absolute;
	width: 48px;
	height: 48px;
	left: 50%;
	top: 50%;
	margin: -24px 0 0 -24px;
	opacity: .3;

	-webkit-border-radius: 999px;
	-moz-border-radius: 999px;
	border-radius: 999px;
}

.css_spinner .half{
	position: absolute;
	width: 24px;
	height: 48px;
	top: 0;
	overflow: hidden;
}

.css_spinner .left{
	left: 0px;

	-webkit-border-radius: 999px 0 0 999px;
	-moz-border-radius: 999px 0 0 999px;
	border-radius: 999px 0 0 999px;
}

.css_spinner .right{
	left: 24px;

	-webkit-border-radius: 0 999px 999px 0;
	-moz-border-radius: 0 999px 999px 0;
	border-radius: 0 999px 999px 0;
}

.css_spinner .band{
	position: absolute;
	width: 24px;
	height: 48px;
	background: #922d8d;

	-webkit-border-radius: 999px;
	-moz-border-radius: 999px;
	border-radius: 999px;

	-webkit-animation: cssSpinnerRight 1s infinite linear;
	-moz-animation: cssSpinnerRight 1s infinite linear;
    /* Note: Standard 'animation' property is missing, consider adding for broader compatibility */
    /* animation: cssSpinnerRight 1s infinite linear; */
}

.css_spinner .left .band{
	left: 0;
	border-left: 24px solid #fafafa;

	-webkit-animation: cssSpinnerLeft 1s infinite linear;
	-moz-animation: cssSpinnerLeft 1s infinite linear;
    /* Note: Standard 'animation' property is missing */
    /* animation: cssSpinnerLeft 1s infinite linear; */
}

.css_spinner .right .band{
	right: 0;
	border-right: 24px solid #fafafa;
}

@-webkit-keyframes cssSpinnerLeft{
  0%{-webkit-transform:rotate(0deg)}
  25%{-webkit-transform:rotate(0deg)}
  50%{-webkit-transform:rotate(180deg)}
  75%{-webkit-transform:rotate(180deg)}
  100%{-webkit-transform:rotate(360deg)}
}

@-webkit-keyframes cssSpinnerRight{
  0%{-webkit-transform:rotate(0deg)}
  25%{-webkit-transform:rotate(180deg)}
  50%{-webkit-transform:rotate(180deg)}
  75%{-webkit-transform:rotate(360deg)}
  100%{-webkit-transform:rotate(360deg)}
}

@-moz-keyframes cssSpinnerLeft{
  0%{-moz-transform:rotate(0deg)}
  25%{-moz-transform:rotate(0deg)}
  50%{-moz-transform:rotate(180deg)}
  75%{-moz-transform:rotate(180deg)}
  100%{-moz-transform:rotate(360deg)}
}

@-moz-keyframes cssSpinnerRight{
  0%{-moz-transform:rotate(0deg)}
  25%{-moz-transform:rotate(180deg)}
  50%{-moz-transform:rotate(180deg)}
  75%{-moz-transform:rotate(360deg)}
  100%{-moz-transform:rotate(360deg)}
}

/* Note: Standard @keyframes are missing, consider adding */
/*
@keyframes cssSpinnerLeft{ ... }
@keyframes cssSpinnerRight{ ... }
*/


/* Upload Box */
#upload-box {
    cursor: pointer;
	position: relative;
	text-align: center;
	background: #fff;
	/* border: #e5e5e5 1px solid; */ /* Commented out in original */
	height: 150px;
}
#upload-box h2 {
	margin-top: 1%;
}
.file-input {
	position: absolute;
	top:0;
	left:0;
	z-index: 10;
	margin: 0;
	padding: 0;
	width: 100%;
	height: 100%;
	outline: none;
	opacity: 0;
    cursor: pointer;
}
.photo-add {
	display: inline-block;
	border: #e5e5e5 2px dashed;
	border-radius: 6px;
	/*margin-top: 0%;*/ /* Commented out in original */
	padding: 35px;
	transition: all ease 0.5s;
}
#upload-box:hover .photo-add, #upload-box.dragover .photo-add {
	border: #00b0bc 2px dashed;
	transition: none;
}

/* Figures / Image Grid */
.figs {
	position: relative;
}
.figs > div {
	margin-bottom: 30px;
}

/* Custom Checkbox for Figures */
.figs > div > input[type=checkbox] {
	position: absolute;
	cursor: pointer;
	/*width: 2%;*/
	/*height: 2%;*/
	margin: 0;
	padding: 0;
	/*opacity: 0;*/
}

.fig-container {
    display: flex;
    justify-content: center;
}

.figs > div > div.fig {
	border: 1px solid transparent;
	border-radius: 6px;
	padding: 6px;
}
/* Checked state for figure checkbox */
.figs > div > input[type=checkbox]:checked ~ div.fig {
    content: "\2713"; /* Note: content property usually applies to ::before/::after */
	background-color: #d6f3ff;
	border: 1px solid #b3ddff;
	box-shadow: -18px 0 20px -20px #333, 18px 0 20px -20px #333, 0 -10px 10px -20px #333, 0 10px 10px -20px #333;
	/*transform: translate(0, 50%);*/ /* Commented out in original */
}

.no-caption {
	color: #777;
}

.pr{ /* Utility class, likely for position: relative */
	position: relative;
}

/* Loading indicators */
.loading { color: #5b9fce; padding-bottom: 2px; font-size: 15px; line-height:  15px}
.loadingerror { color: #af5f47; font-size: 91%}
.rotate { animation-name: rotate; animation-duration: 1s; animation-iteration-count: infinite; animation-timing-function: linear}
@keyframes rotate { from { transform: rotate(0deg)}to { transform: rotate(360deg)}}

/* Tooltip Styles */
.my-tooltip{width:18px;height:18px;position:relative;z-index:1;display:inline-block}

.tooltip-handle{display:inline-block;width:18px;height:18px;font-family:sans-serif;font-size:12px;line-height:16px;font-weight:700;text-align:center;background:transparent;cursor:pointer;color:#000;-webkit-transition:.4s;transition:.4s;border:1px solid #000;border-radius:50%}
.tooltip-handle:hover{background:#000;color:white}

.tooltip-text{display:none;width:500px;padding:15px 30px 15px 15px;background:rgba(0,0,0,.77);color:#fff;font-size:15px;line-height:22px;text-align:left;font-family:sans-serif;position:absolute;/*right:-18px;bottom:calc(100% + 15px)*/} /* Original positioning commented out */

.tooltip-text-close{width:22px;height:22px;position:absolute;right:10px;top:10px;z-index:1;cursor:pointer}
.tooltip-text-close:after,.tooltip-text-close:before{content:'';display:block;width:22px;height:2px;background:#fff;position:absolute;left:0;top:0;right:0;bottom:0;margin:auto;-webkit-transform-origin:center center;transform-origin:center center}
.tooltip-text-close:before{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}
.tooltip-text-close:after{-webkit-transform:rotate(45deg);transform:rotate(45deg)}
.tooltip-text-close:hover:after,.tooltip-text-close:hover:before{background:#1dabe1}

.tooltip-text ul{list-style:none}
.tooltip-text ul li{margin:0 0 10px;position:relative}
.tooltip-text ul li:last-child{margin:0}

.tooltip-title{font-size:15px;line-height:16px}
.my-tooltip.active .tooltip-text{display:block}

.fig .my-tooltip{width:18px;height:18px;line-height:16px;border-radius:50%;z-index:21}
.fig .tooltip-text{top:auto;bottom:auto} /* Overrides default tooltip position */


/* Tags display */
.tags {margin: 5px 0 0 0; } /* Corrected margin syntax */

/* Comments Section */
.comment {
	width: 800px;
	border: #e5e5e5 1px solid;
}
.comment-user {
	font-weight: bold;
}
.comment-date {
    font-family: Georgia, 'Times New Roman', Times, serif;
}

.new_comment {
	height: 160px;
	width: 600px;
}

/* Single Image Page Style */
.img-single-page {
	box-shadow: -18px 0 20px -20px #333, 18px 0 20px -20px #333, 0 -10px 10px -20px #333, 0 10px 10px -20px #333;
    margin: 8px 0 15px 0;
}

/* Normal Link Style */
.normal-link,.normal-link:hover {
	text-decoration: none; color: #000;
	font-family: Georgia, 'Times New Roman', Times, serif;
}

/* Alert Box */
.alert {
	width: 300px;
	position: absolute; /* Consider 'fixed' if it should stay on screen */
	z-index: 1010;
	top: 20px;
	right: 20px;
	margin-left: auto;
}

/* Album Settings Link */
.album-settings {
	font-size: 20px;
	color:black;
}

/* Image Border Utility */
.img-border {
	border:2px solid #808080;
}

/* Album Description */
.album-description {
	/* Original borders commented out */
	/* border-left: 2px solid #e5e5e5;
	border-bottom: 2px dashed #707070;
	border-right: 2px dashed #707070; */
	margin: 5px;
	padding: 5px;
}

/* Modal Styles */
body.modal-opened{width:100%;height:100%;overflow:hidden}
.modal{display:none;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;width:100%;height:100vh;overflow:auto;padding:10px;background:rgba(0,0,0,.3);position:absolute;left:0;top:0;z-index:1002} /* Consider 'fixed' for true modal behavior */
.modal-content{display:block;width:100%;max-width:360px;padding:30px 40px 40px;background:#f0f0f0;position:relative}
.modal h2{font-family:"Uni Neue Book",sans-serif;font-size:27px;line-height:1;text-align:left}
.modal .close{width:25px;height:25px;margin:0;padding:0;background:0 0;border:none;font-size:0;float:none;opacity:1;cursor:pointer;position:absolute;top:10px;right:10px}
.modal .close:hover{opacity:.75}
.modal .close:after,.modal .close:before{content:'';display:block;width:30px;height:2px;background:#a1a1a1;position:absolute;left:-2px;top:0;bottom:0;margin:auto}
.modal .close:before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}
.modal .close:after{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}
.modal label{display:block;margin:0 0 30px}
.modal label input,.modal label textarea{display:block;width:100%;height:50px;padding:0 20px;border:1px solid #a7aeb0;background:#fff;line-height:50px}
.modal label textarea{height:120px;padding:10px 20px;line-height:20px}
/* Original modal button size comments */
/*
.modal .btn{font-size:14px}
@media (min-width:400px){
	.modal .btn{font-size:17px}
}*/

/* Rotation Animation */
.rotate360{animation-name:rotate360; animation-duration:1s; animation-iteration-count:infinite; animation-timing-function:linear;}
@keyframes rotate360{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}

/* Text Break Utility */
.text-break {
	word-break: break-all;
}

/* Loading GIF background */
.loading_gif {
	background-image: url(/static/loading.gif);
	background-repeat: no-repeat;
	background-position: center;
	background-color: #F8F9FB;
}

/* Box Shadow Utility */
.box-shadow2 {
  width: 80%;
  max-width: 550px;
  margin: 10px auto;
  padding: 1em;
  box-shadow: 0 1px 4px rgba(0, 0, 0, .3), -23px 0 20px -23px rgba(0, 0, 0, .8), 23px 0 20px -23px rgba(0, 0, 0, .8), 0 0 40px rgba(0, 0, 0, .1) inset;
}

/* Norm Link Hover */
.norm_link:hover {
    color: #0066ff;
    text-decoration: none;
}

/* Small Text Utility */
.small_text {
    font-family: Lucida Console;
    font-size: small;
}

/* Text Alignment Utilities */
.text-right {
    text-align: right;
}

.float-right {
    float: right;
}

/* Base Anchor Style */
a {
    text-decoration: none;
}

/* Dropdown Menu */
/* Final combined/overridden styles for .dropdown-menu */
.dropdown-menu {
    max-height: 400px;
    overflow-y: auto;
    margin-top: 0.125rem; /* From later rule */
    /* position: absolute; z-index: 1050; */ /* Added later specifically for .panel-container context */
}


/* Message Box */
.message-container {
    width: 100%;
    text-align: center;
    position: relative;
    padding: 10px;
}

.message-box {
    font-size: 25px;
    color: #333;
}

/* Progress Bar */
.progress-container {
    width: 100%;
    height: 20px;
    background-color: #ccc;
    position: relative;
    margin-top: 10px;
}

.progress-bar {
    height: 100%;
    background-color: #4CAF50; /* Зеленый цвет для прогресса */
    width: 0; /* Начальная ширина прогресс-бара */
}

/* Actions Bar (potentially unused or specific context) */
.actions {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  width: 600px; /* Fixed width, might be undesirable */
  height: 200px;
  background: white;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px;
  z-index: 999;
}


/* --- Selection Panel Styles --- */

/* Base Panel Style (Final Version after overrides) */
#panel {
    position: fixed; /* Final position */
    top: 0;
    left: 0;
    right: 0;
    z-index: 1000; /* Final z-index */
    background-color: var(--light-bg); /* Base background, overridden by dark theme */
    padding: 10px 0; /* Final padding */
    box-shadow: 0 2px 5px rgba(0,0,0,0.1); /* Base shadow */
    max-height: 150px; /* Final max-height */
    /* overflow-y: auto; Final overflow */
    border-bottom: 1px solid var(--light-border); /* Base border */
    /* text-align: center; */ /* This was added late, but might conflict with flex layout below */
    /* display: flex; */ /* This was added late */
    /* justify-content: center; */ /* This was added late */
    /* overflow: visible !important; */ /* This was overridden by overflow-y: auto */
    /* border: 1px solid #419fd9; */ /* Overridden */
    /* width: 100%; height: 100%; left: 0; right: 0; top: 0; bottom: 0; */ /* Overridden by fixed positioning */
    /* box-sizing: border-box; max-width: 100%; */ /* Implicit with fixed L/R 0 */
}

/* Add padding to body when panel is shown */
.panel-shown body {
  padding-top: 80px; /* Final padding value */
}

/* Panel Dark Theme */
#panel.dark-theme { /* Specific to panel element */
  background-color: var(--dark-bg);
  color: var(--dark-text);
  border-color: var(--dark-border);
  box-shadow: 0 2px 5px rgba(0,0,0,0.3); /* Dark theme shadow override */
}

/* General Dark Theme Button Styles */
.dark-theme .btn-dark,
.dark-theme .btn-outline-secondary {
  color: var(--dark-text);
  background-color: var(--dark-card);
  border-color: var(--dark-border);
}

.dark-theme .btn-outline-danger {
  color: #ff6b6b;
  border-color: #ff6b6b;
}

/* Dark Theme Dropdown */
.dark-theme .dropdown-menu {
  background-color: var(--dark-card);
  border-color: var(--dark-border);
}

.dark-theme .dropdown-item {
  color: var(--dark-text);
}

.dark-theme .dropdown-item:hover {
  background-color: var(--dark-border);
}

/* Panel Layout Container (Final Version) */
.panel-container {
  display: flex;
  width: 100%;
  max-width: 1200px; /* Final max-width */
  margin: 0 auto; /* Center the container */
  flex-wrap: wrap;
  /* justify-content: center; */ /* Removed as it was added very late to #panel directly */
  /* padding: 0; */ /* This was added late, potentially overriding needed padding inside */
  overflow: visible !important; /* Ensure dropdowns aren't clipped by container */
}

/* Panel Columns (Final Version) */
.panel-left {
  flex: 1;
  min-width: 300px;
  padding: 0 10px; /* Final padding */
  /* padding-right: 15px; */ /* Overridden */
  overflow: visible; /* Ensure dropdowns aren't clipped */
}

.panel-right {
  flex: 1;
  min-width: 300px;
  border-left: 1px solid #ccc;
  padding: 0 10px; /* Final padding */
  /* padding-left: 15px; */ /* Overridden */
  overflow: visible; /* Ensure dropdowns aren't clipped */
}

/* Dark Theme Panel Column Divider */
.dark-theme .panel-right {
  border-left-color: #444;
}

/* Panel Tags Area (Final Version) */
.tags-panel {
  width: 100%;
  margin-top: 10px;
  clear: both; /* Keep clear float behavior */
  /* overflow: hidden; */ /* Potentially problematic for dropdowns, removed */
  max-width: 100%;
  box-sizing: border-box;
  padding: 0 5px; /* Final padding */
}

/* Selected Files Tags Container (Final Version) */
#selected-files-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  max-width: 100%; /* Ensure it fits */
  overflow-y: auto; /* Allow vertical scroll if needed */
  max-height: 50px; /* Final max-height */
}

/* Individual Tag Badge (Final Version) */
#selected-files-tags .badge {
  display: inline-flex;
  align-items: center;
  padding: 3px 6px; /* Final padding */
  background-color: #f8f9fa; /* Light theme background */
  border: 1px solid #dee2e6; /* Light theme border */
  margin-bottom: 3px; /* Final margin */
  font-size: 0.8rem; /* Final font size */
  white-space: normal; /* Allow text wrapping */
  flex-shrink: 0; /* Prevent shrinking */
}

/* Dark Theme Tag Badge (Final Version) */
.dark-theme #selected-files-tags .badge {
  background-color: #2c3035;
  border-color: #495057;
  color: #e9ecef !important; /* Ensure readable text */
}

.dark-theme #selected-files-tags .badge b {
  color: #e9ecef !important; /* Ensure readable bold text */
}

/* Tag Badge Link Styles */
#selected-files-tags .badge a {
  display: inline-flex;
  align-items: center;
  margin-left: 5px;
}

/* Dark Theme Tag Badge Link Color */
.dark-theme #selected-files-tags a {
  color: #8bb9fe !important;
}

#selected-files-tags .badge a img {
  transition: transform 0.2s;
}

#selected-files-tags .badge a:hover img {
  transform: scale(1.2);
}

/* Tags Loading Indicator */
#tags-loading {
  font-size: 0.9rem;
  color: #6c757d;
  margin-left: 5px;
}

.dark-theme #tags-loading {
  color: var(--dark-secondary);
}

/* Tags Input Field (Final Version) */
#tags-input {
  min-width: 150px; /* Final min-width */
  flex-grow: 1; /* Allow expansion */
  height: 30px; /* Final height */
  padding: 0.2rem 0.4rem; /* Final padding */
}

/* Input Group Append Styling (If using Bootstrap) */
.input-group-append {
  width: auto !important; /* Prevent excessive width */
}

/* Panel Buttons (Final Version) */
#panel .btn {
  padding: 0.2rem 0.4rem;
  font-size: 0.8rem;
}

/* Ensure dropdown menus in panel container are positioned correctly */
.panel-container .dropdown-menu {
  position: absolute; /* Override default static/relative */
  z-index: 1050; /* Ensure visibility above other panel content */
}

/* Mobile Responsiveness for Panel */
@media (max-width: 768px) {
  .panel-container {
    flex-direction: column;
  }

  .panel-right {
    border-left: none;
    border-top: 1px solid #ccc;
    padding-left: 0; /* Reset padding */
    padding-top: 15px;
    margin-top: 15px;
  }

  .dark-theme .panel-right {
    border-top-color: #444;
  }
}
/* Контейнер изображения с фиксированным соотношением сторон */
.image-container {
  position: relative;
  width: 100%;
  border-radius: 4px;
  overflow: hidden;
  margin-bottom: 10px;
}

/* Skeleton анимация */
.image-skeleton {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
  background-size: 200% 100%;
  animation: skeleton-loading 1.5s infinite;
  border-radius: 4px;
  z-index: 1;
}

.dark-theme .image-skeleton {
  background: linear-gradient(90deg, #2a2a2a 25%, #1a1a1a 50%, #2a2a2a 75%);
  background-size: 200% 100%;
}

@keyframes skeleton-loading {
  0% {
    background-position: 200% 0;
  }
  100% {
    background-position: -200% 0;
  }
}

/* Изображение */
.image-container img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  transition: opacity 0.3s ease;
  z-index: 2;
}

/* Состояние после загрузки */
.image-container.loaded .image-skeleton {
  display: none;
}

.image-container.loaded img {
  opacity: 1;
}

/* Обновляем стили галереи */
.gallery-card {
  background: #fff;
  border-radius: 8px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.1);
  overflow: hidden;
  transition: box-shadow 0.3s, transform 0.3s;
  padding: 10px;
}

.dark-theme .gallery-card {
  background: var(--dark-card);
}

.gallery-item:has(.file-checkbox:checked) .gallery-card {
  box-shadow: 0 0 0 2px var(--light-accent), 0 4px 12px rgba(13, 110, 253, 0.2);
  transform: translateY(-2px);
}

.dark-theme .gallery-item:has(.file-checkbox:checked) .gallery-card {
  box-shadow: 0 0 0 2px var(--dark-accent), 0 4px 12px rgba(77, 132, 255, 0.3);
}

/* Удаляем старые стили для img-fluid, так как теперь используем абсолютное позиционирование */
.gallery-card img.img-fluid {
  /* Эти стили теперь в .image-container img */
}
