/* See https://www.dash-mantine-components.com/dash4-components#dark-mode-support
*/
html,
body {
    margin: 0;
    min-height: 100%;
    padding: 0;
}

body {
    background: var(--mantine-color-body);
    overflow-x: hidden;
}

#react-entry-point,
#_dash-app-content {
    min-height: 100vh;
}

.app-shell {
    background: var(--mantine-color-body);
    margin: 0;
    max-width: none;
    min-height: 100vh;
    padding: 0;
    width: 100%;
}

.theme-switch-control .mantine-Switch-body,
.theme-switch-control .mantine-Switch-labelWrapper {
    align-items: center;
}

.theme-switch-control .mantine-Switch-label {
    color: var(--mantine-color-gray-6);
    font-size: 0.95rem;
    line-height: 1;
    transform: translateY(1px);
}

.dmc {
    --Dash-Stroke-Strong: var(--mantine-color-default-border);
    --Dash-Stroke-Weak: var(--mantine-color-disabled);
    --Dash-Fill-Interactive-Strong: var(--mantine-primary-color-filled);
    --Dash-Fill-Inverse-Strong: var(--mantine-color-body);
    --Dash-Text-Primary: var(--mantine-color-text);
    --Dash-Text-Strong: var(--mantine-color-text);
    --Dash-Text-Disabled: var(--mantine-color-dimmed);
    --Dash-Text-Weak: var(--mantine-color-dimmed);
}

:root[data-mantine-color-scheme="dark"] {
    --wttl-dark-bg: #191c1e;
    --wttl-dark-panel: #202427;
    --wttl-dark-section: #252a2d;
    --wttl-dark-section-active: #263331;
    --wttl-dark-input: #2b2f32;
    --wttl-dark-input-hover: #303538;
    --wttl-dark-border: rgba(232, 238, 241, 0.14);
    --wttl-dark-border-strong: rgba(232, 238, 241, 0.24);
    --wttl-dark-text: #e7ecef;
    --wttl-dark-text-muted: rgba(231, 236, 239, 0.68);
    --wttl-dark-text-faint: rgba(231, 236, 239, 0.46);
    --wttl-dark-accent: #4fc3b4;
    --wttl-dark-accent-strong: #69d8ca;
    --wttl-dark-accent-soft: rgba(79, 195, 180, 0.2);
}

:root[data-mantine-color-scheme="dark"] body,
:root[data-mantine-color-scheme="dark"] .app-shell {
    background: var(--wttl-dark-bg);
    color: var(--wttl-dark-text);
}

:root[data-mantine-color-scheme="dark"] .theme-switch-control .mantine-Switch-label {
    color: var(--wttl-dark-text-muted);
}

:root[data-mantine-color-scheme="dark"] .dmc {
    --Dash-Fill-Inverse-Strong: var(--mantine-color-dark-6);
    --Dash-Fill-Weak: rgba(255, 255, 255, 0.06);
    --Dash-Fill-Primary-Hover: rgba(255, 255, 255, 0.08);
    --Dash-Fill-Primary-Active: rgba(255, 255, 255, 0.12);
    --Dash-Fill-Disabled: rgba(255, 255, 255, 0.15);
    --Dash-Stroke-Strong: var(--wttl-dark-border-strong);
    --Dash-Stroke-Weak: var(--wttl-dark-border);
    --Dash-Fill-Interactive-Strong: var(--wttl-dark-accent);
    --Dash-Fill-Interactive-Weak: var(--wttl-dark-accent-soft);
    --Dash-Fill-Inverse-Strong: var(--wttl-dark-panel);
    --Dash-Text-Disabled: var(--wttl-dark-text-faint);
    --Dash-Text-Weak: var(--wttl-dark-text-muted);
}

:root[data-mantine-color-scheme="dark"] .options-accordion {
    --bs-accordion-bg: var(--wttl-dark-panel);
    --bs-accordion-color: var(--wttl-dark-text);
    --bs-accordion-border-color: var(--wttl-dark-border);
    --bs-accordion-btn-bg: var(--wttl-dark-section);
    --bs-accordion-btn-color: var(--wttl-dark-text);
    --bs-accordion-active-bg: var(--wttl-dark-section-active);
    --bs-accordion-active-color: var(--wttl-dark-text);
    --bs-accordion-btn-focus-border-color: var(--wttl-dark-accent);
    --bs-accordion-btn-focus-box-shadow: 0 0 0 0.2rem var(--wttl-dark-accent-soft);
    --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23b8c4c8' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
    --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%2369d8ca' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
    background: var(--wttl-dark-panel);
    border: 1px solid var(--wttl-dark-border);
    border-radius: 6px;
    overflow: hidden;
}

