:root {
    --loading-circle-size: 94px;
}
.gap-4em {
    gap: 4em;
}
.gap-025em {
    gap: 0.25em; 
}
.gap-05em {
    gap: 0.5em; 
}
.gap-1em {
    gap: 1em; 
}
.gap-1_5em {
    gap: 1.5em; 
}
.gap-2em {
    gap: 2em; 
}
.gap-xs {
    gap: var(--padding-xs);
}
.gap-12px {
    gap: 12px;
}
.transition {
    transition: all 0.3;
}
/* .pl-1{
    padding-left: 1em !important;
}
.pl-2{
    padding-left: 2em !important;
}
.pl-3{
    padding-left: 3em !important;
}
.pl-4{
    padding-left: 4em !important;
}
.pl-5{
    padding-left: 5em !important;
}
.pl-6{
    padding-left: 6em !important;
}
.pl-7{
    padding-left: 7em !important;
}
.pl-8{
    padding-left: 8em !important;
}
.pl-9{
    padding-left: 9em !important;
}
.pl-10{
    padding-left: 10em !important;
} */

.gap-0 {
    gap: 0em !important;
}
.gap-0-5 {
    gap: 0.5em !important;
}
.gap-1 {
    gap: 1em !important;
}
.gap-2 {
    gap: 2em !important;
}
.gap-3 {
    gap: 3em !important;
}
.gap-4 {
    gap: 4em !important;
}
.gap-5 {
    gap: 5em !important;
}
.gap-6 {
    gap: 6em !important;
}
.gap-7 {
    gap: 7em !important;
}
.gap-8em {
    gap: 8em !important;
}
.gap-9 {
    gap: 9em !important;
}
.gap-10 {
    gap: 10em !important;
}


.flex-grow-0 {
    flex-grow: 0 !important;
}
.flex-grow-0_2 {
    flex-grow: 0.2 !important;
}
.flex-grow-0_4 {
    flex-grow: 0.4 !important;
}
.flex-grow-0_6 {
    flex-grow: 0.6 !important;
}
.flex-grow-0_8 {
    flex-grow: 0.8 !important;
}
.flex-grow-1 {
    flex-grow: 1 !important;
}
.flex-grow-1_5 {
    flex-grow: 1.5 !important;
}
.flex-grow-2 {
    flex-grow: 2 !important;
}


.line-height-1{
    line-height: 1em !important;
}

.height-0 {
    height: 0em !important;
}
.height-1 {
    height: 1em !important;
}
.height-2 {
    height: 2em !important;
}
.height-3 {
    height: 3em !important;
}
.height-4 {
    height: 4em !important;
}
.height-5 {
    height: 5em !important;
}
.height-6 {
    height: 6em !important;
}
.height-7 {
    height: 7em !important;
}
.height-8 {
    height: 8em !important;
}
.height-9 {
    height: 9em !important;
}
.height-10 {
    height: 10em !important;
}
.border-right-dotted {
    border-right: 2px dotted gray;
}
.border-top-dotted {
    border-top: 2px dotted gray;
}
.border-bottom-bold {
    border-bottom: 3px solid gray !important;
}
.side-borders {
    border-left: 1px solid lightgray !important;
    border-right: 1px solid lightgray !important;
}
.border-top-thin {
    border-top: 1px solid lightgray !important;
}
.border-bottom {
    border-bottom: 1px solid lightgray !important;
}
.border-top {
    border-top: 3px solid gray !important;
}
.rounded-xl {
    border-radius: 15px;
}
.rounded-sm {
    border-radius: var(--border-radius-sm);
}
.rounded-bottom-xl {
    border-bottom-left-radius: 15px;
    border-bottom-right-radius: 15px;
}
.rounded-top-xl {
    border-top-left-radius: 15px;
    border-top-right-radius: 15px;
}

.shadow-15px {
    box-shadow: 0 0 15px var(--shadow-color);
}

