:root {
    --background: #f5f5f5; /* Светлый пастельный фон */
    --text: #4a4a4a; /* Темно-серый текст для контраста */
    --card-bg: #ffffff; /* Белый фон карточек */
    --accent: #d4e4e3; /* Пастельный мятный для акцентов */
    --accent-dark: #b8c9c8; /* Темнее для наведения/нажатия */
    --border: #e0e0e0; /* Светло-серый для границ */
    --muted: #6b7280; /* Приглушенный серый для второстепенного текста */
}

body {
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
    background-color: var(--background);
    color: var(--text);
    line-height: 1.6;
    margin: 0;
}

/* Навигация */
.navbar {
    background-color: var(--card-bg);
    border-bottom: 1px solid var(--border);
    padding: 1rem 0;
}

.navbar-brand, .nav-link {
    color: var(--text) !important;
    font-weight: 500;
}

.nav-link {
    padding: 0.5rem 1rem;
    border-radius: 8px; /* Больше скруглений */
    transition: background-color 0.2s ease;
}

.nav-link:hover {
    background-color: var(--accent-dark); /* Темнее при наведении */
}

/* Карточки */
.card {
    background-color: var(--card-bg);
    border: 1px solid var(--border);
    border-radius: 16px; /* Увеличенные скругления */
    overflow: hidden;
    transition: transform 0.2s ease, background-color 0.2s ease;
    text-decoration: none; /* Для кликабельных карточек */
    color: inherit;
}

.card:hover {
    transform: translateY(-3px);
    background-color: var(--accent-dark); /* Темнее при наведении */
}

.place-card {
    transition: none;
}

.place-card:hover {
    transform: none;
    background-color: var(--card-bg); /* Возвращаем исходный фон */
}

.card-img-top {
    border-radius: 16px 16px 0 0; /* Скругления для изображения */
    height: 180px;
    object-fit: cover;
}

/* Кнопки */
.btn {
    border-radius: 8px; /* Увеличенные скругления */
    padding: 8px 16px;
    font-weight: 500;
    transition: background-color 0.2s ease;
}

.btn-primary {
    background-color: var(--accent);
    border-color: var(--accent);
    color: var(--text);
}

.btn-primary:hover {
    background-color: var(--accent-dark); /* Темнее при наведении */
    border-color: var(--accent-dark);
}

.btn-outline-primary, .btn-outline-secondary {
    border-color: var(--border);
    color: var(--text);
}

.btn-outline-primary:hover, .btn-outline-secondary:hover {
    background-color: var(--accent-dark); /* Темнее при наведении */
    border-color: var(--accent-dark);
}

/* Заголовки */
h1, h5, .display-5 {
    font-weight: 600;
    color: var(--text);
}

/* Иконки */
.bi {
    font-size: 1.1em;
    color: var(--text);
}

/* Адаптивная карта */
.map-container {
    border-radius: 16px; /* Увеличенные скругления */
    overflow: hidden;
    margin: 1.5rem 0;
}

@media (max-width: 768px) {
    .map_iframe {
        display: none;
    }

    .mobile-map-button {
        display: block !important;
    }
}

@media (min-width: 769px) {
    .mobile-map-button {
        display: none !important;
    }
}

/* Футер */
footer {
    background-color: var(--card-bg);
    border-top: 1px solid var(--border);
    padding: 1.5rem 0;
    color: var(--muted);
}

/* Контейнер */
.container {
    padding: 2rem 1rem;
}

/* Текст */
.text-muted {
    color: var(--muted) !important;
}
.city-item.visible {
    opacity: 1;
    transform: translateY(0);
}
.city-item.removing {
    opacity: 0;
    transform: translateY(10px);
    transition: opacity 0.3s ease, transform 0.3s ease;
    pointer-events: none;
}
.city-item {
    opacity: 0;
    transform: translateY(10px);
    transition: opacity 0.3s ease, transform 0.3s ease;
}
.bi-search {
    pointer-events: none;
}
#city-search {
    border-color: #ced4da;
    box-shadow: none;
    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
