/* Semantic interface colors; data colors are managed separately. */
:root {
    color-scheme: light;
    --regic-surface: #fff;
    --regic-canvas: #f5f8fa;
    --regic-text: #203447;
    --regic-divider: #dfe7ec;
    --regic-muted: #536a7b;
    --regic-accent: #24475e;
    --regic-focus: #008aac;
    --regic-link: #006c85;
    --regic-input-border: #b7c7d2;
    --regic-input-surface: #f7fafb;
    --regic-placeholder: #5b7180;
    --regic-results-border: #c5d0d8;
    --regic-results-shadow: #19364c22;
    --regic-results-divider: #e7edf1;
    --regic-subtle: #edf3f6;
    --regic-secondary: #345366;
    --regic-icon-hover: #eaf0f4;
    --regic-tab-text: #466073;
    --regic-select-border: #bac9d2;
    --regic-button-hover: #dfeaf0;
    --regic-track: #edf2f4;
    --regic-map-surface: #e9f0f2;
    --regic-map-overlay: #ffffffed;
    --regic-map-shadow: #20344717;
    --regic-kicker: #627787;
    --regic-row-hover: #f6f9fa;
    --regic-panel-shadow: #183d5629;
    --regic-check-accent: #12836e;
    --regic-hint: #536777;
    --regic-inline-border: #8da3b0;
    --regic-inline-link: #175979;
    --regic-outline-key: #183f55;
    --regic-parent-key: #a85416;
    --regic-frame-border: #bbcbd5;
    --regic-warning-surface: #fff6df;
    --regic-warning-border: #dfc687;
    --regic-table-border: #e3eaf0;
    --regic-outgoing: #a64f19;
    --regic-incoming: #006b82;
    --regic-simulation-label: #8a4a19;
    --regic-simulation-surface: #fff7e9;
    --regic-simulation-border: #e4cba0;
    --regic-simulation-text: #805018;
}
:root[data-theme="dark"] {
    color-scheme: dark;
    --regic-surface: #0f172a;
    --regic-canvas: #020617;
    --regic-text: #e2e8f0;
    --regic-divider: #334155;
    --regic-muted: #aebed0;
    --regic-accent: #93c5fd;
    --regic-focus: #38bdf8;
    --regic-link: #7dd3fc;
    --regic-input-border: #64748b;
    --regic-input-surface: #1e293b;
    --regic-placeholder: #aebed0;
    --regic-results-border: #475569;
    --regic-results-shadow: #00000055;
    --regic-results-divider: #334155;
    --regic-subtle: #1e293b;
    --regic-secondary: #cbd5e1;
    --regic-icon-hover: #334155;
    --regic-tab-text: #cbd5e1;
    --regic-select-border: #64748b;
    --regic-button-hover: #334155;
    --regic-track: #334155;
    --regic-map-surface: #111c2b;
    --regic-map-overlay: #0f172aee;
    --regic-map-shadow: #00000044;
    --regic-kicker: #aebed0;
    --regic-row-hover: #1e293b;
    --regic-panel-shadow: #00000066;
    --regic-check-accent: #5eead4;
    --regic-hint: #aebed0;
    --regic-inline-border: #64748b;
    --regic-inline-link: #7dd3fc;
    --regic-outline-key: #93c5fd;
    --regic-parent-key: #fdba74;
    --regic-frame-border: #64748b;
    --regic-warning-surface: #33260e;
    --regic-warning-border: #947332;
    --regic-table-border: #334155;
    --regic-outgoing: #fdba74;
    --regic-incoming: #67e8f9;
    --regic-simulation-label: #fdba74;
    --regic-simulation-surface: #302212;
    --regic-simulation-border: #8c6239;
    --regic-simulation-text: #fed7aa;
}