:root[data-mantine-color-scheme="dark"] .options-accordion .accordion-item {
    background: var(--wttl-dark-panel);
    border-color: var(--wttl-dark-border);
    color: var(--wttl-dark-text);
}

:root[data-mantine-color-scheme="dark"] .options-accordion .accordion-button {
    background: var(--wttl-dark-section);
    color: var(--wttl-dark-text);
    font-weight: 500;
    letter-spacing: 0;
}

:root[data-mantine-color-scheme="dark"] .options-accordion .accordion-button:not(.collapsed) {
    background: var(--wttl-dark-section-active);
    color: var(--wttl-dark-text);
    box-shadow: inset 0 -1px 0 var(--wttl-dark-border-strong);
}

:root[data-mantine-color-scheme="dark"] .options-accordion .accordion-button:hover {
    background: var(--wttl-dark-input-hover);
}

:root[data-mantine-color-scheme="dark"] .options-accordion .accordion-body {
    background: var(--wttl-dark-panel);
    color: var(--wttl-dark-text);
}

:root[data-mantine-color-scheme="dark"] .options-accordion input[type="text"]:not(.DateInput_input):not(.dash-datepicker-input),
:root[data-mantine-color-scheme="dark"] .options-accordion .DateRangePickerInput,
:root[data-mantine-color-scheme="dark"] .options-accordion .dash-datepicker-input-wrapper,
:root[data-mantine-color-scheme="dark"] .options-accordion .Select-control {
    background: var(--wttl-dark-input);
    border-color: var(--wttl-dark-border-strong);
    color: var(--wttl-dark-text);
}

:root[data-mantine-color-scheme="dark"] .options-accordion input[type="text"]:not(.DateInput_input):not(.dash-datepicker-input) {
    border: 1px solid var(--wttl-dark-border-strong);
    border-radius: 4px;
    min-height: 38px;
    padding: 6px 10px;
    width: 100%;
}

:root[data-mantine-color-scheme="dark"] .options-accordion input[type="text"]:not(.DateInput_input):not(.dash-datepicker-input)::placeholder,
:root[data-mantine-color-scheme="dark"] .options-accordion .dash-datepicker-input::placeholder,
:root[data-mantine-color-scheme="dark"] .options-accordion .Select-placeholder,
:root[data-mantine-color-scheme="dark"] .options-accordion .DateInput_input::placeholder {
    color: var(--wttl-dark-text-faint);
}

:root[data-mantine-color-scheme="dark"] .options-accordion input[type="text"]:not(.DateInput_input):not(.dash-datepicker-input):focus,
:root[data-mantine-color-scheme="dark"] .options-accordion .Select.is-focused > .Select-control {
    border-color: var(--wttl-dark-accent);
    box-shadow: 0 0 0 0.18rem var(--wttl-dark-accent-soft);
    outline: 0;
}

:root[data-mantine-color-scheme="dark"] .options-accordion .dash-datepicker {
    background: transparent;
    color: var(--wttl-dark-text);
}

:root[data-mantine-color-scheme="dark"] .options-accordion .dash-datepicker-input-wrapper {
    border: 1px solid var(--wttl-dark-border-strong);
    border-radius: 4px;
    min-height: 42px;
    padding: 0 12px;
    width: 100%;
}

:root[data-mantine-color-scheme="dark"] .options-accordion .dash-datepicker-input-wrapper:focus-within {
    border-color: var(--wttl-dark-accent);
    box-shadow: 0 0 0 0.18rem var(--wttl-dark-accent-soft);
}

:root[data-mantine-color-scheme="dark"] .options-accordion .dash-datepicker-input-wrapper:has(:focus-visible) {
    outline: 0;
}

:root[data-mantine-color-scheme="dark"] .options-accordion .dash-datepicker-input {
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    color: var(--wttl-dark-text) !important;
    height: 40px;
    min-height: 0;
    padding: 0;
    width: fit-content;
}

:root[data-mantine-color-scheme="dark"] .options-accordion .dash-datepicker-input:focus,
:root[data-mantine-color-scheme="dark"] .options-accordion .dash-datepicker-input:focus-visible {
    border: 0 !important;
    box-shadow: none !important;
    outline: 0 !important;
}