#city-search:focus {
    border-color: #86b7fe;
    box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
    outline: none;
}
.category-item {
    opacity: 0;
    transform: translateY(10px);
    transition: opacity 0.3s ease, transform 0.3s ease;
}
.category-item.visible {
    opacity: 1;
    transform: translateY(0);
}
.category-item.removing {
    opacity: 0;
    transform: translateY(10px);
    transition: opacity 0.3s ease, transform 0.3s ease;
    pointer-events: none;
}
#category-list {
    position: relative;
    transition: min-height 0.3s ease;
}
.place-item {
    opacity: 0;
    transform: translateY(10px);
    transition: opacity 0.3s ease, transform 0.3s ease;
}
.place-item.visible {
    opacity: 1;
    transform: translateY(0);
}
.place-item.removing {
    opacity: 0;
    transform: translateY(10px);
    transition: opacity 0.3s ease, transform 0.3s ease;
    pointer-events: none;
}
#place-search {
    border-color: #ced4da;
    box-shadow: none;
    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
#place-search:focus {
    border-color: #86b7fe;
    box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);outline: none;
}
.bi-search {
    pointer-events: none;
}
/* Контейнер для Markdown-контента */
.markdown-content {
    line-height: 1.6;
    color: var(--text);
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
}

/* Параграфы */
.markdown-content p {
    margin-bottom: 1rem;
    font-size: 1rem;
}

/* Заголовки */
.markdown-content h1,
.markdown-content h2,
.markdown-content h3 {
    margin-top: 1.25rem;
    margin-bottom: 0.75rem;
    font-weight: 600;
    color: var(--text);
}

.markdown-content h1 { font-size: 1.75rem; }
.markdown-content h2 { font-size: 1.5rem; }
.markdown-content h3 { font-size: 1.25rem; }

/* Таблицы с закруглёнными углами */
.markdown-content table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    border-radius: 12px; /* Меньше скруглений, но всё ещё заметно */
    overflow: hidden;
    background-color: var(--card-bg);
    border: 1px solid var(--border);
    margin-bottom: 1rem;
}

.markdown-content th,
.markdown-content td {
    padding: 0.5rem 0.75rem;
    text-align: left;
    border-bottom: 1px solid var(--border);
}

.markdown-content th {
    background-color: var(--accent); /* Пастельный мятный для заголовков */
    font-weight: 500;
    color: var(--text);
}

.markdown-content tr:last-child td {
    border-bottom: none;
}

/* Минималистичные цитаты с скруглениями */
.markdown-content blockquote {
    padding: 0.75rem 1rem;
    margin-bottom: 1rem;
    border-left: 3px solid var(--accent); /* Тонкая мятная линия */
    border-radius: 12px; /* Сохранённые скругления */
    color: var(--muted);
    font-style: italic;
}

.markdown-content blockquote p:last-child {
    margin-bottom: 0;
}

/* Код */
.markdown-content pre {
    margin-bottom: 1rem;
    border-radius: 12px;
    overflow-x: auto;
}

.markdown-content .codehilite {
    background: transparent; /* Без фона */
    padding: 0.5rem 0.75rem;
}