:root{font-family:"Segoe UI",Arial,sans-serif;color:var(--regic-text);background:var(--regic-canvas);font-size:14px;--topbar-height:76px;--sidebar-width:292px;--details-width:366px;--line:var(--regic-divider);--muted:var(--regic-muted);--accent:var(--regic-accent)}
*{box-sizing:border-box}body{margin:0;height:100dvh;overflow:hidden;display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);grid-template-rows:var(--topbar-height) minmax(0,1fr)}body[data-selected=true]{grid-template-columns:var(--sidebar-width) minmax(0,1fr) var(--details-width)}[hidden]{display:none!important}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--regic-focus);outline-offset:2px}button:disabled{cursor:default;opacity:.5}a{color:var(--regic-link);line-height:1.6}p{line-height:1.55}h1,h2,h3,h4{line-height:1.3}h2{font-size:15px;margin:0}h3{font-size:15px}h4{font-size:14px}.hint{font-size:12px;line-height:1.5;color:var(--muted)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.app-topbar{grid-column:1/-1;grid-row:1;display:flex;align-items:center;gap:28px;padding:12px 24px;background:var(--regic-surface);border-bottom:1px solid var(--line);z-index:800}.app-brand{min-width:244px}.brand{font-size:11px;line-height:1.2;font-weight:600;color:var(--muted)}.app-brand h1{font-size:20px;line-height:1.2;margin:4px 0 0;font-weight:600}.search-wrap{position:relative;width:min(520px,100%)}input[type=search]{width:100%;height:42px;border:1px solid var(--regic-input-border);background:var(--regic-input-surface);border-radius:6px;padding:10px 14px;color:var(--regic-text)}input::placeholder{color:var(--regic-placeholder)}#results:empty{display:none}#results{position:absolute;top:47px;left:0;right:0;max-height:320px;overflow:auto;background:var(--regic-surface);border:1px solid var(--regic-results-border);border-radius:6px;box-shadow:0 7px 20px var(--regic-results-shadow);z-index:1200}#results button{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid var(--regic-results-divider);background:var(--regic-surface);padding:12px 14px;color:var(--regic-text)}#results button:hover{background:var(--regic-subtle)}#results p{padding:0 14px}#toggle-filters{display:none}
.control-panel{grid-row:2;grid-column:1;background:var(--regic-surface);border-right:1px solid var(--line);display:flex;flex-direction:column;min-width:0;min-height:0;z-index:600}.control-fixed{padding:17px 18px 15px;border-bottom:1px solid var(--line);flex-shrink:0}.panel-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px}.panel-title h2{font-size:14px;font-weight:600}.icon-button{border:0;background:transparent;color:var(--regic-secondary);border-radius:5px;min-width:36px;height:36px;font-size:25px;line-height:1}.icon-button:hover{background:var(--regic-icon-hover)}#close-filters{display:none}.view-switch{display:flex;background:var(--regic-subtle);border-radius:6px;padding:3px;gap:3px;margin-bottom:15px}.view-switch button{flex:1;border:0;border-radius:4px;min-height:34px;font-size:12px;font-weight:600;background:transparent;color:var(--regic-tab-text);padding:7px 5px}.view-switch button[aria-pressed=true]{background:var(--regic-accent);color:var(--regic-surface)}.view-switch button:hover{filter:brightness(.96)}.controls>label:not(.check-label),#relationship-controls label{display:block;font-size:12px;font-weight:600;margin:0 0 6px}select{height:38px;width:100%;border:1px solid var(--regic-select-border);border-radius:5px;padding:7px 9px;background:var(--regic-surface);color:var(--regic-text)}#relationship-controls{margin-top:12px}.check-label{display:flex!important;align-items:center;gap:8px;font-size:12px;font-weight:400!important;margin:12px 0}.check-label input,.type-row input{accent-color:var(--regic-accent);width:16px;height:16px;flex-shrink:0;margin:0}.reset{background:var(--regic-subtle);color:var(--regic-accent);border:0;border-radius:5px;padding:8px 10px;min-height:34px;font-size:12px;width:100%;font-weight:600}.reset:hover{background:var(--regic-button-hover)}.control-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain}.control-scroll section{padding:17px 18px}.control-scroll footer{padding:16px 18px;border-top:1px solid var(--line);font-size:12px;line-height:1.5;color:var(--muted)}summary{cursor:pointer}.control-scroll footer summary{font-weight:600;color:var(--regic-secondary)}.boundary-status{font-size:11px;line-height:1.4;color:var(--regic-muted);background:var(--regic-input-surface);padding:8px 18px;border-top:1px solid var(--line);flex-shrink:0;min-height:31px}.boundary-status:empty{display:none}
.type-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}.type-heading h2{font-size:14px}.type-heading button{border:0;background:transparent;color:var(--regic-link);text-decoration:underline;font-size:11px;padding:4px 0}.area-caption{font-size:11px;color:var(--muted);margin:4px 0 12px}.type-row{margin-top:12px}.type-row label{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;min-height:23px;cursor:pointer}.type-swatch{height:10px;width:10px;border-radius:2px;flex-shrink:0}.type-numbers{display:flex;gap:4px;align-items:baseline;flex-wrap:wrap;margin:3px 0 6px 22px;color:var(--muted);font-size:11px}.type-numbers strong{color:var(--regic-text);font-size:12px;margin-left:6px}.type-numbers strong:first-child{margin-left:0}.type-track{height:4px;overflow:hidden;background:var(--regic-track);margin-left:22px}.type-track div{height:100%}.reading-help{font-size:11px;color:var(--muted);line-height:1.5;margin-top:18px}.reading-help summary{color:var(--regic-secondary);font-weight:600}.reading-help p{margin:8px 0}.legend-row{display:flex;align-items:center;gap:10px;font-size:12px;margin-top:14px}.swatch{width:11px;height:11px;border-radius:50%;flex-shrink:0}
.map-stage{grid-column:2;grid-row:2;position:relative;min-width:0;min-height:0;overflow:hidden;background:var(--regic-map-surface)}#map{height:100%;width:100%;background:var(--regic-map-surface)}.map-note{position:absolute;top:14px;left:14px;background:var(--regic-map-overlay);border-radius:5px;z-index:500;padding:10px 12px;box-shadow:0 2px 9px var(--regic-map-shadow);max-width:260px;font-size:12px;font-weight:600}.map-note #map-unit{display:block;font-size:11px;line-height:1.45;font-weight:400;color:var(--regic-muted);margin-top:4px}.map-note #map-unit[hidden]{display:none}#status{position:absolute;z-index:500;bottom:24px;left:14px;background:var(--regic-map-overlay);padding:8px 11px;border-radius:5px;max-width:calc(100% - 28px);font-size:11px;line-height:1.4;box-shadow:0 2px 9px var(--regic-map-shadow)}#map-tip{position:absolute;z-index:500;left:50%;bottom:74px;transform:translateX(-50%);width:max-content;max-width:calc(100% - 30px);background:var(--regic-map-overlay);padding:9px 13px;border-radius:5px;font-size:12px;color:var(--regic-secondary);text-align:center;pointer-events:none}.flow-canvas{pointer-events:none}.city-label{white-space:nowrap;pointer-events:none;background:none;border:0;box-shadow:none;color:var(--regic-text);font-weight:600;font-size:12px;text-shadow:0 1px var(--regic-surface),1px 0 var(--regic-surface),0 -1px var(--regic-surface),-1px 0 var(--regic-surface)}.city-label:before{display:none}.leaflet-tooltip{font-family:"Segoe UI",Arial,sans-serif;font-size:12px}
.details-panel{grid-column:3;grid-row:2;display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--regic-surface);border-left:1px solid var(--line);z-index:650}.details-heading{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:10px;flex-shrink:0;background:var(--regic-surface)}.panel-kicker{font-size:11px;font-weight:600;color:var(--regic-kicker)}.details-heading h2{font-size:14px;margin:3px 0 0}.selection-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:20px}#selection h2{font-size:24px;line-height:1.2;margin:4px 0 12px;font-weight:600}#selection p{margin:10px 0;color:var(--regic-muted)}#selection h3{margin:22px 0 8px}.selection-label{font-size:11px!important;margin:0 0 4px!important;color:var(--regic-kicker)!important}.badge{display:inline-block;background:var(--regic-subtle);color:var(--regic-accent);font-size:12px;padding:5px 8px;border-radius:4px;line-height:1.4}.counts{font-size:12px;color:var(--regic-muted);padding:12px 0 0}.relation-help{font-size:12px}.arrangement-info{margin:16px 0 20px;padding:14px;background:var(--regic-subtle);border-radius:6px}.arrangement-info h3{font-size:14px;line-height:1.4;margin:0 0 10px!important}.arrangement-info p{font-size:12px;color:var(--regic-secondary)!important;line-height:1.55}.arrangement-info .hint{font-size:11px;color:var(--regic-muted)!important}.arrangement-members{margin:13px 0}.arrangement-members summary{font-size:12px;color:var(--regic-link);font-weight:600;line-height:1.5}.arrangement-members ul{font-size:12px;line-height:1.7;padding-left:18px;margin:10px 0}.relation-list{max-height:none;overflow:visible;margin-top:8px}.relation-detail{border-bottom:1px solid var(--line)}.relation-detail>summary{padding:13px 0;list-style-position:inside}.relation-detail>summary:hover{background:var(--regic-row-hover)}.relation-city{font-size:13px;font-weight:600}.relation-detail small,.theme-preview,.expand-hint{display:block;margin:5px 0 0 15px;font-size:11px;font-weight:400;color:var(--regic-muted);line-height:1.5}.theme-preview{color:var(--regic-secondary)}.expand-hint{color:var(--regic-link);text-decoration:underline}.relation-detail[open]>summary .expand-hint{display:none}.relation-body{padding:0 0 16px;font-size:12px}.relation-body .relation-route{font-weight:600;color:var(--regic-text)!important}.relation-body h4{font-size:13px;margin:17px 0 9px}.theme-list{padding-left:18px;margin:0}.theme-list li{margin:12px 0}.theme-list p{font-size:12px;margin:5px 0!important}.order{display:inline-block;color:var(--regic-muted);margin-left:7px;font-size:11px}.relation-source{display:block;font-size:11px;margin-top:10px}.relation-detail .reset{margin-top:8px}.relation-body .hint{font-size:11px}
@media(max-width:1140px){:root{--sidebar-width:272px;--details-width:340px}body[data-selected=true]{grid-template-columns:var(--sidebar-width) minmax(0,1fr)}.details-panel{position:fixed;right:12px;top:calc(var(--topbar-height) + 12px);bottom:12px;width:var(--details-width);border:1px solid var(--line);border-radius:8px;overflow:hidden;box-shadow:0 8px 28px var(--regic-panel-shadow)}.app-topbar{gap:18px}.app-brand{min-width:230px}}
@media(max-width:900px){:root{--topbar-height:122px}body,body[data-selected=true]{grid-template-columns:minmax(0,1fr)}.app-topbar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 14px;padding:12px 16px}.app-brand{min-width:0}.app-brand h1{font-size:18px}.brand{font-size:11px}.search-wrap{grid-row:2;grid-column:1/-1;width:100%;max-width:none}input[type=search]{height:40px;font-size:16px}.search-wrap #results{top:44px;max-height:40dvh}#toggle-filters{display:block;min-height:36px;padding:8px 10px;border:1px solid var(--regic-input-border);border-radius:5px;background:var(--regic-surface);color:var(--regic-accent);font-size:12px;font-weight:600}.map-stage{grid-column:1}.control-panel{position:fixed;top:calc(var(--topbar-height) + 8px);bottom:12px;left:12px;width:min(330px,calc(100% - 24px));border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 28px var(--regic-panel-shadow);z-index:750;overflow:hidden}body[data-filters-open=false] .control-panel{display:none}#close-filters{display:block}.control-fixed{padding-top:12px}.details-panel{top:auto;bottom:12px;right:12px;width:min(390px,calc(100% - 24px));height:52dvh;max-height:calc(100dvh - var(--topbar-height) - 24px)}body[data-filters-open=true] .details-panel{display:none}.details-heading{padding:10px 16px}.selection-scroll{padding:17px}.map-note{top:12px;left:12px;max-width:205px;font-size:11px}.map-note #map-unit{font-size:10px}#status{left:12px;bottom:24px;font-size:10px;max-width:calc(100% - 24px)}#map-tip{font-size:11px;bottom:67px}.type-row label,.check-label{min-height:30px}.type-row input,.check-label input{width:18px;height:18px}}
@media(prefers-reduced-motion:no-preference){.details-panel,.control-panel{transition:box-shadow .15s ease-out}}