:root[data-mantine-color-scheme="dark"] .options-accordion .dash-datepicker-range-arrow,
:root[data-mantine-color-scheme="dark"] .options-accordion .dash-datepicker-caret-icon {
    color: var(--wttl-dark-text-muted);
    fill: var(--wttl-dark-text-muted);
}

:root[data-mantine-color-scheme="dark"] .options-accordion .DateRangePickerInput {
    align-items: center;
    border: 1px solid var(--wttl-dark-border-strong);
    border-radius: 4px;
    display: flex;
    min-height: 42px;
    overflow: hidden;
    width: 100%;
}

:root[data-mantine-color-scheme="dark"] .options-accordion .DateRangePickerInput:focus-within {
    border-color: var(--wttl-dark-accent);
    box-shadow: 0 0 0 0.18rem var(--wttl-dark-accent-soft);
}

:root[data-mantine-color-scheme="dark"] .options-accordion .DateInput {
    background: transparent;
    flex: 0 0 132px;
    width: 132px;
}

:root[data-mantine-color-scheme="dark"] .options-accordion .DateInput_input,
:root[data-mantine-color-scheme="dark"] .options-accordion .DateInput_input__focused {
    background: transparent;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    color: var(--wttl-dark-text);
    font-size: 1rem;
    font-weight: 400;
    height: 40px;
    line-height: 1.2;
    min-height: 0;
    padding: 8px 12px;
    width: 100%;
}

:root[data-mantine-color-scheme="dark"] .options-accordion .DateInput_input:focus {
    background: transparent;
    border: 0;
    box-shadow: none;
    outline: 0;
}

:root[data-mantine-color-scheme="dark"] .options-accordion .DateRangePickerInput_arrow {
    color: var(--wttl-dark-text-muted);
    display: inline-flex;
    flex: 0 0 auto;
}

:root[data-mantine-color-scheme="dark"] .options-accordion .DateRangePickerInput_arrow_svg {
    fill: var(--wttl-dark-text-muted);
    height: 18px;
    width: 18px;
}

:root[data-mantine-color-scheme="dark"] .options-accordion .Select-menu-outer {
    background: var(--wttl-dark-input);
    border-color: var(--wttl-dark-border-strong);
    color: var(--wttl-dark-text);
}

:root[data-mantine-color-scheme="dark"] .options-accordion .Select-value-label,
:root[data-mantine-color-scheme="dark"] .options-accordion .Select-input > input,
:root[data-mantine-color-scheme="dark"] .options-accordion .VirtualizedSelectOption {
    color: var(--wttl-dark-text) !important;
}

:root[data-mantine-color-scheme="dark"] .options-accordion .VirtualizedSelectFocusedOption {
    background: var(--wttl-dark-section-active);
}

:root[data-mantine-color-scheme="dark"] .options-accordion .Select--multi .Select-value {
    background: rgba(79, 195, 180, 0.12);
    border-color: rgba(79, 195, 180, 0.34);
    color: var(--wttl-dark-text);
}

:root[data-mantine-color-scheme="dark"] .options-accordion input[type="radio"],
:root[data-mantine-color-scheme="dark"] .options-accordion input[type="checkbox"] {
    accent-color: var(--wttl-dark-accent);
}

:root[data-mantine-color-scheme="dark"] .options-accordion .rc-slider-rail {
    background: rgba(231, 236, 239, 0.18);
}

:root[data-mantine-color-scheme="dark"] .options-accordion .rc-slider-track {
    background: var(--wttl-dark-accent);
}

:root[data-mantine-color-scheme="dark"] .options-accordion .rc-slider-handle {
    background: var(--wttl-dark-accent);
    border-color: var(--wttl-dark-accent-strong);
    box-shadow: 0 0 0 2px rgba(25, 28, 30, 0.9);
}

:root[data-mantine-color-scheme="dark"] .options-accordion .rc-slider-handle:focus-visible {
    box-shadow: 0 0 0 4px var(--wttl-dark-accent-soft);
}

:root[data-mantine-color-scheme="dark"] .leaflet-control-layers,
:root[data-mantine-color-scheme="dark"] .leaflet-bar,
:root[data-mantine-color-scheme="dark"] .map-gesture-panel-toggle,
:root[data-mantine-color-scheme="dark"] .map-gesture-panel {
    background: rgba(32, 36, 39, 0.96);
    border: 1px solid var(--wttl-dark-border-strong);
    border-radius: 6px;
    box-shadow: 0 10px 24px rgba(0, 0, 0, 0.28);
    color: var(--wttl-dark-text);
}

