/* CSS Custom Properties for Light/Dark Mode */
:root {
  /* Brand colors (consistent across themes) */
  --color-primary: #667eea;
  --color-primary-dark: #764ba2;

  /* Light mode (default) */
  --color-bg-body: #f8fafc;
  --color-bg-primary: #ffffff;
  --color-bg-secondary: #f7fafc;
  --color-bg-success: #f0fdf4;
  --color-bg-header: #ffffff;
  --color-text-primary: #2d3748;
  --color-text-secondary: #64748b;
  --color-text-muted: #718096;
  --color-text-tertiary: #4a5568;
  --color-text-light: #475569;
  --color-border: #e2e8f0;
  --color-border-light: #cbd5e0;
  --color-border-success: #86efac;
  --color-shadow: rgba(0, 0, 0, 0.1);
  --color-shadow-md: rgba(0, 0, 0, 0.15);
  --color-overlay: rgba(0, 0, 0, 0.5);
  --color-error: #fc8181;
  --color-success: #48bb78;
  --color-status: #48bb78;
  --color-loading: #ffffff;
  --color-tooltip-bg: #1e293b;
  --color-tooltip-text: #f1f5f9;
  --color-primary-hover: #5568d3;
  --color-primary-light: #e0e7ff;
  --color-primary-lighter: #c7d2fe;
  --color-success-text: #166534;
  --color-bg-light: #f1f5f9;
  --gradient-bg: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);
}