.origin-summary{margin:16px 0;padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:13px}.origin-summary p{font-size:12px}.origin-summary .reset{margin-top:3px}

.reference-title{font-size:11px;font-weight:600;color:var(--regic-muted)}.reference-list{list-style:none;padding:0;margin:8px 0 12px}.reference-list li{margin:8px 0}.reference-list strong{display:block;font-size:15px;color:var(--regic-text)}.reference-list span{font-size:12px;color:var(--regic-muted)}

.local-territories{display:flex;align-items:flex-start;gap:9px;margin:14px 0;line-height:1.4;cursor:pointer}.local-territories input{margin:3px 0 0;accent-color:var(--accent,var(--regic-check-accent));flex-shrink:0}.local-territories span{font-weight:600}.local-territories small{display:block;margin-top:4px;font-size:11px;font-weight:400;color:var(--muted,var(--regic-hint))}

.local-territories{margin:0 0 14px;padding:0 4px 12px 24px;font-size:12px;border-bottom:1px solid var(--line)}

.territory-outline{position:absolute;inset:0;z-index:460;pointer-events:none}
.hierarchy-paths,.outline-key{list-style:none;padding:0;margin:10px 0}
.hierarchy-paths li{display:flex;align-items:baseline;flex-wrap:wrap;gap:5px;margin:7px 0;line-height:1.7}
.hierarchy-paths button{border:0;border-bottom:1px solid var(--regic-inline-border);background:transparent;padding:0 1px;color:var(--regic-inline-link);font-size:12px;text-align:left}
.path-arrow{color:var(--regic-muted)}.origin-summary h3{margin:0 0 8px;font-size:14px}
.indirect-option{display:flex;align-items:flex-start;gap:8px;cursor:pointer;margin:12px 0;font-size:12px}
.indirect-option input{margin:2px 0 0;accent-color:var(--regic-accent)}
.indirect-option small{display:block;color:var(--muted);font-size:11px;line-height:1.5;margin-top:3px}
.outline-key li{display:flex;align-items:center;gap:8px;font-size:11px;line-height:1.5;margin:7px 0}
.outline-key i{display:inline-block;width:23px;height:11px;border:2px solid var(--regic-outline-key);flex-shrink:0}
.outline-key i.parent{border-color:var(--regic-parent-key)}.hierarchy-help{margin-top:12px;font-size:12px}.hierarchy-help summary{color:var(--regic-accent);font-weight:600}

