/* Карта на странице списка */
.events-map {
    width: 100%;
    height: 420px;
    border-radius: .5rem;
    overflow: hidden;
    border: 1px solid var(--bs-border-color);
    background: #f6f5f0;
}
@media (max-width: 575.98px) {
    .events-map { height: 280px; }
}

.events-filters .form-label {
    font-weight: 500;
    color: var(--bs-secondary-color);
}

/* Карточка мероприятия */
.event-card {
    transition: box-shadow .15s ease, transform .15s ease;
}
.event-card:hover {
    box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .08);
    transform: translateY(-2px);
}
.event-cover {
    aspect-ratio: 16 / 9;
    object-fit: cover;
}
.event-category-badge {
    color: #fff;
    font-weight: 500;
}

/* Кнопка-сердечко на карточке: абсолютное позиционирование в правом верхнем углу */
.event-card .event-like-btn {
    position: absolute;
    top: 8px;
    right: 8px;
    z-index: 3;
    width: 36px;
    height: 36px;
    padding: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, .92);
    border: 1px solid rgba(0, 0, 0, .08);
    color: #6c757d;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 1px 4px rgba(0, 0, 0, .08);
    transition: color .15s ease, transform .15s ease;
    cursor: pointer;
    font-size: 1rem;
}
.event-card .event-like-btn:hover {
    color: var(--bs-danger);
    transform: scale(1.08);
}
.event-card .event-like-btn.liked {
    color: var(--bs-danger);
}

/* Inline-вариант на детальной странице — рядом с другими action-кнопками */
.event-like-btn--inline {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    padding: .25rem .6rem;
    border-radius: .375rem;
    background: #fff;
    border: 1px solid var(--bs-border-color);
    color: var(--bs-body-color);
    font-size: .875rem;
    cursor: pointer;
    transition: color .15s ease, border-color .15s ease;
}
.event-like-btn--inline:hover {
    color: var(--bs-danger);
    border-color: var(--bs-danger);
}
.event-like-btn--inline.liked {
    color: var(--bs-danger);
    border-color: var(--bs-danger);
    background: rgba(220, 53, 69, .08);
}

/* Детальная страница */
.event-detail-cover {
    width: 100%;
    max-height: 420px;
    object-fit: cover;
}
.event-detail-carousel .carousel-item img {
    aspect-ratio: 16 / 9;
    object-fit: cover;
}
.event-detail-carousel .carousel-indicators [data-bs-target] {
    background-color: #fff;
    opacity: .6;
}
.event-detail-carousel .carousel-indicators .active {
    opacity: 1;
}
.event-long-description {
    white-space: pre-line;
}
.event-mini-map {
    width: 100%;
    height: 260px;
    border-radius: .5rem;
    overflow: hidden;
    border: 1px solid var(--bs-border-color);
}

/* Кастомный иконочный маркер кластера/одиночки — формируется JS-ом */
.event-leaflet-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    border-radius: 50%;
    width: 32px;
    height: 32px;
    box-shadow: 0 2px 6px rgba(0, 0, 0, .25);
    border: 2px solid #fff;
    font-size: 14px;
}

/* Форма создания/редактирования */
.existing-photo img,
.photo-preview-card img {
    aspect-ratio: 16 / 9;
    object-fit: cover;
    width: 100%;
}
.existing-photo {
    overflow: hidden;
    border-radius: .375rem;
}
.photo-preview-card {
    overflow: hidden;
    border-radius: .375rem;
    border: 1px dashed var(--bs-border-color);
}

/* Лента дней (как на afisha.ru) — обёртка с absolute-стрелками по бокам */
.date-strip-wrap {
    position: relative;
    /* отступы слева/справа, чтобы chip'ы не уползали под стрелки */
    padding: 0 2.5rem;
}
.date-strip {
    display: flex;
    gap: .5rem;
    overflow-x: auto;
    overflow-y: hidden;
    padding: .25rem 0 .5rem;
    scroll-snap-type: x proximity;
    -webkit-overflow-scrolling: touch;
    scroll-behavior: smooth;
    /* скрываем визуальный scrollbar, но overflow остаётся — touch/wheel работают */
    scrollbar-width: none;          /* Firefox */
    -ms-overflow-style: none;       /* IE/Edge legacy */
}
.date-strip::-webkit-scrollbar { display: none; }  /* Chrome / Safari / новые Edge */

