:root {
    --bs-body-bg: #f5f7fa;
}

body {
    background: var(--bs-body-bg);
}

.map {
    height: 420px;
    width: 100%;
    border-radius: 0.5rem;
    border: 1px solid #dee2e6;
}

.map-small {
    height: 240px;
}

.weather-card {
    padding: 1rem;
}

.weather-card .status {
    font-size: 1.25rem;
    font-weight: 600;
}

.weather-card .meta {
    color: #6c757d;
    font-size: 0.875rem;
}

.cctv-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 0.75rem;
}

.cctv-item {
    border: 1px solid #dee2e6;
    border-radius: 0.5rem;
    padding: 0.75rem;
    background: #fff;
}

.cctv-item img {
    max-width: 100%;
    border-radius: 0.25rem;
}

.search-results .list-group-item {
    cursor: pointer;
}

/* 手機：雨況優先、不需橫向捲動 */
@media (max-width: 768px) {
    .map {
        height: 300px;
    }

    .cctv-list {
        grid-template-columns: 1fr;
    }

    main {
        padding-left: 0.5rem;
        padding-right: 0.5rem;
    }
}