.hierarchy-areas{list-style:none;padding:0;margin:10px 0 14px}
.hierarchy-areas li{display:flex;align-items:center;gap:9px;margin:11px 0}
.hierarchy-areas .area-key{display:block;border:3px solid;width:25px;height:18px;flex-shrink:0}
.hierarchy-areas li>div{flex:1;min-width:0;line-height:1.4}
.hierarchy-areas strong{font-size:12px;display:block}.hierarchy-areas small{display:block;font-size:11px;color:var(--muted);margin-top:3px}
.area-frame{border:1px solid var(--regic-frame-border);background:var(--regic-surface);color:var(--regic-accent);padding:5px 7px;border-radius:4px;font-size:11px;flex-shrink:0}
.area-frame:hover{background:var(--regic-subtle)}

.city-label-small{font-size:11px;font-weight:500}

#toggle-details,.compact-selection{display:none}
@media(max-width:900px){
 #toggle-details{display:block;flex-shrink:0;border:1px solid var(--regic-input-border);border-radius:5px;background:var(--regic-subtle);color:var(--regic-accent);font-size:12px;font-weight:600;padding:9px 10px;min-height:40px}
 .details-heading>div{min-width:0;flex:1}
 .details-heading .icon-button{flex-shrink:0}
 .details-panel{bottom:calc(12px + env(safe-area-inset-bottom,0px))}
 body[data-details-collapsed=true] .details-panel{height:auto;max-height:none}
 body[data-details-collapsed=true] .selection-scroll{display:none}
 body[data-details-collapsed=true] #details-title{display:none}
 body[data-details-collapsed=true] .compact-selection{display:block;font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:3px}
 body[data-selected=true] #status{bottom:calc(92px + env(safe-area-inset-bottom,0px))}
 body[data-selected=true]:not([data-details-collapsed=true]) #status{display:none}
 body[data-selected=true] .leaflet-bottom.leaflet-right{bottom:calc(52dvh + 24px + env(safe-area-inset-bottom,0px))}
 body[data-selected=true][data-details-collapsed=true] .leaflet-bottom.leaflet-right{bottom:calc(86px + env(safe-area-inset-bottom,0px))}
}