:root[data-mantine-color-scheme="dark"] .leaflet-control-layers,
:root[data-mantine-color-scheme="dark"] .map-gesture-panel {
    backdrop-filter: blur(8px);
}

:root[data-mantine-color-scheme="dark"] .leaflet-control-layers-expanded {
    padding: 10px 12px;
}

:root[data-mantine-color-scheme="dark"] .leaflet-control-layers label {
    align-items: center;
    color: var(--wttl-dark-text);
    display: flex;
    gap: 7px;
    line-height: 1.25;
    margin: 5px 0;
}

:root[data-mantine-color-scheme="dark"] .leaflet-control-layers label:hover {
    color: var(--wttl-dark-accent-strong);
}

:root[data-mantine-color-scheme="dark"] .leaflet-control-layers-list {
    color: var(--wttl-dark-text);
}

:root[data-mantine-color-scheme="dark"] .leaflet-control-layers-separator {
    border-top-color: var(--wttl-dark-border);
}

:root[data-mantine-color-scheme="dark"] .leaflet-control-layers-selector {
    appearance: none;
    background: var(--wttl-dark-input);
    border: 1px solid var(--wttl-dark-border-strong);
    border-radius: 3px;
    box-shadow: none;
    flex: 0 0 auto;
    height: 14px;
    margin: 0;
    width: 14px;
}

:root[data-mantine-color-scheme="dark"] .leaflet-control-layers-selector[type="radio"] {
    border-radius: 50%;
}

:root[data-mantine-color-scheme="dark"] .leaflet-control-layers-selector:checked {
    background-color: var(--wttl-dark-accent);
    border-color: var(--wttl-dark-accent);
}

:root[data-mantine-color-scheme="dark"] .leaflet-control-layers-selector[type="checkbox"]:checked {
    background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 14 14' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M3.1 7.2 5.8 9.8 10.9 4' fill='none' stroke='%2310211f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3e%3c/svg%3e");
    background-position: center;
    background-repeat: no-repeat;
    background-size: 12px 12px;
}

:root[data-mantine-color-scheme="dark"] .leaflet-control-layers-selector[type="radio"]:checked {
    box-shadow: inset 0 0 0 3px var(--wttl-dark-input);
}

:root[data-mantine-color-scheme="dark"] .leaflet-control-layers-selector:focus-visible {
    outline: 2px solid var(--wttl-dark-accent);
    outline-offset: 2px;
}

:root[data-mantine-color-scheme="dark"] .leaflet-control-layers-toggle {
    background-color: var(--wttl-dark-panel);
    border-radius: 5px;
    filter: invert(1) hue-rotate(160deg) saturate(0.6);
}

:root[data-mantine-color-scheme="dark"] .leaflet-bar a,
:root[data-mantine-color-scheme="dark"] .leaflet-bar a:hover,
:root[data-mantine-color-scheme="dark"] .leaflet-bar button,
:root[data-mantine-color-scheme="dark"] .leaflet-bar button:hover {
    background: var(--wttl-dark-panel);
    border-bottom-color: var(--wttl-dark-border);
    color: var(--wttl-dark-text);
}

:root[data-mantine-color-scheme="dark"] .leaflet-bar a:hover,
:root[data-mantine-color-scheme="dark"] .leaflet-bar button:hover,
:root[data-mantine-color-scheme="dark"] .map-gesture-panel-toggle:hover,
:root[data-mantine-color-scheme="dark"] .map-gesture-panel-toggle:focus-visible {
    background: var(--wttl-dark-section-active);
    color: var(--wttl-dark-accent-strong);
}

:root[data-mantine-color-scheme="dark"] .leaflet-bar a:focus-visible,
:root[data-mantine-color-scheme="dark"] .leaflet-bar button:focus-visible,
:root[data-mantine-color-scheme="dark"] .map-gesture-panel-toggle:focus-visible {
    box-shadow: 0 0 0 3px var(--wttl-dark-accent-soft);
    outline: none;
}

:root[data-mantine-color-scheme="dark"] .leaflet-control-fullscreen a,
:root[data-mantine-color-scheme="dark"] .leaflet-control-fullscreen-button,
:root[data-mantine-color-scheme="dark"] .fullscreen-icon {
    background-color: var(--wttl-dark-panel);
    background-image: none !important;
    color: var(--wttl-dark-text);
    position: relative;
}