[data-theme="dark"] {
  /* Dark mode overrides */
  --color-bg-body: #0f172a;
  --color-bg-primary: #1e293b;
  --color-bg-secondary: #334155;
  --color-bg-success: #1e3a2f;
  --color-bg-header: #1e293b;
  --color-text-primary: #f1f5f9;
  --color-text-secondary: #cbd5e0;
  --color-text-muted: #94a3b8;
  --color-text-tertiary: #e2e8f0;
  --color-text-light: #cbd5e0;
  --color-border: #475569;
  --color-border-light: #334155;
  --color-border-success: #065f46;
  --color-shadow: rgba(0, 0, 0, 0.3);
  --color-shadow-md: rgba(0, 0, 0, 0.4);
  --color-overlay: rgba(0, 0, 0, 0.7);
  --color-error: #f87171;
  --color-success: #34d399;
  --color-status: #34d399;
  --color-loading: #f1f5f9;
  --color-tooltip-bg: #334155;
  --color-tooltip-text: #f1f5f9;
  --color-primary-hover: #5a5fc7;
  --color-primary-light: #312e81;
  --color-primary-lighter: #4338ca;
  --color-success-text: #4ade80;
  --color-bg-light: #334155;
  --gradient-bg: linear-gradient(135deg, #0f172a 0%, #1e293b 100%);
}

* { margin: 0; padding: 0; box-sizing: border-box; }
        html, body {
            overflow-x: hidden;
            max-width: 100vw;
        }
        body {
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Arial, sans-serif;
            background: var(--gradient-bg);
            min-height: 100vh;
            padding: 20px;
        }
        .container { max-width: 1400px; margin: 0 auto; overflow: visible; }
        header {
            background: var(--color-bg-primary);
            padding: 30px;
            border-radius: 12px;
            margin-bottom: 20px;
            box-shadow: 0 4px 6px var(--color-shadow);
            display: flex;
            align-items: center;
            gap: 20px;
            position: relative;
        }
        .theme-toggle {
            position: absolute;
            top: 20px;
            right: 20px;
            background: var(--color-bg-secondary);
            border: 2px solid var(--color-border);
            border-radius: 50%;
            width: 44px;
            height: 44px;
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            transition: all 0.2s ease;
        }
        .theme-toggle:hover {
            background: var(--color-primary);
            border-color: var(--color-primary);
            transform: scale(1.05);
        }
        .theme-toggle:hover svg {
            color: var(--color-loading);
        }
        .theme-toggle svg {
            color: var(--color-text-primary);
            transition: color 0.2s ease;
        }
        .theme-toggle .sun-icon {
            display: block;
        }
        .theme-toggle .moon-icon {
            display: none;
        }
        [data-theme="dark"] .theme-toggle .sun-icon {
            display: none;
        }
        [data-theme="dark"] .theme-toggle .moon-icon {
            display: block;
        }
        h1 { color: var(--color-text-primary); font-size: 2em; margin-bottom: 10px; }
        .subtitle { color: var(--color-text-muted); font-size: 1.1em; }
        .stats-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
            gap: 15px;
            margin-bottom: 20px;
        }
        .stat-card {
            background: var(--color-bg-primary);
            padding: 20px;
            border-radius: 12px;
            box-shadow: 0 4px 6px var(--color-shadow);
        }
        .stat-value {
            font-size: 2em;
            font-weight: bold;
            color: var(--color-primary);
            margin-bottom: 5px;
        }
        .stat-label { color: var(--color-text-muted); font-size: 0.9em; }
        .charts-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(500px, 1fr));
            gap: 20px;
            margin-bottom: 20px;
            overflow: visible;
        }
        .chart-container {
            background: var(--color-bg-primary);
            padding: 25px;
            border-radius: 12px;
            box-shadow: 0 4px 6px var(--color-shadow);
            max-width: 100%;
            position: relative;
            z-index: 1;
            overflow: visible;
        }
        .chart-container.map-container {
            z-index: 0;
        }
        /* Allow tooltips to overflow only for charts with metric toggles */
        .chart-container:has(.metric-toggle) {
            overflow: visible;
        }
        .chart-container:has(.metric-toggle) > div:first-child {
            overflow: visible;
            position: relative;
            z-index: 10;
        }
        /* Ensure info icon tooltips in button containers are visible */
        .chart-container:has(.metric-toggle) .info-icon {
            position: relative;
            z-index: 10002;
        }
        .chart-container.full-width { grid-column: 1 / -1; }
        .chart-title {
            font-size: 1.3em;
            color: var(--color-text-primary);
            margin-bottom: 15px;
            font-weight: 600;
        }
        canvas {
            max-height: 400px;
            max-width: 100%;
            width: 100% !important;
            height: auto !important;
        }
        .loading {
            text-align: center;
            padding: 40px;
            color: var(--color-loading);
            font-size: 1.5em;
        }
        .error {
            background: var(--color-error);
            color: var(--color-loading);
            padding: 15px;
            border-radius: 8px;
            margin-bottom: 20px;
            display: none;
        }
        .filters {
            background: var(--color-bg-primary);
            padding: 25px;
            border-radius: 12px;
            margin-bottom: 20px;
            box-shadow: 0 4px 6px var(--color-shadow);
        }
        .filters h2 {
            color: var(--color-text-primary);
            font-size: 1.3em;
            margin-bottom: 15px;
        }
        .filter-group {
            display: flex;
            gap: 20px;
            flex-wrap: wrap;
            align-items: flex-end;
        }
        .filter-item {
            flex: 1;
            min-width: 200px;
        }
        .filter-item label {
            display: block;
            margin-bottom: 8px;
            color: var(--color-text-primary);
            font-weight: 600;
            font-size: 0.9em;
        }
        .filter-item select {
            width: 100%;
            padding: 10px 12px;
            border: 2px solid var(--color-border);
            border-radius: 6px;
            font-size: 1em;
            background: var(--color-bg-primary);
            color: var(--color-text-primary);
            cursor: pointer;
        }
        .filter-item select[multiple] {
            min-height: 120px;
        }
        .filter-item select:focus {
            outline: none;
            border-color: var(--color-primary);
        }
        .filter-item select option {
            color: var(--color-text-primary);
            background: var(--color-bg-primary);
        }
        .filter-buttons {
            display: flex;
            gap: 10px;
        }
        .btn {
            padding: 10px 20px;
            border: none;
            border-radius: 6px;
            font-size: 1em;
            cursor: pointer;
            transition: background 0.3s;
        }
        .btn-primary {
            background: var(--color-primary);
            color: var(--color-loading);
        }
        .btn-primary:hover {
            background: var(--color-primary-hover);
        }
        .btn-secondary {
            background: var(--color-border);
            color: var(--color-text-primary);
        }
        .btn-secondary:hover {
            background: var(--color-border-light);
        }

        /* === COMPACT FILTER LAYOUT === */
        .filter-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 20px;
        }
        .filter-title {
            display: flex;
            align-items: center;
            gap: 10px;
            font-size: 1.3em;
            font-weight: 600;
            color: var(--color-text-primary);
        }
        .filter-status-group {
            display: flex;
            gap: 12px;
            align-items: center;
        }
        .filter-status {
            display: flex;
            align-items: center;
            gap: 8px;
            font-size: 0.85em;
            padding: 6px 12px;
            background: var(--color-bg-success);
            border: 1px solid var(--color-border-success);
            border-radius: 6px;
            color: var(--color-success-text);
        }
        .status-dot {
            width: 8px;
            height: 8px;
            border-radius: 50%;
            background: var(--color-status);
        }
        .status-dot.active {
            animation: pulse 1s infinite;
        }
        @keyframes pulse {
            0%, 100% { opacity: 1; transform: scale(1); }
            50% { opacity: 0.6; transform: scale(1.2); }
        }
        .btn-reset {
            background: var(--color-bg-primary);
            border: 2px solid var(--color-border);
            color: var(--color-text-secondary);
            padding: 8px 20px;
            border-radius: 6px;
            cursor: pointer;
            font-weight: 500;
            font-size: 0.9em;
            transition: all 0.2s;
        }
        .btn-reset:hover {
            background: var(--color-bg-secondary);
            border-color: var(--color-border-light);
            color: var(--color-text-light);
            transform: translateY(-1px);
        }
        .filter-section {
            margin-bottom: 20px;
        }
        .section-row {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 20px;
        }
        .filter-group-compact {
            display: flex;
            flex-direction: column;
            gap: 8px;
        }
        .section-label {
            font-size: 1.05em;
            font-weight: 600;
            margin-bottom: 8px;
            display: flex;
            align-items: center;
            gap: 8px;
            color: var(--color-text-primary);
        }
        .section-icon {
            font-size: 1.2em;
        }
        .filter-label {
            font-size: 0.85em;
            font-weight: 500;
            display: block;
            color: var(--color-text-secondary);
            margin-bottom: 4px;
        }
        .filter-sublabel {
            font-size: 0.75em;
            opacity: 0.7;
            font-weight: 400;
            color: var(--color-text-secondary);
        }
        .date-range-row {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 12px;
        }
        .filter-divider {
            height: 1px;
            background: var(--color-border);
            margin: 20px 0;
        }
        .filters select {
            width: 100%;
            padding: 10px 12px;
            border: 2px solid var(--color-border);
            border-radius: 6px;
            font-size: 1em;
            background: var(--color-bg-primary);
            color: var(--color-text-primary);
            cursor: pointer;
            transition: all 0.2s;
        }
        .filters select:focus {
            outline: none;
            border-color: var(--color-primary);
            box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
        }
        .filters select option {
            color: var(--color-text-primary);
            background: var(--color-bg-primary);
        }
        .multi-select-enhanced {
            max-height: 140px;
            overflow-y: auto;
        }
        .multi-select-enhanced::-webkit-scrollbar {
            width: 8px;
        }
        .multi-select-enhanced::-webkit-scrollbar-track {
            background: var(--color-bg-light);
        }
        .multi-select-enhanced::-webkit-scrollbar-thumb {
            background: var(--color-border-light);
            border-radius: 4px;
        }
        .multi-select-enhanced option {
            padding: 10px 12px;
            color: var(--color-text-primary);
        }
        .multi-select-enhanced option:checked {
            background: var(--color-primary);
            color: var(--color-loading);
            font-weight: 600;
        }
        .selected-summary {
            background: var(--color-bg-secondary);
            border: 2px solid var(--color-border);
            border-radius: 6px;
            padding: 8px 12px;
            min-height: 42px;
            display: flex;
            flex-wrap: wrap;
            gap: 6px;
            align-items: center;
        }
        .selected-summary.empty {
            opacity: 0.6;
            border-style: dashed;
        }
        .selected-summary.empty::after {
            content: "No items selected";
            font-size: 0.85em;
            color: var(--color-text-muted);
        }
        .selected-tag {
            background: var(--color-bg-primary);
            color: var(--color-primary);
            border: 1px solid var(--color-primary);
            padding: 4px 10px;
            border-radius: 12px;
            font-size: 0.85em;
            display: inline-flex;
            align-items: center;
            gap: 6px;
            font-weight: 500;
            animation: slideIn 0.2s ease-out;
        }
        @keyframes slideIn {
            from { opacity: 0; transform: scale(0.8); }
            to { opacity: 1; transform: scale(1); }
        }
        .tag-remove {
            cursor: pointer;
            font-weight: bold;
            opacity: 0.6;
            transition: all 0.2s;
            width: 16px;
            height: 16px;
            display: flex;
            align-items: center;
            justify-content: center;
            border-radius: 50%;
        }
        .tag-remove:hover {
            opacity: 1;
            background: rgba(102, 126, 234, 0.2);
        }
        .quick-actions {
            display: flex;
            gap: 6px;
            flex-wrap: wrap;
        }
        .quick-btn {
            background: var(--color-bg-primary);
            border: 2px solid var(--color-border);
            color: var(--color-text-secondary);
            padding: 5px 12px;
            border-radius: 4px;
            font-size: 0.75em;
            cursor: pointer;
            transition: all 0.2s;
            white-space: nowrap;
            font-weight: 500;
        }
        .quick-btn:hover {
            background: var(--color-bg-secondary);
            border-color: var(--color-border-light);
            color: var(--color-text-light);
            transform: translateY(-1px);
        }
        .scroll-indicator {
            text-align: center;
            padding: 6px;
            background: linear-gradient(to bottom, transparent, rgba(0,0,0,0.05));
            font-size: 0.75em;
            color: var(--color-text-secondary);
            border-radius: 0 0 4px 4px;
            margin-top: -2px;
        }
        .info-icon {
            width: 22px;
            height: 22px;
            background: var(--color-primary-light);
            border-radius: 50%;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            font-size: 0.85em;
            cursor: help;
            transition: all 0.2s;
            position: relative;
        }
        .info-icon:hover {
            background: var(--color-primary-lighter);
            transform: scale(1.05);
        }
        .info-icon::before {
            content: attr(data-tooltip);
            position: absolute;
            bottom: calc(100% + 10px);
            left: 50%;
            transform: translateX(-50%);
            background: var(--color-tooltip-bg);
            color: var(--color-loading);
            padding: 12px 16px;
            border-radius: 8px;
            font-size: 0.875rem;
            line-height: 1.5;
            white-space: normal;
            width: 320px;
            opacity: 0;
            visibility: hidden;
            transition: opacity 0.2s, visibility 0.2s;
            pointer-events: none;
            z-index: 10001;
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
            font-weight: 400;
        }
        .info-icon::after {
            content: '';
            position: absolute;
            bottom: calc(100% + 2px);
            left: 50%;
            transform: translateX(-50%);
            border: 8px solid transparent;
            border-top-color: var(--color-tooltip-bg);
            opacity: 0;
            visibility: hidden;
            transition: opacity 0.2s, visibility 0.2s;
            z-index: 10001;
        }
        .info-icon:hover::before,
        .info-icon:hover::after {
            opacity: 1;
            visibility: visible;
        }
        @media (max-width: 768px) {
            /* Base font size for mobile readability */
            body {
                font-size: 16px;
            }

            /* Grid layouts - single column */
            .section-row {
                grid-template-columns: 1fr;
                gap: 16px;
            }
            .date-range-row {
                grid-template-columns: 1fr;
            }
            .charts-grid {
                grid-template-columns: 1fr;
            }

            /* Touch target sizes - minimum 44x44px */
            .btn {
                padding: 14px 24px;
                font-size: 16px;
                min-height: 48px;
            }
            .btn-reset {
                padding: 12px 24px;
                font-size: 16px;
                min-height: 48px;
            }
            button, .button {
                min-height: 44px;
                padding: 12px 20px;
                font-size: 16px;
            }
            select {
                min-height: 48px;
                font-size: 16px;
                padding: 12px;
            }
            input {
                min-height: 44px;
                font-size: 16px;
                padding: 12px;
            }

            /* Filter layout improvements */
            .filter-header {
                flex-direction: column;
                align-items: flex-start;
                gap: 12px;
            }
            .filter-status-group {
                width: 100%;
                justify-content: space-between;
            }
            .filters {
                padding: 16px;
            }

            /* Font sizes for readability */
            .filter-label {
                font-size: 16px;
            }
            .section-label {
                font-size: 18px;
            }
            .chart-title {
                font-size: 20px;
            }

            /* Tooltips and info */
            .info-icon::before {
                width: 250px;
                font-size: 14px;
            }

            /* Reduce padding on smaller screens */
            .chart-container {
                padding: 16px;
            }
            .stat-card {
                padding: 16px;
            }

            /* Help button - ensure good size */
            .help-button {
                min-width: 48px;
                min-height: 48px;
                padding: 14px 20px;
            }

            /* Map controls - increase touch target size */
            .leaflet-control-zoom a {
                width: 44px !important;
                height: 44px !important;
                line-height: 44px !important;
                font-size: 20px !important;
            }

            /* Footer links - increase size */
            .footer-links, .footer-disclaimer {
                font-size: 16px;
            }
            .footer-links a {
                padding: 8px 4px;
                display: inline-block;
            }

            /* Additional font size fixes */
            p, li, span, div, a, label {
                font-size: 16px;
            }
            .stat-label {
                font-size: 14px;
            }
            .tag, .filter-count {
                font-size: 14px;
                padding: 6px 12px;
            }

            /* Info tooltips */
            .info-tooltip-custom {
                font-size: 14px;
            }

            /* Info icon tooltip positioning for chart titles on mobile */
            .chart-title .info-icon::before {
                /* Left-align tooltip on mobile to prevent cutoff */
                left: 0;
                transform: translateX(0);
            }

            /* Fix Top 10 Areas chart header layout on mobile */
            .chart-container > div[style*="justify-content: space-between"] {
                flex-direction: column !important;
                align-items: flex-start !important;
                gap: 12px;
            }

            .chart-container > div[style*="justify-content: space-between"] > div {
                align-self: flex-start;
            }

            /* Map height - reduce on mobile to fit viewport better */
            #map {
                height: 350px !important;
            }
        }

        /* === COMPACT FILTER LAYOUT === */
        .filter-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 20px;
        }
        .filter-title {
            display: flex;
            align-items: center;
            gap: 10px;
            font-size: 1.3em;
            font-weight: 600;
            color: var(--color-text-primary);
        }
        .filter-status-group {
            display: flex;
            gap: 12px;
            align-items: center;
        }
        .filter-status {
            display: flex;
            align-items: center;
            gap: 8px;
            font-size: 0.85em;
            padding: 6px 12px;
            background: var(--color-bg-success);
            border: 1px solid var(--color-border-success);
            border-radius: 6px;
            color: var(--color-success-text);
        }
        .status-dot {
            width: 8px;
            height: 8px;
            border-radius: 50%;
            background: var(--color-status);
        }
        .status-dot.active {
            animation: pulse 1s infinite;
        }
        @keyframes pulse {
            0%, 100% { opacity: 1; transform: scale(1); }
            50% { opacity: 0.6; transform: scale(1.2); }
        }
        .btn-reset {
            background: var(--color-bg-primary);
            border: 2px solid var(--color-border);
            color: var(--color-text-secondary);
            padding: 8px 20px;
            border-radius: 6px;
            cursor: pointer;
            font-weight: 500;
            font-size: 0.9em;
            transition: all 0.2s;
        }
        .btn-reset:hover {
            background: var(--color-bg-secondary);
            border-color: var(--color-border-light);
            color: var(--color-text-light);
            transform: translateY(-1px);
        }
        .filter-section {
            margin-bottom: 20px;
        }
        .section-row {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 20px;
        }
        .filter-group-compact {
            display: flex;
            flex-direction: column;
            gap: 8px;
        }
        .section-label {
            font-size: 1.05em;
            font-weight: 600;
            margin-bottom: 8px;
            display: flex;
            align-items: center;
            gap: 8px;
            color: var(--color-text-primary);
        }
        .section-icon {
            font-size: 1.2em;
        }
        .filter-label {
            font-size: 0.85em;
            font-weight: 500;
            display: block;
            color: var(--color-text-secondary);
            margin-bottom: 4px;
        }
        .filter-sublabel {
            font-size: 0.75em;
            opacity: 0.7;
            font-weight: 400;
            color: var(--color-text-secondary);
        }
        .date-range-row {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 12px;
        }
        .filter-divider {
            height: 1px;
            background: var(--color-border);
            margin: 20px 0;
        }
        .filters select {
            width: 100%;
            padding: 10px 12px;
            border: 2px solid var(--color-border);
            border-radius: 6px;
            font-size: 1em;
            background: var(--color-bg-primary);
            color: var(--color-text-primary);
            cursor: pointer;
            transition: all 0.2s;
        }
        .filters select:focus {
            outline: none;
            border-color: var(--color-primary);
            box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
        }
        .filters select option {
            color: var(--color-text-primary);
            background: var(--color-bg-primary);
        }
        .multi-select-enhanced {
            max-height: 140px;
            overflow-y: auto;
        }
        .multi-select-enhanced::-webkit-scrollbar {
            width: 8px;
        }
        .multi-select-enhanced::-webkit-scrollbar-track {
            background: var(--color-bg-light);
        }
        .multi-select-enhanced::-webkit-scrollbar-thumb {
            background: var(--color-border-light);
            border-radius: 4px;
        }
        .multi-select-enhanced option {
            padding: 10px 12px;
            color: var(--color-text-primary);
        }
        .multi-select-enhanced option:checked {
            background: var(--color-primary);
            color: var(--color-loading);
            font-weight: 600;
        }
        .selected-summary {
            background: var(--color-bg-secondary);
            border: 2px solid var(--color-border);
            border-radius: 6px;
            padding: 8px 12px;
            min-height: 42px;
            display: flex;
            flex-wrap: wrap;
            gap: 6px;
            align-items: center;
        }
        .selected-summary.empty {
            opacity: 0.6;
            border-style: dashed;
        }
        .selected-summary.empty::after {
            content: "No items selected";
            font-size: 0.85em;
            color: var(--color-text-muted);
        }
        .selected-tag {
            background: var(--color-bg-primary);
            color: var(--color-primary);
            border: 1px solid var(--color-primary);
            padding: 4px 10px;
            border-radius: 12px;
            font-size: 0.85em;
            display: inline-flex;
            align-items: center;
            gap: 6px;
            font-weight: 500;
            animation: slideIn 0.2s ease-out;
        }
        @keyframes slideIn {
            from { opacity: 0; transform: scale(0.8); }
            to { opacity: 1; transform: scale(1); }
        }
        .tag-remove {
            cursor: pointer;
            font-weight: bold;
            opacity: 0.6;
            transition: all 0.2s;
            width: 16px;
            height: 16px;
            display: flex;
            align-items: center;
            justify-content: center;
            border-radius: 50%;
        }
        .tag-remove:hover {
            opacity: 1;
            background: rgba(102, 126, 234, 0.2);
        }
        .quick-actions {
            display: flex;
            gap: 6px;
            flex-wrap: wrap;
        }
        .quick-btn {
            background: var(--color-bg-primary);
            border: 2px solid var(--color-border);
            color: var(--color-text-secondary);
            padding: 5px 12px;
            border-radius: 4px;
            font-size: 0.75em;
            cursor: pointer;
            transition: all 0.2s;
            white-space: nowrap;
            font-weight: 500;
        }
        .quick-btn:hover {
            background: var(--color-bg-secondary);
            border-color: var(--color-border-light);
            color: var(--color-text-light);
            transform: translateY(-1px);
        }
        .scroll-indicator {
            text-align: center;
            padding: 6px;
            background: linear-gradient(to bottom, transparent, rgba(0,0,0,0.05));
            font-size: 0.75em;
            color: var(--color-text-secondary);
            border-radius: 0 0 4px 4px;
            margin-top: -2px;
        }
        .info-icon {
            width: 22px;
            height: 22px;
            background: var(--color-primary-light);
            border-radius: 50%;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            font-size: 0.85em;
            cursor: help;
            transition: all 0.2s;
            position: relative;
        }
        .info-icon:hover {
            background: var(--color-primary-lighter);
            transform: scale(1.05);
        }
        .info-icon::before {
            content: attr(data-tooltip);
            position: absolute;
            bottom: calc(100% + 10px);
            left: 50%;
            transform: translateX(-50%);
            background: var(--color-tooltip-bg);
            color: var(--color-loading);
            padding: 12px 16px;
            border-radius: 8px;
            font-size: 0.875rem;
            line-height: 1.5;
            white-space: normal;
            width: 320px;
            opacity: 0;
            visibility: hidden;
            transition: opacity 0.2s, visibility 0.2s;
            pointer-events: none;
            z-index: 10001;
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
            font-weight: 400;
        }
        .info-icon::after {
            content: '';
            position: absolute;
            bottom: calc(100% + 2px);
            left: 50%;
            transform: translateX(-50%);
            border: 8px solid transparent;
            border-top-color: var(--color-tooltip-bg);
            opacity: 0;
            visibility: hidden;
            transition: opacity 0.2s, visibility 0.2s;
            z-index: 10001;
        }
        .info-icon:hover::before,
        .info-icon:hover::after {
            opacity: 1;
            visibility: visible;
        }
        @media (max-width: 768px) {
            /* Base font size for mobile readability */
            body {
                font-size: 16px;
            }

            /* Grid layouts - single column */
            .section-row {
                grid-template-columns: 1fr;
                gap: 16px;
            }
            .date-range-row {
                grid-template-columns: 1fr;
            }
            .charts-grid {
                grid-template-columns: 1fr;
            }

            /* Touch target sizes - minimum 44x44px */
            .btn {
                padding: 14px 24px;
                font-size: 16px;
                min-height: 48px;
            }
            .btn-reset {
                padding: 12px 24px;
                font-size: 16px;
                min-height: 48px;
            }
            button, .button {
                min-height: 44px;
                padding: 12px 20px;
                font-size: 16px;
            }
            select {
                min-height: 48px;
                font-size: 16px;
                padding: 12px;
            }
            input {
                min-height: 44px;
                font-size: 16px;
                padding: 12px;
            }

            /* Filter layout improvements */
            .filter-header {
                flex-direction: column;
                align-items: flex-start;
                gap: 12px;
            }
            .filter-status-group {
                width: 100%;
                justify-content: space-between;
            }
            .filters {
                padding: 16px;
            }

            /* Font sizes for readability */
            .filter-label {
                font-size: 16px;
            }
            .section-label {
                font-size: 18px;
            }
            .chart-title {
                font-size: 20px;
            }

            /* Tooltips and info */
            .info-icon::before {
                width: 250px;
                font-size: 14px;
            }

            /* Reduce padding on smaller screens */
            .chart-container {
                padding: 16px;
            }
            .stat-card {
                padding: 16px;
            }

            /* Help button - ensure good size */
            .help-button {
                min-width: 48px;
                min-height: 48px;
                padding: 14px 20px;
            }

            /* Map controls - increase touch target size */
            .leaflet-control-zoom a {
                width: 44px !important;
                height: 44px !important;
                line-height: 44px !important;
                font-size: 20px !important;
            }

            /* Footer links - increase size */
            .footer-links, .footer-disclaimer {
                font-size: 16px;
            }
            .footer-links a {
                padding: 8px 4px;
                display: inline-block;
            }

            /* Additional font size fixes */
            p, li, span, div, a, label {
                font-size: 16px;
            }
            .stat-label {
                font-size: 14px;
            }
            .tag, .filter-count {
                font-size: 14px;
                padding: 6px 12px;
            }

            /* Info tooltips */
            .info-tooltip-custom {
                font-size: 14px;
            }

            /* Map height - reduce on mobile to fit viewport better */
            #map {
                height: 350px !important;
            }
        }