#mobile-map-caption{display:none}
@media(max-width:900px){
 .map-note{padding:6px 8px;max-width:180px;font-size:10px;line-height:1.2;pointer-events:none}
 .map-note #map-caption,.map-note #map-unit{display:none}
 #mobile-map-caption{display:inline}
 .leaflet-tooltip{display:none!important}
}
@media(hover:none),(pointer:coarse){.leaflet-tooltip{display:none!important}}

@media(max-width:900px){
 body[data-selected=true] #status{font-size:0;padding:4px 6px;line-height:1.2;box-shadow:none;border-radius:3px;max-width:150px}
 body[data-selected=true] #status::after{content:attr(data-mobile-label);font-size:9px}
}

.municipal-controls{border-bottom:1px solid var(--line)}.municipal-controls .check-label{font-weight:600!important;margin-top:0}.municipal-controls .hint{font-size:11px;margin:7px 0}
#municipal-options label{display:block;font-size:11px;font-weight:600;margin:12px 0 5px}#municipal-options select{font-size:12px}
.municipal-scale{margin:17px 0;padding:12px;background:var(--regic-subtle);border-radius:5px;font-size:12px}.municipal-scale p{font-size:12px}
.municipal-coverage{background:var(--regic-warning-surface);padding:11px;font-size:12px;border:1px solid var(--regic-warning-border);border-radius:5px}
.municipal-values{border-collapse:collapse;width:100%;font-size:11px}.municipal-values caption{text-align:left;color:var(--regic-muted);margin-bottom:7px}.municipal-values td{padding:6px 3px;border-bottom:1px solid var(--regic-table-border)}.municipal-values td:last-child{text-align:right;font-weight:600}
.flow-out{color:var(--regic-outgoing);font-weight:600}.flow-in{color:var(--regic-incoming);font-weight:600}.more-municipal{padding:12px 0;font-size:12px}.more-municipal>summary{color:var(--regic-link);font-weight:600}