.markdown-content .codehilite .c { color: #a9b7c6; font-style: italic; } /* Комментарии */
.markdown-content .codehilite .k { color: #88c0a0; font-weight: bold; } /* Ключевые слова */
.markdown-content .codehilite .s { color: #f5a9bc; } /* Строки */
.markdown-content .codehilite .nb { color: #a9c6e2; } /* Встроенные функции */
.markdown-content .codehilite .o { color: #d0a9e2; } /* Операторы */
.markdown-content .codehilite .p { color: var(--text); } /* Пунктуация */

/* Списки */
.markdown-content ul,
.markdown-content ol {
    margin-bottom: 1.5rem;
    padding-left: 1.8rem;
}

.markdown-content li {
    margin-bottom: 0.5rem;
    position: relative;
}

/* Круглые маркеры для ненумерованных списков */
.markdown-content ul {
    list-style-type: none;
}

.markdown-content ul li::before {
    content: "•";
    color: var(--muted);
    position: absolute;
    left: -1.2rem;
    width: 1rem;
    text-align: center;
    font-size: 1.1em;
}

/* Нумерованные списки */
.markdown-content ol {
    list-style-type: none;
    counter-reset: item;
}

.markdown-content ol li::before {
    content: counter(item) ".";
    counter-increment: item;
    color: var(--muted);
    position: absolute;
    left: -1.8rem;
    width: 1.5rem;
    text-align: right;
    font-size: 0.95em;
    font-feature-settings: 'tnum';
}

/* Ссылки */
.markdown-content a {
    color: var(--text); /* Используем основной цвет текста */
    text-decoration: underline;
    text-decoration-color: var(--accent); /* Акцентный цвет только для подчеркивания */
    text-decoration-thickness: 2px;
    text-underline-offset: 3px;
    font-weight: 500; /* Полужирное начертание */
    transition: all 0.2s ease;
}

.markdown-content a:hover {
    color: var(--text); /* Цвет текста не меняется */
    text-decoration-color: var(--accent-dark); /* Более темное подчеркивание */
    text-decoration-thickness: 3px;
    background-color: rgba(212, 228, 227, 0.2); /* Легкий акцентный фон */
}

/* Для ссылок в цитатах и списках */
.markdown-content blockquote a,
.markdown-content li a {
    text-decoration-style: dotted; /* Пунктир для второстепенных ссылок */
}

/* Обновлённые стили с сохранением исходной высоты */
.weather-badge {
    position: relative;
    min-width: 80px;
    height: 32px; /* Фиксированная высота как в оригинале */
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    overflow: hidden;
    padding: 0 12px; /* Отступы как в оригинале */
}

/* Анимированный плейсхолдер */
.weather-badge::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(90deg,
               rgba(0,0,0,0.05) 25%,
               rgba(0,0,0,0.1) 50%,
               rgba(0,0,0,0.05) 75%);
    background-size: 200% 100%;
    animation: placeholder-shimmer 1.5s infinite linear;
    opacity: 1;
    transition: opacity 0.5s ease;
    border-radius: inherit; /* Сохраняем скруглённые углы */
}

.weather-badge.loaded::before {
    opacity: 0;
}

.temperature {
    position: relative;
    opacity: 0;
    transition: opacity 0.5s ease 0.2s;
    font-weight: bold; /* Сохраняем жирный текст */
}

.weather-badge.loaded .temperature {
    opacity: 1;
}

/* Стили для текстового плейсхолдера категорий */
.loading {
    position: relative;
    display: inline-block;
    padding: 0.5rem 1rem; /* Отступы для плашки */
    background: linear-gradient(45deg,
               #b0b0b0 20%, /* Более тёмный серый */
               #ffffff 50%, /* Белый для яркости */
               #b0b0b0 80%); /* Более тёмный серый */
    background-size: 200% 100%;
    animation: placeholder-shimmer 1.2s infinite linear;
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    transition: color 0.5s ease;
    width: fit-content; /* Ограничиваем ширину содержимым */
}

.loading::before {
    content: "";
    position: absolute;
    top: 0;
    left: -1rem; /* Учитываем padding слева */
    right: -1rem; /* Учитываем padding справа */
    bottom: 0;
    background: linear-gradient(45deg,
               #e0e0e0 20%, /* Очень светлый серый */
               #f5f5f5 50%, /* Практически белый */
               #e0e0e0 80%); /* Очень светлый серый */
    background-size: 200% 100%;
    animation: placeholder-shimmer 1.2s infinite linear;
    opacity: 0.6; /* Лёгкая прозрачность */
    border-radius: 16px; /* Скруглённые углы */
    z-index: -1; /* Под текстом */
    box-sizing: content-box; /* Padding не влияет на ширину */
}

#category-list {
    position: relative;
    transition: min-height 0.3s ease;
    width: fit-content;
    margin: 0 auto;
}

#category-list.loaded .loading {
    background: none;
    color: var(--muted);
    animation: none;
}

#category-list.loaded .loading::before {
    opacity: 0;
    transition: opacity 0.5s ease;
}

#city-list {
    position: relative;
    transition: min-height 0.3s ease;
    width: fit-content;
    margin: 0 auto;
}

#city-list.loaded .loading {
    background: none;
    color: var(--muted);
    animation: none;
}

#city-list.loaded .loading::before {
    opacity: 0;
    transition: opacity 0.5s ease;
}



@keyframes placeholder-shimmer {
    0% { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}