/* Scoped to the standalone map document, including dynamically created popups. */
.map-theme-switcher {
  position: fixed; left: 50%; bottom: max(16px, env(safe-area-inset-bottom));
  transform: translateX(-50%); z-index: 10006; min-height: 44px;
  padding: 10px 16px; border: 1px solid #d1d5db; border-radius: 24px;
  background: #fff; color: #272727; font: 600 13px/1.4 Arial, sans-serif;
  cursor: pointer; box-shadow: 0 4px 16px #1c1c1c26;
  opacity: 1;
  visibility: visible;
  transition: transform 150ms ease, opacity 150ms ease, visibility 150ms;
}
.map-theme-switcher.is-scroll-hidden {
  transform: translate(-50%, 20px);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
@media (prefers-reduced-motion: reduce) {
  .map-theme-switcher { transition: none; }
}
.map-theme-switcher:focus-visible { outline: 3px solid #8bbcff; outline-offset: 3px; }
html[data-map-theme="dark"] {
  color-scheme: dark;
  --map-base: #1c1c1c;
  --map-canvas: #303030;
  --map-surface: #272727;
  --map-raised: #323232;
  --map-hover: #404040;
  --map-border: #52685b;
  --map-text: #eeeeee;
  --map-muted: #bcbcbc;
  --map-selected-fill: #b87532;
  background: var(--map-canvas);
}
html[data-map-theme="dark"] :is(body, #root, .main-container, .map-container, #map-wrapper, #registry-root, #ymaps-overlay, #ymap, ._block_1ixfo_1, ._block_zt7si_1) {
  background: var(--map-canvas) !important; color: var(--map-text) !important;
}
/* The SVG has its own opaque background in addition to its HTML containers. */
html[data-map-theme="dark"] #root svg rect[fill="#F4F5F8"] {
  fill: var(--map-canvas) !important;
}
/* Native controls and PrimeReact controls, including panels portalled to body. */
html[data-map-theme="dark"] :is(button, input, select, textarea, option, optgroup, .p-button, .p-inputtext, .p-dropdown, .p-dropdown-label, .p-dropdown-trigger, .p-multiselect, .p-multiselect-label, .p-multiselect-trigger, .p-checkbox-box, .p-radiobutton-box) {
  background: var(--map-raised) !important;
  color: var(--map-text) !important;
  border-color: var(--map-border) !important;
  color-scheme: dark;
  accent-color: #8bbcff;
}
html[data-map-theme="dark"] :is(.p-dropdown-panel, .p-dropdown-header, .p-dropdown-items, .p-dropdown-empty-message, .p-multiselect-panel, .p-multiselect-header, .p-multiselect-items, .p-multiselect-empty-message, .p-autocomplete-panel, .p-autocomplete-items, .rf-multi-menu) {
  background: var(--map-surface) !important;
  color: var(--map-text) !important;
  border-color: var(--map-border) !important;
}
html[data-map-theme="dark"] :is(.p-dropdown-item, .p-dropdown-item-group, .p-multiselect-item, .p-multiselect-item-group, .p-autocomplete-item, .rf-option) {
  background: var(--map-surface) !important; color: var(--map-text) !important;
}
html[data-map-theme="dark"] :is(button, .p-button, .p-dropdown-item, .p-multiselect-item, .p-autocomplete-item, .rf-option):not(:disabled):not(.p-disabled):hover {
  background: var(--map-hover) !important;
}
html[data-map-theme="dark"] :is(.p-dropdown-item.p-highlight, .p-multiselect-item.p-highlight, .p-autocomplete-item.p-highlight, .rf-option.selected, .rf-chip-mini, .rf-chip-mini .x, .p-multiselect-token) {
  background: #40536a !important; color: var(--map-text) !important; border-color: #8bbcff !important;
}
html[data-map-theme="dark"] :is(button, input, select, textarea, .p-dropdown, .p-multiselect):focus-visible,
html[data-map-theme="dark"] :is(.p-dropdown, .p-multiselect).p-focus {
  outline: 2px solid #8bbcff !important; outline-offset: 2px;
  box-shadow: none !important;
}
html[data-map-theme="dark"] :is(button, input, select, textarea):disabled,
html[data-map-theme="dark"] .p-disabled { opacity: 0.55; cursor: not-allowed; }
html[data-map-theme="dark"] :is(.p-dropdown-filter-icon, .p-dropdown-clear-icon, .p-dropdown-trigger-icon, .p-multiselect-trigger-icon) { color: var(--map-muted) !important; }
html[data-map-theme="dark"] :is(.header, .mobile-nav, .mobile-control-bar, #filter-panel, .filter-panel, .search-dropdown, .mobile-search-popup, #region-tooltip, .region-info-panel, .ymaps-info, .route-card, .ymaps-filter-panel, .ymaps-title, .registry-filters, .reg-card, .reg-row, .rm-content, .tippy-box, [class*="balloon__layout"], [class*="balloon__content"], [class*="balloon__tail"]:after) {
  background: var(--map-surface) !important; color: var(--map-text) !important;
  border-color: var(--map-border) !important; box-shadow: 0 8px 28px #1c1c1c66 !important;
}
/* Text overrides also cover inline colors in asynchronously rendered route details. */
html[data-map-theme="dark"] .reg-card-top {
  background: var(--map-raised) !important;
  color: var(--map-text) !important;
}
/* The top map toolbar shares the canvas background without a dark shadow strip. */
html[data-map-theme="dark"] :is(.header, ._header_1ixfo_5) {
  background: var(--map-canvas) !important;
  border-color: var(--map-canvas) !important;
  box-shadow: none !important;
}
/* Keep the space between the independent toolbar controls transparent. */
html[data-map-theme="dark"] .control-panel {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
}
html[data-map-theme="dark"] :is(.header, .mobile-nav, .mobile-control-bar, .control-panel, #filter-panel, .search-dropdown, .mobile-search-popup, #region-tooltip, .region-info-panel, .ymaps-info, .route-card, .ymaps-filter-panel, #registry-root, .registry-modal, [class*="balloon__content"]) :is(h1,h2,h3,h4,p,span,label,strong,b,div,li,a,button,input,select) {
  color: var(--map-text) !important; border-color: var(--map-border) !important;
}
html[data-map-theme="dark"] :is(.rc-header, .rc-footer, .rm-header, .hdr, .filter-panel-header, .search-dropdown-header, .rf-multi-dropdown, .rf-multi-menu, .reg-chip, .reg-badge, .rc-chip, .chip, .rip-chip, .rm-spec, .rm-map, .filter-option-count, .ri, .cnt, .rc-infra-item, .rc-poi-item, .rc-section, .view-switcher, .switcher-slider) {
  background: var(--map-raised) !important; color: var(--map-text) !important;
  border-color: var(--map-border) !important;
}
html[data-map-theme="dark"] :is(.map-theme-switcher, .search-input, .mobile-search-input, .rf-multi-trigger, .registry-filters input, .registry-filters select, .filter-button, #map-controls button, .ymaps-back, .rc-btn, .rc-secondary, .filter-reset, .rip-btn, .iv-close, .mobile-search-close, .pagination button, .registry-btn-back, [class*="zoom__button"], [class*="control__button"]) {
  background: var(--map-raised) !important; color: var(--map-text) !important; border-color: var(--map-border) !important;
}
html[data-map-theme="dark"] :is(.search-dropdown-item, .filter-option, .rf-multi-option, .rip-chip, .ri, .ci, .rc-btn, .rc-secondary, .map-theme-switcher, .pagination button):hover {
  background: var(--map-hover) !important;
}
html[data-map-theme="dark"] :is(.metric-label, .rip-label, .rmeta, .subhdr, .search-dropdown-item-subtitle, .rf-section-title, .filter-section-title, .reg-subtitle, .logo-subtitle) {
  color: var(--map-muted) !important;
}
html[data-map-theme="dark"] input::placeholder { color: var(--map-muted) !important; }
/* Subtle status badge in both grid and list views. */
html[data-map-theme="dark"] #registry-root :is(.reg-passport-badge, .passport-chip) {
  background: #30413a !important;
  color: #b9d3c4 !important;
  border: 1px solid var(--map-border) !important;
  box-shadow: none !important;
  font-weight: 500;
}
html[data-map-theme="dark"] :is(.registry-modal, .img-viewer, .mobile-search-overlay) { background: #1c1c1cbf !important; }
html[data-map-theme="dark"] :is(.rc-primary, .reg-more, .rm-cta .btn, .rm-head-cta .btn, .ymaps-filters, .filter-apply, .pagination button.active) {
  background: #426b9c !important; color: #fff !important;
}
/* Only the raster ground layer is toned: routes, markers, photos and controls retain their colors. */
html[data-map-theme="dark"] [class*="ground-pane"] { filter: invert(0.88) hue-rotate(180deg) saturate(0.35) brightness(1.15); }
/* Keep selected/search/filter region colors supplied by the map interaction code. */
html[data-map-theme="dark"] #root svg :is(path[id*="RU-"], path[id*="RU_"], path[data-region], path[class*="segment"], g[id*="RU-"] path, polygon[id*="RU-"]):not(.region-selected):not(.region-matched):not(.region-search-matched):not(:hover) {
  fill: #3c3c3c !important; stroke: #727272 !important;
}
html[data-map-theme="dark"] #root svg .region-filtered { fill: #2b2b2b !important; }
html[data-map-theme="dark"] #root svg :is(path[id*="RU-"], path[id*="RU_"], path[data-region], path[class*="segment"], g[id*="RU-"] path, polygon[id*="RU-"]):is(:hover, :focus, :focus-visible, .region-hover-outline, .region-selected),
html[data-map-theme="dark"] #root svg :is(g[id*="RU-"], g[data-region]):is(:hover, :focus-within) path {
  fill: var(--map-selected-fill) !important;
  stroke: #ffa033 !important;
  stroke-width: 1.6px !important;
}
html[data-map-theme="dark"] #root svg text { fill: var(--map-text) !important; }
html[data-map-theme="dark"] * { scrollbar-color: #626262 #272727; }
html[data-map-theme="dark"] input[type="checkbox"] {
  accent-color: var(--map-selected-fill) !important;
}
html[data-map-theme="dark"] .p-checkbox.p-highlight .p-checkbox-box,
html[data-map-theme="dark"] .p-checkbox .p-checkbox-box.p-highlight,
html[data-map-theme="dark"] .p-checkbox:has(input:checked) .p-checkbox-box {
  background: var(--map-selected-fill) !important;
  border-color: #ffa033 !important;
  color: #1c1c1c !important;
}
html[data-map-theme="dark"] .p-checkbox:has(input:checked) .p-checkbox-icon {
  color: #1c1c1c !important;
}
/* Keep mouse, keyboard and composite-field focus in the graphite palette. */
html[data-map-theme="dark"] body :is(input, textarea, select, .p-inputtext):focus,
html[data-map-theme="dark"] body :is(.p-dropdown, .p-multiselect).p-focus,
html[data-map-theme="dark"] body .rf-trigger-input:focus-within {
  background: var(--map-raised) !important;
  color: var(--map-text) !important;
  border-color: #858585 !important;
  outline: 2px solid #858585 !important;
  outline-offset: 2px;
  box-shadow: none !important;
  caret-color: var(--map-text);
}
/* A compound select has one focus ring around the whole field. */
html[data-map-theme="dark"] body .rf-trigger-input input:focus {
  outline: none !important;
}
/* Match the passport badge border across map buttons and popup actions. */
html[data-map-theme="dark"] :is(body, #registry-root, #ymaps-overlay, #filter-panel) :is(button, [role="button"], .btn, .p-button, .registry-btn-back, input[type="button"], input[type="submit"], input[type="reset"]) {
  border: 1px solid var(--map-border) !important;
}
html[data-map-theme="dark"] :is(#mobile-search-btn, #mobile-filter-btn, #mobile-view-btn).active,
html[data-map-theme="dark"] :is(#mobile-search-btn, #mobile-filter-btn, #mobile-view-btn).active :is(.mobile-control-icon, .mobile-control-label) {
  color: var(--map-selected-fill) !important;
}
html[data-map-theme="dark"] :is(#mobile-search-btn, #mobile-filter-btn, #mobile-view-btn).active::before {
  background: var(--map-selected-fill) !important;
}
/* Compact badges and unframed utility actions in the dark map UI. */
html[data-map-theme="dark"] :is(body, #registry-root, #ymaps-overlay, #filter-panel) :is(.reg-badge, .reg-passport-badge, .passport-chip, .reg-chip, .rc-chip, .chip, .rip-chip, .rf-chip-mini, .thumb-badge, .filter-count, .filter-option-count, .cnt) {
  padding-inline: 12px !important;
  padding-block: calc(var(--badge-base-py, 0px) + 4px) !important;
  border: none !important;
  box-shadow: none !important;
}
html[data-map-theme="dark"] .reg-chip { --badge-base-py: 3px; }
html[data-map-theme="dark"] :is(.reg-badge, .reg-passport-badge, .rip-chip, .cnt) { --badge-base-py: 4px; }
html[data-map-theme="dark"] :is(.rc-chip, .chip) { --badge-base-py: 6px; }
html[data-map-theme="dark"] :is(.passport-chip, .thumb-badge) { --badge-base-py: 2px; }
html[data-map-theme="dark"] .rf-chip-mini { height: auto; min-height: 30px; }
html[data-map-theme="dark"] :is(body, #registry-root, #ymaps-overlay, #filter-panel) :is(.rf-clear, .registry-toolbar-clear, .filter-clear, .search-clear, .rf-trigger-input .clear, .rf-chip-mini .x, .rm-close, .iv-close, .rip-close, .mobile-search-close, #rc-close, #rc-hide, .filter-option-count) {
  border: none !important;
  box-shadow: none !important;
  background: transparent !important;
  color: var(--map-muted) !important;
}
/* One border for each field, including custom selects and segmented controls. */
html[data-map-theme="dark"] :is(body, #registry-root, #ymaps-overlay, #filter-panel) input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not(.rf-region-input):not(.rf-city-input),
html[data-map-theme="dark"] :is(body, #registry-root, #ymaps-overlay, #filter-panel) :is(textarea, select, .rf-multi-trigger, .p-dropdown, .p-multiselect, .view-switcher, .view-toggle, .rf-multi-menu, .p-dropdown-panel, .p-multiselect-panel, .search-dropdown) {
  border: 1px solid var(--map-border) !important;
}
/* Embedded text inputs share the wrapper border instead of drawing a second one. */
html[data-map-theme="dark"] :is(body, #registry-root, #ymaps-overlay, #filter-panel) :is(.rf-trigger-input, .p-dropdown, .p-multiselect) input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]) {
  border: none !important;
}
html[data-map-theme="dark"] #registry-root .rf-multi-trigger.rf-trigger-input > input.rf-region-input,
html[data-map-theme="dark"] #registry-root .rf-multi-trigger.rf-trigger-input > input.rf-city-input {
  border: 0 !important;
  outline: none !important;
  box-shadow: none !important;
  background: transparent !important;
  border-radius: 0 !important;
}
/* Route details use inline light colors in JS-generated child tiles. */
html[data-map-theme="dark"] #ymaps-overlay .route-card :is(.rc-meta, .rc-infra) > div {
  background: var(--map-raised) !important;
  color: var(--map-text) !important;
  border-color: var(--map-border) !important;
}
html[data-map-theme="dark"] #ymaps-overlay .route-card .rc-meta > div > div:last-child {
  color: var(--map-muted) !important;
}
html[data-map-theme="dark"] #ymaps-overlay .route-card .rc-line {
  background: var(--map-border) !important;
}
@media (max-width: 768px) {
  .map-theme-switcher { bottom: max(76px, calc(env(safe-area-inset-bottom) + 60px)); font-size: 12px; }
}