.simulation-toggle{display:flex;align-items:flex-start;gap:8px;margin:4px 0 10px 24px;font-size:12px;line-height:1.5;cursor:pointer}.simulation-toggle input{margin:3px 0 0;accent-color:var(--regic-accent)}.simulation-toggle strong{font-size:11px;color:var(--regic-simulation-label)}
.simulation-options{margin:8px 0 12px 24px}.simulation-options label{font-size:11px;font-weight:600;display:block;margin-bottom:5px}.simulation-options select{font-size:12px}.simulation-options p,#simulation-status{font-size:11px;line-height:1.5;color:var(--muted)}
.simulation-result{margin:16px 0;padding:12px;background:var(--regic-simulation-surface);border:1px solid var(--regic-simulation-border);border-radius:5px;font-size:12px}.simulation-result>strong{color:var(--regic-simulation-text)}

.utiliapp-back{text-decoration:none;font-weight:700}.utiliapp-back:hover{text-decoration:underline}

/* Advertising stays below the map; desktop sidebars span both content rows. */
:root { --regic-ad-height: 132px; }
body { grid-template-rows: var(--topbar-height) minmax(0, 1fr) var(--regic-ad-height); }
.control-panel, .details-panel { grid-row: 2 / 4; }
.regic-adbar {
    grid-column: 2;
    grid-row: 3;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 3px;
    min-width: 0;
    padding: 4px 12px;
    background: var(--regic-surface);
    border-top: 1px solid var(--line);
}
.regic-ad-label { color: var(--muted); font-size: 10px; line-height: 12px; }
.regic-ad-slot { width: min(728px, 100%); height: 90px; }
.regic-ad-slot .adsbygoogle { width: 100%; height: 90px !important; }
.regic-ad-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    background: var(--regic-canvas);
    color: var(--muted);
    font-size: 12px;
}
@media (max-width: 1140px) {
    .details-panel { bottom: calc(var(--regic-ad-height) + 12px); }
}
@media (max-width: 900px) {
    :root { --regic-ad-height: calc(92px + env(safe-area-inset-bottom, 0px)); }
    .regic-adbar { grid-column: 1; padding-bottom: calc(4px + env(safe-area-inset-bottom, 0px)); }
    .regic-ad-slot { width: min(320px, 100%); height: 50px; }
    .regic-ad-slot .adsbygoogle { height: 50px !important; }
    .control-panel { bottom: calc(var(--regic-ad-height) + 12px); }
    .details-panel {
        bottom: calc(var(--regic-ad-height) + 12px);
        max-height: calc(100dvh - var(--topbar-height) - var(--regic-ad-height) - 24px);
    }
}