.date-strip-nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: 1px solid var(--bs-border-color);
    background: var(--bs-body-bg);
    color: var(--bs-body-color);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.1rem;
    box-shadow: 0 1px 4px rgba(0, 0, 0, .08);
    transition: border-color .12s ease, color .12s ease, opacity .12s ease;
    z-index: 2;
}
.date-strip-nav--prev { left: 0; }
.date-strip-nav--next { right: 0; }
.date-strip-nav:hover:not(:disabled) {
    border-color: var(--bs-primary);
    color: var(--bs-primary);
}
.date-strip-nav:disabled {
    opacity: .35;
    cursor: default;
}
@media (max-width: 575.98px) {
    .date-strip-wrap { padding: 0 2rem; }
    .date-strip-nav { width: 32px; height: 32px; font-size: 1rem; }
}

.date-chip {
    flex: 0 0 auto;
    width: 56px;
    padding: .35rem .25rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .1rem;
    border: 1px solid var(--bs-border-color);
    background: var(--bs-body-bg);
    border-radius: .5rem;
    cursor: pointer;
    font-size: .8rem;
    color: var(--bs-body-color);
    transition: border-color .12s ease, background-color .12s ease;
    scroll-snap-align: start;
    text-align: center;
    line-height: 1.1;
}
.date-chip:hover {
    border-color: var(--bs-primary);
}
.date-chip.active {
    background: var(--bs-primary);
    color: #fff;
    border-color: var(--bs-primary);
}
.date-chip.in-range {
    background: rgba(13, 110, 253, .12);  /* bs-primary с прозрачностью */
    border-color: rgba(13, 110, 253, .25);
    color: var(--bs-primary);
}
.date-chip.in-range.date-chip--weekend {
    color: var(--bs-danger);  /* выходные сохраняют красный текст внутри диапазона */
}

.date-strip-hint {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .4rem;
}

/* AJAX-загрузка списка: бледный fade без полного скрытия, чтобы юзер
   видел старое состояние пока ждёт. Pointer-events отключаем, чтобы не
   успеть кликнуть на карточку, которая уже исчезнет. */
.events-list-loading {
    opacity: .55;
    transition: opacity .12s ease;
    pointer-events: none;
}
.date-chip--weekend:not(.active) {
    color: var(--bs-danger);
}
.date-chip__wd {
    font-size: .7rem;
    text-transform: uppercase;
    opacity: .75;
}
.date-chip__num {
    font-size: 1.1rem;
    font-weight: 600;
}

/* Preview-подсветка между pendingStart и hovered chip'ом */
.date-chip.preview {
    background: rgba(13, 110, 253, .07);
    border-color: rgba(13, 110, 253, .18);
    color: var(--bs-primary);
}
.date-chip.preview-end {
    background: rgba(13, 110, 253, .25);
    border-color: var(--bs-primary);
    color: var(--bs-primary);
}
.date-chip.preview.date-chip--weekend,
.date-chip.preview-end.date-chip--weekend {
    color: var(--bs-danger);
}

/* Разделитель между месяцами */
.date-strip-separator {
    flex: 0 0 auto;
    align-self: stretch;
    display: flex;
    align-items: center;
    padding: 0 .65rem;
    margin: 0 .15rem;
    border-left: 1px dashed var(--bs-border-color);
    font-size: .75rem;
    color: var(--bs-secondary-color);
    text-transform: uppercase;
    letter-spacing: .06em;
    font-weight: 600;
    white-space: nowrap;
    /* первый separator (на самом старте ленты) не должен висеть рамкой в воздухе */
}
.date-strip-separator:first-child {
    border-left: none;
    padding-left: 0;
    margin-left: 0;
}

/* Подсказки адресов от Nominatim */
.address-suggestions {
    position: absolute;
    z-index: 1050;
    left: 0;
    right: 0;
    top: 100%;
    max-height: 280px;
    overflow-y: auto;
    margin-top: 2px;
    box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .12);
    border-radius: .375rem;
}
.address-suggestions .list-group-item {
    cursor: pointer;
    font-size: .9rem;
    padding: .5rem .75rem;
}
.address-suggestions .list-group-item:hover,
.address-suggestions .list-group-item:focus {
    background-color: var(--bs-tertiary-bg);
}