@media (max-width: 576px) {
    .gap-xs-0 {
        gap: 0em !important;
    }
    .gap-xs-1 {
        gap: 1em !important;
    }
    .gap-xs-2 {
        gap: 2em !important;
    }
    .gap-xs-3 {
        gap: 3em !important;
    }
    .gap-xs-4 {
        gap: 4em !important;
    }
    .gap-xs-5 {
        gap: 5em !important;
    }
    .gap-xs-6 {
        gap: 6em !important;
    }
    .gap-xs-7 {
        gap: 7em !important;
    }
    .gap-xs-8 {
        gap: 8em !important;
    }
    .gap-xs-9 {
        gap: 9em !important;
    }
    .gap-xs-10 {
        gap: 10em !important;
    }
    .mt-xs-1em{
        margin-top: 1em !important;
    }
    .mt-xs-2em{
        margin-top: 2em !important;
    }
    .mt-xs-3em{
        margin-top: 3em !important;
    }
    .mt-xs-4em{
        margin-top: 4em !important;
    }
    .mt-xs-5em{
        margin-top: 5em !important;
    }
    .mt-xs-6em{
        margin-top: 6em !important;
    }
    .mt-xs-7em{
        margin-top: 7em !important;
    }
    .mt-xs-8em{
        margin-top: 8em !important;
    }
    .mt-xs-9em{
        margin-top: 9em !important;
    }
    .mt-xs-10em{
        margin-top: 10em !important;
    }
}
@media (min-width: 576px) and (max-width: 768px) {
    .gap-sm-0 {
        gap: 0em !important;
    }
    .gap-sm-1 {
        gap: 1em !important;
    }
    .gap-sm-2 {
        gap: 2em !important;
    }
    .gap-sm-3 {
        gap: 3em !important;
    }
    .gap-sm-4 {
        gap: 4em !important;
    }
    .gap-sm-5 {
        gap: 5em !important;
    }
    .gap-sm-6 {
        gap: 6em !important;
    }
    .gap-sm-7 {
        gap: 7em !important;
    }
    .gap-sm-8 {
        gap: 8em !important;
    }
    .gap-sm-9 {
        gap: 9em !important;
    }
    .gap-sm-10 {
        gap: 10em !important;
    }
    .mt-sm-1em{
        margin-top: 1em !important;
    }
    .mt-sm-2em{
        margin-top: 2em !important;
    }
    .mt-sm-3em{
        margin-top: 3em !important;
    }
    .mt-sm-4em{
        margin-top: 4em !important;
    }
    .mt-sm-5em{
        margin-top: 5em !important;
    }
    .mt-sm-6em{
        margin-top: 6em !important;
    }
    .mt-sm-7em{
        margin-top: 7em !important;
    }
    .mt-sm-8em{
        margin-top: 8em !important;
    }
    .mt-sm-9em{
        margin-top: 9em !important;
    }
    .mt-sm-10em{
        margin-top: 10em !important;
    }
}
.min-vh-100 {
    min-height: 100vh;
}
.top-layer, .bottom-layer {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}
.top-layer {
    z-index: 100;
}
.bottom-layer {
    z-index: -100;
}
.mix-blend-multiply {
    mix-blend-mode: multiply;
}
/* Класс для элемента */
.pulse-opacity {
  animation: fade-cycle 5s linear infinite;
}

/* Ключевые кадры: 0 -> 1 -> 0 */
@keyframes fade-cycle {
  0%   { opacity: 0.8; }
  50%  { opacity: 1; }
  100% { opacity: 0.8; }
}
.color-white {
    color: white !important
}
.color-deep-blue {
    color: var(--deep-blue);
}
.opacity-10 {
    opacity: 0.1;
}
.opacity-20 {
    opacity: 0.2;
}
.opacity-30 {
    opacity: 0.3;
}
.opacity-40 {
    opacity: 0.4;
}
.opacity-50 {
    opacity: 0.5;
}
.screen-inline-padding {
    padding-inline: var(--screen-inline-padding);
}
.hidden {
    display: none !important;
}
.fade-out {
    opacity: 0;
}