/* Only the external basemap is toned down; thematic layers keep their own colors. */
[data-theme="dark"] .leaflet-tile-pane { filter: grayscale(1) invert(1) brightness(.6) contrast(.9); }
.leaflet-control-zoom a, .leaflet-container .leaflet-control-attribution, .leaflet-control-scale-line,
.leaflet-tooltip { background: var(--regic-surface); color: var(--regic-text); }
.leaflet-control-zoom a:hover { background: var(--regic-subtle); color: var(--regic-text); }
.leaflet-bar, .leaflet-control-zoom a, .leaflet-control-scale-line, .leaflet-tooltip { border-color: var(--regic-input-border); }
.leaflet-control-attribution a { color: var(--regic-link); }
.leaflet-control-scale-line { text-shadow: none; }
.leaflet-tooltip-top:before { border-top-color: var(--regic-surface); }
.leaflet-tooltip-bottom:before { border-bottom-color: var(--regic-surface); }
.leaflet-tooltip-left:before { border-left-color: var(--regic-surface); }
.leaflet-tooltip-right:before { border-right-color: var(--regic-surface); }
/* City labels remain transparent above the cartography. */
.leaflet-tooltip.city-label { background: none; border: 0; box-shadow: none; }
[data-theme="dark"] .city-label {
    color: #f1f5f9;
    text-shadow: 0 1px #020617, 1px 0 #020617, 0 -1px #020617, -1px 0 #020617;
}

/* Keep Leaflet control z-indexes inside the map, below floating app panels. */
.map-stage { isolation: isolate; }

#regic-theme-toggle {
    flex-shrink: 0;
    margin-left: auto;
    width: 40px;
    height: 40px;
    border: 1px solid var(--regic-input-border);
    border-radius: 5px;
    background: var(--regic-surface);
    color: var(--regic-text);
    font-size: 22px;
    line-height: 1;
}
#regic-theme-toggle:hover { background: var(--regic-subtle); }
@media (max-width: 900px) {
    .app-topbar { grid-template-columns: minmax(0, 1fr) auto; }
    .app-brand { grid-column: 1 / -1; grid-row: 1; padding-right: 48px; }
    .search-wrap { grid-column: 1; grid-row: 2; }
    #toggle-filters { grid-column: 2; grid-row: 2; }
    #regic-theme-toggle { grid-column: 2; grid-row: 1; justify-self: end; }
}

.regic-ad-heading {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: min(728px, 100%);
    min-height: 28px;
}
#regic-ad-toggle {
    position: absolute;
    right: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 28px;
    padding: 0;
    border: 1px solid var(--regic-input-border);
    border-radius: 4px;
    background: var(--regic-surface);
    color: var(--regic-text);
}
#regic-ad-toggle:hover { background: var(--regic-subtle); }
body[data-regic-ad-collapsed="true"] { --regic-ad-height: calc(36px + env(safe-area-inset-bottom, 0px)); }
body[data-regic-ad-collapsed="true"] .regic-adbar { padding-top: 3px; padding-bottom: calc(3px + env(safe-area-inset-bottom, 0px)); }
body[data-regic-ad-collapsed="true"] .regic-ad-heading { width: 36px; }
body[data-regic-ad-collapsed="true"] .regic-ad-label { display: none; }
body[data-regic-ad-collapsed="true"] #regic-ad-toggle svg { transform: rotate(180deg); }
@media (max-width: 900px) {
    .regic-ad-heading { width: min(320px, 100%); }
}