:root[data-mantine-color-scheme="dark"] .leaflet-control-fullscreen a::before,
:root[data-mantine-color-scheme="dark"] .leaflet-control-fullscreen-button::before,
:root[data-mantine-color-scheme="dark"] .fullscreen-icon::before {
    border: 2px solid var(--wttl-dark-text);
    border-bottom-width: 0;
    border-right-width: 0;
    content: "";
    height: 13px;
    inset: 8px auto auto 8px;
    position: absolute;
    width: 13px;
}

:root[data-mantine-color-scheme="dark"] .leaflet-control-fullscreen a::after,
:root[data-mantine-color-scheme="dark"] .leaflet-control-fullscreen-button::after,
:root[data-mantine-color-scheme="dark"] .fullscreen-icon::after {
    border: 2px solid var(--wttl-dark-text);
    border-left-width: 0;
    border-top-width: 0;
    content: "";
    height: 13px;
    inset: auto 8px 8px auto;
    position: absolute;
    width: 13px;
}

:root[data-mantine-color-scheme="dark"] .leaflet-control-fullscreen a:hover::before,
:root[data-mantine-color-scheme="dark"] .leaflet-control-fullscreen a:hover::after,
:root[data-mantine-color-scheme="dark"] .leaflet-control-fullscreen-button:hover::before,
:root[data-mantine-color-scheme="dark"] .leaflet-control-fullscreen-button:hover::after,
:root[data-mantine-color-scheme="dark"] .fullscreen-icon:hover::before,
:root[data-mantine-color-scheme="dark"] .fullscreen-icon:hover::after {
    border-color: var(--wttl-dark-accent-strong);
}

:root[data-mantine-color-scheme="dark"] .map-gesture-panel-toggle {
    min-height: 34px;
}

:root[data-mantine-color-scheme="dark"] .map-gesture-panel-toggle.is-active {
    color: var(--wttl-dark-accent-strong);
}

:root[data-mantine-color-scheme="dark"] .map-gesture-panel__copy,
:root[data-mantine-color-scheme="dark"] .map-gesture-panel__list,
:root[data-mantine-color-scheme="dark"] .map-gesture-control-status {
    color: var(--wttl-dark-text-muted);
}

:root[data-mantine-color-scheme="dark"] .map-gesture-action-button {
    background: var(--wttl-dark-accent);
    color: #10211f;
}

:root[data-mantine-color-scheme="dark"] .map-gesture-action-button:hover,
:root[data-mantine-color-scheme="dark"] .map-gesture-action-button:focus-visible {
    background: var(--wttl-dark-accent-strong);
}

:root[data-mantine-color-scheme="dark"] .map-gesture-action-button:focus-visible {
    box-shadow: 0 0 0 3px var(--wttl-dark-accent-soft);
}

:root[data-mantine-color-scheme="dark"] .map-gesture-action-button.is-active {
    background: var(--wttl-dark-section);
    color: var(--wttl-dark-text);
}

:root[data-mantine-color-scheme="dark"] .map-gesture-control-status {
    background: var(--wttl-dark-section);
    border: 1px solid var(--wttl-dark-border);
}

:root[data-mantine-color-scheme="dark"] .parking-tickets-legend,
:root[data-mantine-color-scheme="dark"] .lahd-property-legend {
    background: rgba(32, 36, 39, 0.96) !important;
    border-color: var(--wttl-dark-border-strong) !important;
    box-shadow: 0 10px 24px rgba(0, 0, 0, 0.28) !important;
    color: var(--wttl-dark-text) !important;
}

:root[data-mantine-color-scheme="dark"] .parking-tickets-legend__caption,
:root[data-mantine-color-scheme="dark"] .parking-tickets-legend__hint,
:root[data-mantine-color-scheme="dark"] .parking-tickets-legend__range,
:root[data-mantine-color-scheme="dark"] .parking-tickets-legend__label,
:root[data-mantine-color-scheme="dark"] .lahd-property-legend [style*="color: #556270"],
:root[data-mantine-color-scheme="dark"] .lahd-property-legend [style*="color:#556270"],
:root[data-mantine-color-scheme="dark"] .lahd-property-legend [style*="color: #1f2d3a"],
:root[data-mantine-color-scheme="dark"] .lahd-property-legend [style*="color:#1f2d3a"] {
    color: var(--wttl-dark-text-muted) !important;
}