/* Элемент-носитель */
.loading {
    pointer-events: none;
}
ul.loading-info {
    display: flex;
    flex-flow: column nowrap;
}
ul.loading-info li {
    order: 2;
}
ul.loading-info li.general {
    order: 1;
    font-weight: 700;
}
ul.loading-info li {
    display: flex;
    gap: 0.5em;
}
ul.loading-info li .marker {
    --loading-circle-size: 1em;
    display: grid;
    position: relative;
    place-items: center;
    width: 1.5em;
    height: 1.5em;
    margin-block: auto;
}
ul.loading-info li .marker i:is(.fa-solid, .fa-regular){
    color: var(--green-li);
}
ul.loading-info li:not(.finished) .marker i:is(.fa-solid, .fa-regular){
    display: none;
}
.loading-container {
    position: relative;
    width: 100%;
    height: calc(var(--loading-circle-size));
}
.loading-container .loading-indicator {
    position: absolute;
    top: 50%;
    left: 50%;
    translate: -50% -50%;
    font-weight: 500;
    font-size: 24px;
}
/* Анимация загрузки */
.loading::after {
  content: "";
  top: 50%;
  left: 50%;
  width: var(--loading-circle-size);
  height: var(--loading-circle-size);
  transform: translate(-50%, -50%);
  border-radius: 50%;

  /* Футуристичный стиль */
  background:
    conic-gradient(
      from 0deg,
      transparent 0deg,
      var(--deep-blue) 90deg,
      var(--deep-purple) 180deg,
      transparent 270deg
    );
  mask: radial-gradient(circle, transparent 38%, transparent 34%,#000 34%);
  -webkit-mask:  radial-gradient(circle, transparent 38%, transparent 34%,#000 34%);

  filter: drop-shadow(0 0 6px #00e5ff)
          drop-shadow(0 0 12px #7c4dff);

  animation:
    spin 1.1s linear infinite,
    pulse 1.8s ease-in-out infinite;
  z-index: 10;
}
.avatar.loading {
    --loading-circle-size: 69px;
}
.avatar.loading::after {
    mask: radial-gradient(circle, transparent 38%, transparent 66%,#000 34%);
    -webkit-mask: radial-gradient(circle, transparent 38%, transparent 66%,#000 34%);
}
body.loading::after {
    position: fixed;
}
:not(body).loading::after {
    position: absolute;
}

/* Вращение */
@keyframes spin {
  to {
    transform: translate(-50%, -50%) rotate(360deg);
  }
}

/* Пульсация энергии */
@keyframes pulse {
  0%, 100% {
    opacity: 0.6;
    filter: drop-shadow(0 0 6px #00e5ff);
  }
  50% {
    opacity: 1;
    filter: drop-shadow(0 0 14px #7c4dff);
  }
}
.accordion {
    display: flex;
    flex-flow: column nowrap;
    gap: 16px;
}
.accordion .item{
    width: 100%;
}
.accordion .accordion-item-title {
    text-align: left;
    border: none;
    outline: none;
    border-bottom: 1px solid var(--gray);
    border-radius: 12px;
    padding: 8px 10px;
    font-size: 16px;
    background: transparent;
    width: 100%
}
.accordion .accordion-item-content {
    overflow: hidden;
    max-height: 500px; /* достаточно для текста, можно увеличить */
    display: none;
    padding: 16px 0 0 12px;
}

.accordion .item.active .accordion-item-content {
    display: block;
}

.title {
  width: 100%;
  text-align: left;
  cursor: pointer;
  font-weight: bold;
  padding: 10px 0;
  border: none;
  background: none;
}
.translate-down-2x {
    translate: 0 200%;
}
.justify-self-end {
    justify-self: end;
}

nav.pagination-nav {
    margin: 0;
}
nav.pagination-nav ul.pagination {
    justify-content: center;
    margin: 0;
    gap: 0.5em;
}
nav.pagination-nav ul.pagination li .page-link {
    border-radius: 1em !important;
    color: var(--gray);
}
nav.pagination-nav ul.pagination li.disabled .page-link {
    background: none;
}
nav.pagination-nav ul.pagination li.active .page-link {
    background-color: var(--deep-blue);
    border: none;
    outline: none;
    color: white;
}
.pagination-info {
    font-size: 12px;
    margin-top: 1em !important;
    color: var(--light-gray);
    margin-inline: auto;
    text-align: center;
}
.overflow-visible {
    overflow: visible;
}
.color-red {
    color: red;
}
.color-green {
    color: green;
}
.color-blue {
    color: #2563eb;
}
.color-white {
    color: #fff;
}

@media screen and (max-width: 600px) {
    .d-sm-none {
        display: none !important;
    }
}