/* ===================================================================
   Urban Heat Island Dashboard – Frost / Light Theme
   Clean whites, teal accents, soft depth
   =================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');

:root {
    --bg-page: #f0f4f8;
    --bg-white: #ffffff;
    --bg-hero: #0f2b3c;
    --text-dark: #1e293b;
    --text-mid: #475569;
    --text-light: #94a3b8;
    --accent: #0d9488;
    --accent-light: #ccfbf1;
    --accent-dark: #065f46;
    --border: #e2e8f0;
    --shadow-sm: 0 1px 3px rgba(15,23,42,.06);
    --shadow-md: 0 4px 12px rgba(15,23,42,.08);
    --shadow-lg: 0 8px 24px rgba(15,23,42,.1);
    --radius: .625rem;
}

body {
    background-color: var(--bg-page);
    color: var(--text-dark);
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
}

/* ── Hero ── */
.hero-section {
    background: var(--bg-hero);
    padding: 2.75rem 0 2.25rem;
    margin-bottom: 0;
    color: #fff;
    border-bottom: 3px solid var(--accent);
}
.hero-section h1 {
    font-weight: 700;
    font-size: 1.75rem;
    letter-spacing: -.02em;
}
.hero-section .lead {
    font-size: .95rem;
    color: #cbd5e1;
    font-weight: 400;
}
.hero-section .badge {
    background: var(--accent) !important;
    font-weight: 500;
    font-size: .78rem;
    padding: .35em .75em;
}

/* ── Cards ── */
.card {
    background-color: var(--bg-white);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow-sm);
}
.card-header {
    background-color: #f8fafc;
    color: var(--text-dark);
    font-weight: 600;
    font-size: .88rem;
    border-bottom: 1px solid var(--border);
    border-radius: var(--radius) var(--radius) 0 0;
}

/* KPI cards */
.kpi-card {
    transition: box-shadow .2s ease, transform .15s ease;
    border: 1px solid var(--border);
}
.kpi-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
}
.kpi-icon {
    font-size: 1.5rem;
    margin-bottom: .4rem;
    width: 44px;
    height: 44px;
    line-height: 44px;
    border-radius: 50%;
    display: inline-block;
}
.kpi-icon.text-danger  { color: #dc2626 !important; background: #fef2f2; }
.kpi-icon.text-info    { color: #0891b2 !important; background: #ecfeff; }
.kpi-icon.text-warning { color: #d97706 !important; background: #fffbeb; }
.kpi-icon.text-success { color: #059669 !important; background: #ecfdf5; }
.kpi-icon.text-primary { color: #0d9488 !important; background: #ccfbf1; }

.kpi-card h5 {
    font-size: .78rem;
    font-weight: 500;
    color: var(--text-mid);
    text-transform: uppercase;
    letter-spacing: .04em;
    margin-bottom: .25rem;
}
.kpi-value {
    font-size: 1.65rem;
    font-weight: 700;
    display: block;
    color: var(--text-dark);
}
.kpi-secondary .kpi-value { font-size: 1.35rem; }
.kpi-secondary h5 { font-size: .72rem; }
.kpi-secondary small.text-muted { color: var(--text-light) !important; font-size: .72rem; }

/* Map cards */
.map-card { overflow: hidden; }
.map-card .card-header {
    font-size: .82rem;
    padding: .55rem .85rem;
    background: var(--bg-hero);
    color: #e2e8f0;
    border-bottom: none;
    border-radius: var(--radius) var(--radius) 0 0;
}
.map-img { width: 100%; height: auto; display: block; }
.placeholder-img {
    height: 200px;
    background: linear-gradient(135deg, #f1f5f9 0%, #e2e8f0 100%);
}
.map-card .card-body { padding: .6rem .85rem; }
.map-card .card-body small { color: var(--text-light); font-size: .76rem; }

/* ── Section Titles ── */
.section-title {
    font-size: 1.15rem;
    font-weight: 700;
    margin-bottom: .85rem;
    padding-bottom: .4rem;
    border-bottom: none;
    color: var(--text-dark);
    display: flex;
    align-items: center;
    gap: .35rem;
}
.section-title i { color: var(--accent); font-size: 1rem; }
.section-title::after {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--border);
    margin-left: .75rem;
}

/* ── Table ── */
.table-dark {
    --bs-table-bg: transparent;
    --bs-table-color: var(--text-dark);
    --bs-table-hover-bg: #f1f5f9;
    --bs-table-hover-color: var(--text-dark);
    --bs-table-border-color: var(--border);
}
.table-dark th {
    color: var(--accent-dark);
    font-size: .78rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    font-weight: 600;
    border-bottom: 2px solid var(--accent) !important;
}
.table-dark td {
    font-size: .88rem;
    padding: .6rem .75rem;
    border-color: var(--border) !important;
}

/* ── Pipeline ── */
.pipeline {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: .5rem;
}
.pipe-step {
    background: var(--bg-white);
    padding: .55rem .9rem;
    border-radius: var(--radius);
    font-size: .78rem;
    font-weight: 600;
    text-align: center;
    min-width: 108px;
    border: 1px solid var(--border);
    color: var(--text-dark);
    box-shadow: var(--shadow-sm);
}
.pipe-arrow { color: var(--accent); font-size: .9rem; }
.arch-step {
    border-left: 3px solid var(--accent);
    background: var(--accent-light);
}

/* ── Footer ── */
footer {
    background: var(--bg-white);
    border-top: 1px solid var(--border);
}
footer small { color: var(--text-light) !important; }

/* ── Spacing override ── */
.container.my-4 { margin-top: 1.75rem !important; }

/* Responsive */
@media (max-width: 768px) {
    .hero-section h1 { font-size: 1.3rem; }
    .kpi-value { font-size: 1.3rem; }
    .pipeline { gap: .35rem; }
    .pipe-step { min-width: 80px; font-size: .7rem; padding: .4rem .55rem; }
}
