/* 02.54 — минималистичное оформление. Подключается последним и только переопределяет. */
:root{--teal:#0f7c84;--dark:#17252b;--muted:#6b7a80;--line:#e3e8ea;--bg:#f5f7f8;--soft:#e9f3f3;--surface:#fff;--surface-a:#ffffffeb;--shadow:0 4px 18px #0f1f2414,0 1px 3px #0f1f240f;--radius:12px}
body.dark{--teal:#3fb3ba;--dark:#e3ecef;--muted:#93a6ae;--line:#2c3d46;--bg:#111c22;--soft:#1b3439;--surface:#18262e;--surface-a:#18262eeb;--shadow:0 4px 18px #0007,0 1px 3px #0005}
body{background:var(--bg)}

/* Кнопки — тише и легче */
button{border-radius:8px;padding:8px 13px;font-weight:550;border-color:var(--line);background:var(--surface);color:var(--dark);transition:background .12s,color .12s,border-color .12s}
button:hover:not(:disabled){background:var(--soft)}
button.primary{background:var(--teal);border-color:var(--teal);color:#fff}
body.dark button.primary{color:#062226}
button.primary:hover:not(:disabled){background:var(--teal);filter:brightness(1.08)}
button.quiet{background:transparent;border-color:transparent}
:focus-visible{outline:2px solid var(--teal)}
svg.ui-icon{width:18px;height:18px}

/* Боковое меню — узкая полоса иконок */
.app,.app.collapsed{grid-template-columns:60px 1fr}
.app aside,.collapsed aside{padding:14px 8px;gap:18px;background:var(--surface);border-right:1px solid var(--line);align-items:center}
.sidebar .brand,.collapsed .brand{padding:0;justify-content:center}
.brand-mark{width:34px;height:34px;border-radius:10px;font-size:16px}
.brand-text,.collapsed .brand-text,.nav-label{display:none!important}
.sidebar nav{gap:4px;width:100%}
.sidebar nav button,.collapsed nav button{width:44px;height:44px;padding:0;margin:0 auto;justify-content:center;border-radius:10px;color:var(--muted)}
.sidebar nav button span{display:none}
.sidebar nav button:hover{color:var(--dark)}
.sidebar nav button.active{background:var(--soft);color:var(--teal)}
.sidebar nav button.active:before{display:none}
.side-bottom,.collapsed .side-bottom{border-top:0;padding:0;display:flex!important;flex-direction:column;align-items:center;gap:6px;width:100%}
#collapse-nav{display:none!important}
.sidebar .side-about,.collapsed .side-about,.side-theme{display:grid!important;place-items:center;float:none;width:40px;height:40px;padding:0;margin:0;color:var(--muted);border-radius:10px}
.side-theme:hover,.sidebar .side-about:hover{color:var(--dark)}
.side-bottom .user,.collapsed .user{order:3;width:auto;padding:4px;margin:4px 0 0;justify-content:center}
.avatar{width:32px;height:32px;background:var(--soft);color:var(--teal);font-size:13px}

/* Панель инструментов карты — одна «пилюля» по центру */
.geo-hud{top:12px;left:12px;right:12px;align-items:center;gap:6px}
.geo-hud .geo-actions{display:flex;flex-wrap:nowrap;align-items:center;gap:2px;padding:4px;background:var(--surface-a);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);pointer-events:auto;max-width:100%}
.geo-actions button{box-shadow:none;border:0;background:transparent;padding:7px 10px;font-size:13px;font-weight:550;gap:7px;color:var(--dark);border-radius:8px}
.geo-actions button:hover:not(:disabled){background:var(--soft)}
.geo-actions [aria-pressed=true]{background:var(--soft);color:var(--teal);border:0}
.geo-sep{width:1px;height:20px;background:var(--line);margin:0 3px;flex:none}
.hud-menu-wrap{position:relative}
.geo-actions [data-hud-menu] svg.ui-icon:last-child{width:14px;height:14px;margin-left:-3px;opacity:.55;transition:transform .15s}
.geo-actions [data-hud-menu][aria-expanded=true]{background:var(--soft);color:var(--teal)}
.geo-actions [data-hud-menu][aria-expanded=true] svg.ui-icon:last-child{transform:rotate(180deg)}
.hud-menu{position:absolute;top:calc(100% + 10px);left:-4px;min-width:260px;padding:5px;display:grid;gap:1px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);z-index:900;animation:hud-in .12s ease-out}
.hud-menu[hidden]{display:none}
.hud-menu hr{border:0;border-top:1px solid var(--line);margin:4px 6px}
.geo-actions .hud-menu button{justify-content:flex-start;align-items:center;width:100%;font-weight:500;padding:8px 10px;gap:10px;text-align:left;white-space:nowrap}
.hud-menu button svg{color:var(--muted);flex:none}
.hud-menu button:hover svg{color:var(--teal)}
.hud-menu button span{display:flex!important;flex-direction:column;line-height:1.3}
.hud-menu small{font-size:11px;color:var(--muted);font-weight:400}
@keyframes hud-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}

/* Рабочий слой — тихая подпись под панелью */
.work-layer-chip{padding:4px 11px;font-size:11px;border-radius:999px;background:var(--surface-a);border:1px solid var(--line);box-shadow:none;font-weight:500}
.work-layer-chip b{font-weight:600}

/* Строка состояния подложки — только при проблеме */
.geo-hud .geo-basemap-label{display:none}
.geo-hud .geo-basemap-label[data-alert]{display:block;background:#fff4e0;color:#7a4b00;border:1px solid #f0d9a8;border-radius:8px;padding:5px 10px}
body.dark .geo-hud .geo-basemap-label[data-alert]{background:#3a2e17;color:#f3d79a;border-color:#5d4a22}

/* Координаты курсора */
.geo-position,button.geo-position{left:12px;bottom:12px;padding:6px 10px;border-radius:8px;background:var(--surface-a);border:1px solid var(--line);color:var(--muted);box-shadow:none;font:500 11px ui-monospace,SFMono-Regular,Menlo,monospace}
body.dark .geo-position{background:var(--surface-a);color:var(--muted)}
button.geo-position:hover{color:var(--dark);border-color:var(--teal)}
.geo-canvas .leaflet-control-scale{margin-left:12px!important;margin-bottom:48px!important}
.leaflet-control-scale-line{background:var(--surface-a);border-color:var(--muted);color:var(--muted);font-size:10px}

/* Масштаб карты */
.geo-canvas .leaflet-bar{border:1px solid var(--line)!important;border-radius:10px;overflow:hidden;box-shadow:var(--shadow)}
.geo-canvas .leaflet-bar a{background:var(--surface);color:var(--dark);border-bottom-color:var(--line);width:34px;height:34px;line-height:34px;font-weight:400}
.geo-canvas .leaflet-bar a:hover{background:var(--soft)}
.geo-canvas .leaflet-right .leaflet-control{margin-right:12px}
.geo-canvas .leaflet-bottom .leaflet-control-zoom{margin-bottom:12px}

/* Боковые панели на карте */
.map-panel,.ai-panel{background:var(--surface);border-color:var(--line)}
body.dark aside,body.dark .map-panel,body.dark .ai-panel,body.dark dialog,body.dark .panel,body.dark .box,body.dark .dialog-foot,body.dark input,body.dark select,body.dark textarea{background:var(--surface)}
body.dark button{background:var(--surface)}
body.dark button.quiet,body.dark .geo-actions button,body.dark .sidebar nav button:not(.active){background:transparent}
body.dark button.primary{background:var(--teal)}
body.dark .sidebar nav button.active,body.dark .geo-actions [aria-pressed=true]{background:var(--soft)}

/* Страницы-таблицы */
.eyebrow{display:none}
.page-heading h1{font-size:26px;letter-spacing:-.01em}

/* Узкие экраны */
@media (max-width:700px){.geo-actions>button span,.geo-actions>.hud-menu-wrap>button span{display:none}.geo-actions>button,.geo-actions>.hud-menu-wrap>button{padding:8px}.hud-menu-wrap{position:static}.geo-actions{position:relative}.hud-menu{left:50%;transform:translateX(-50%);width:min(300px,calc(100vw - 24px));min-width:0;animation:none}}
@media (max-width:650px){
 .app,.app.collapsed{display:block}
 .app aside,.collapsed aside{flex-direction:row;align-items:center;padding:8px 10px;gap:6px;height:auto;position:static;border-right:0;border-bottom:1px solid var(--line)}
 .sidebar nav{display:flex;overflow-x:auto;width:auto;flex:1}
 .sidebar nav button,.collapsed nav button{flex:0 0 40px;width:40px;height:40px}
 .sidebar nav{min-width:0}
 .side-bottom,.collapsed .side-bottom{flex-direction:row;width:auto;margin:0;flex:none;position:static}
 .sidebar .side-about,.collapsed .side-about{display:none!important}
 .side-bottom .user{margin:0}
 .geo-hud{top:8px;left:8px;right:8px}
 .geo-sep{margin:0 1px}
}

/* 02.55 — панели инструментов из MapEngineApp */
.tool-panel{position:absolute;top:64px;right:12px;z-index:650;width:min(330px,calc(100% - 24px));max-height:calc(100% - 150px);display:flex;flex-direction:column;background:var(--surface);color:var(--dark);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);font-size:13px}
.tool-panel header{display:flex;align-items:center;justify-content:space-between;padding:10px 8px 6px 14px}
.tool-panel h3{margin:0;font-size:14px;font-weight:650}
.tool-panel header .icon-btn{padding:6px;min-width:0}
.tool-body{overflow:auto;padding:0 14px 14px;display:grid;gap:8px}
.tool-body p{margin:0;line-height:1.45}
.tool-big{font-size:15px;font-weight:650}
.tool-strong{font-weight:650}
.tool-muted{color:var(--muted);font-size:12px}
.tool-hint{color:var(--muted);font-size:11px}
.tool-ok{color:#2e7d32;font-weight:600}
body.dark .tool-ok{color:#81c784}
.tool-warn{color:#c25700;font-size:12px}
body.dark .tool-warn{color:#ffb74d}
.tool-actions{display:flex;gap:6px;flex-wrap:wrap}
.tool-actions button{flex:1 1 auto;font-size:12px;padding:8px 10px}
button.danger{color:#c62828;border-color:#f2c6c6}
body.dark button.danger{color:#ef9a9a;border-color:#5a2c2c}
button.wide{width:100%}
.tool-body .field{display:grid;gap:4px;font-size:12px;color:var(--muted)}
.tool-body .field input,.tool-body .field select{padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--dark);font-size:13px}
.chip-row{display:flex;gap:4px;flex-wrap:wrap}
.chip{padding:5px 10px;font-size:12px;font-weight:500;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--dark)}
.chip[aria-pressed=true]{background:var(--teal);border-color:var(--teal);color:#fff}
body.dark .chip[aria-pressed=true]{background:var(--teal);color:#062226}
.chip-row.seg{background:var(--bg);border-radius:9px;padding:3px;gap:2px}
.chip-row.seg .chip{flex:1;border:0;border-radius:7px}
.chip-row.seg .chip[aria-pressed=true]{background:var(--surface);color:var(--teal);box-shadow:0 1px 3px #0002}
.rf-group{display:grid;gap:4px}
.rf-group>span,.rf-slider span{font-size:11px;color:var(--muted)}
.rf-slider{display:grid;gap:2px}
.rf-slider b{color:var(--dark);font-weight:600}
.rf-slider input{width:100%;accent-color:var(--teal)}
.rf-check{display:flex;gap:8px;align-items:center;font-size:12px}
.rf-place{width:100%;border-style:dashed;font-weight:500}
.rf-place.active{border-color:var(--teal);color:var(--teal);background:var(--soft)}
.rf-progress{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--muted)}
.rf-progress progress{flex:1;accent-color:var(--teal)}
.rf-result{display:grid;gap:3px;padding:10px;background:var(--bg);border-radius:9px;font-size:12px}
.rf-legend{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:2px;font-size:11px}
.rf-legend li{display:flex;align-items:center;gap:6px}
.rf-legend i{width:10px;height:10px;border-radius:50%;flex:none}
.route-steps{list-style:none;margin:0;padding:0;max-height:160px;overflow:auto;border:1px solid var(--line);border-radius:9px}
.route-steps li+li{border-top:1px solid var(--line)}
.route-steps button{display:grid;gap:1px;width:100%;text-align:left;border:0;border-radius:0;padding:6px 10px;font-size:12px;font-weight:500;white-space:normal;background:transparent}
.route-steps small{color:var(--muted);font-weight:400}
.elev-profile{margin:2px 0 0}
.elev-profile svg{width:100%;height:64px;display:block;background:var(--bg);border-radius:8px}
.elev-profile polygon{fill:#29b6f633}
.elev-profile polyline{fill:none;stroke:#29b6f6;stroke-width:1.6;vector-effect:non-scaling-stroke}
.elev-profile figcaption{display:flex;justify-content:space-between;font-size:10px;color:var(--muted);margin-top:2px}
.map-fit-btn{position:absolute;right:12px;bottom:92px;z-index:450;width:36px;height:36px;padding:0;display:grid;place-items:center;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--dark);box-shadow:var(--shadow)}
.point-info-popup .leaflet-popup-content-wrapper{background:var(--surface);color:var(--dark);border-radius:10px;box-shadow:var(--shadow)}
.point-info-popup .leaflet-popup-tip{background:var(--surface)}
.point-info-popup .leaflet-popup-content{margin:10px 12px}
.point-info{display:grid;gap:4px;font-size:12px}
.point-info b{font:600 12px ui-monospace,SFMono-Regular,Menlo,monospace}
.point-info-h{color:var(--muted)}
.point-info div{display:flex;gap:6px;margin-top:4px}
.point-info button{font-size:11px;padding:5px 9px}
.measure-panel{display:none}
@media (max-width:650px){.tool-panel{top:auto;bottom:8px;right:8px;left:8px;width:auto;max-height:55%}}
.tool-body{grid-template-columns:minmax(0,1fr)}
.tool-body button{white-space:normal}
.tool-body .chip{white-space:nowrap}
.rf-slider input,.tool-body .field input,.tool-body .field select{width:100%;min-width:0;box-sizing:border-box}

/* 02.55 · Поиск и фильтр на верхней панели */
.geo-actions [data-hud-pop]{position:relative;padding:7px 9px}
.geo-actions [data-hud-pop][aria-expanded=true]{background:var(--soft);color:var(--teal)}
.hud-badge{position:absolute;top:1px;right:1px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--teal);color:#fff;font-size:10px;font-weight:700;line-height:16px;text-align:center}
.hud-pop{position:absolute;top:calc(100% + 10px);left:50%;translate:-50% 0;width:min(380px,calc(100vw - 32px));max-height:min(70vh,560px);overflow:auto;padding:10px;display:grid;gap:8px;align-content:start;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);z-index:900;animation:hud-in .12s ease-out;text-align:left;font-weight:400}
.hud-pop[hidden]{display:none}
.hud-pop .field{margin:0}
.hud-pop .field input{width:100%}
.pop-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.pop-label{margin:4px 2px 0;font-size:11px;font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.hud-pop .chip-row{display:flex;flex-wrap:wrap;gap:6px}
.geo-actions .hud-pop .chip{padding:5px 10px;border:1px solid var(--line);border-radius:999px;font-size:12.5px;font-weight:500}
.geo-actions .hud-pop .chip-row:not(.seg) .chip[aria-pressed=true]{background:var(--teal);border-color:var(--teal);color:#fff}
.geo-actions .hud-pop .chip-row.seg .chip{border:0;border-radius:7px;padding:4px 10px}
.geo-actions .hud-pop .chip-row.seg .chip[aria-pressed=true]{background:var(--surface);color:var(--teal);box-shadow:0 1px 3px #0002}
.geo-actions .hud-pop .tool-actions{display:flex;justify-content:flex-end;gap:6px}
.geo-actions .hud-pop .tool-actions button{border:1px solid var(--line)}
.geo-actions .hud-pop .tool-actions button.primary{background:var(--teal);border-color:var(--teal);color:#fff}
.search-box{display:flex;align-items:center;gap:8px;padding:0 10px;border:1px solid var(--line);border-radius:10px;background:var(--bg)}
.search-box:focus-within{border-color:var(--teal)}
.search-box svg{width:17px;height:17px;flex:none;color:var(--muted)}
.hud-pop .search-box input,body.dark .hud-pop .search-box input{background:transparent;box-shadow:none;border:0}
.search-box input{flex:1;min-width:0;border:0;outline:0;background:transparent;padding:9px 0;font-size:14px;color:var(--dark)}
.search-results{display:grid;gap:1px}
.geo-actions .search-item{display:flex;justify-content:flex-start;align-items:center;gap:10px;width:100%;padding:7px 8px;text-align:left;white-space:normal;font-weight:400}
.geo-actions .search-item svg{flex:none;width:16px;height:16px;opacity:.6}
.search-item span{display:grid;min-width:0}
.search-item b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.search-item small{color:var(--muted);font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.geo-actions .search-item.active,.geo-actions .search-item:hover{background:var(--soft)}
.search-hint{margin:4px 2px;font-size:12px;line-height:1.5}
.geo-hud .geo-actions{position:relative}
.geo-actions .hud-menu-wrap:has(>.hud-pop){position:static}

/* 02.55 · Перетаскиваемые окна и история поиска */
.pop-grip{height:14px;margin:-6px -10px -4px;cursor:grab;touch-action:none;position:relative}
.pop-grip::before{content:'';position:absolute;left:50%;top:5px;width:36px;height:4px;margin-left:-18px;border-radius:2px;background:var(--line)}
.pop-grip:hover::before{background:var(--muted)}
.pop-head,.tool-panel>header,dialog.drawer .dialog-head,dialog.confirm>h2{cursor:grab;touch-action:none;user-select:none}
.win-dragging,.win-dragging *{cursor:grabbing!important;user-select:none!important}
.win-dragging{box-shadow:0 18px 50px #0006!important;transition:none!important;animation:none!important}
dialog.drawer.win-moved{position:fixed;height:min(82dvh,780px);max-height:calc(100dvh - 16px);border-radius:14px;box-shadow:0 18px 60px #0005;overflow:hidden}
dialog.drawer.object-card-dialog.win-moved{height:min(82dvh,780px)}
dialog.confirm.win-moved{position:fixed}
.pop-label-row{display:flex;justify-content:space-between;align-items:center}
.geo-actions .link-btn{padding:2px 6px;font-size:12px;font-weight:500;color:var(--teal)}
.search-hist-row{display:flex;align-items:center;gap:2px}
.search-hist-row .search-item{flex:1;min-width:0}
.geo-actions .search-hist-del{padding:6px;opacity:0;flex:none}
.search-hist-row:hover .search-hist-del,.search-hist-del:focus-visible{opacity:.6}
.geo-actions .search-hist-del:hover{opacity:1;background:var(--soft)}
.search-hist-del svg{width:14px;height:14px}
@media (hover:none){.geo-actions .search-hist-del{opacity:.5}}

/* 02.55 · Время и теги */
.pop-label-row .chip-row.seg{flex:none}
.filter-range{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.filter-range input{width:100%;min-width:0;font-size:12.5px}
.filter-check{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--dark);cursor:pointer}
.object-meta{display:grid;gap:10px}
.object-meta .field>span{display:block;margin-bottom:6px}
.object-meta input[type=datetime-local]{width:100%}
.meta-tags{align-items:center}
.meta-tags .chip{white-space:nowrap}
.meta-tag-new input{width:120px;padding:4px 10px;font-size:12px;border-radius:999px;border:1px dashed var(--line);background:transparent}
.meta-tag-new input:focus{border-style:solid;border-color:var(--teal);outline:0}
.meta-dates{margin:0;font-size:11.5px}
.pop-sticky{position:sticky;top:-10px;margin:-10px -10px 0;padding:0 10px 6px;background:var(--surface);z-index:2;border-bottom:1px solid var(--line)}
.pop-sticky .pop-grip{margin:0 -10px}
dialog .object-card-frame>.object-meta{gap:0}
dialog .object-card-frame .object-meta>.field{margin:0;gap:3px;padding:6px 9px 7px;font-size:9px;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);border-top:1px solid var(--line)}
dialog .object-card-frame .object-meta>.field>span{margin-bottom:4px}
dialog .object-card-frame .object-meta input[type=datetime-local]{border:0;padding:2px 0;font-size:13px;text-transform:none;letter-spacing:0;color:var(--dark);background:transparent;box-shadow:none}
dialog .object-card-frame .object-meta .chip,dialog .object-card-frame .object-meta .meta-tag-new input{text-transform:none;letter-spacing:0;font-size:12px}
dialog .object-meta .chip[aria-pressed=true]{background:var(--object-card-accent,var(--teal));border-color:var(--object-card-accent,var(--teal));color:#fff}
body.dark dialog .object-meta .chip[aria-pressed=true]{color:#062226}
dialog .object-card-frame .meta-dates{padding:5px 9px 7px;border-top:1px solid var(--line)}

/* 02.55 · Компактный редактор объекта */
.geo-editor.ge2{background:var(--surface)}
.ge2 header{padding:10px 10px 8px 14px;border-bottom:1px solid var(--line)}
.ge2 h2{margin:0;font-size:15px}
.geo-editor.ge2 form{padding:0;gap:0;display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}
.ge-body{flex:1;min-height:0;overflow:auto;padding:10px 12px;display:grid;gap:9px;align-content:start}
.ge-foot{display:flex;align-items:center;gap:6px;padding:8px 12px;border-top:1px solid var(--line);background:var(--surface)}
.ge-foot button{min-height:32px;padding:6px 12px;font-size:12.5px}
.ge-spacer{flex:1}
.ge2 .field{font-size:11.5px;font-weight:600;gap:3px;margin:0}
.ge2 input:not([type=color]):not([type=checkbox]),.ge2 select{min-height:32px;font-size:12.5px;padding:5px 8px}
.ge2 textarea{min-height:46px;font-size:12.5px;padding:6px 8px;resize:vertical}
.ge-name-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end}
.ge2 .ge-color input{width:42px;height:32px;min-height:32px;padding:2px;border-radius:7px}
.ge-row2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}
.ge-row2 select{width:100%;min-width:0}
.ge-draw{display:grid;gap:6px;padding:7px 8px;border-radius:8px;background:var(--bg)}
.ge-draw .geo-instruction{margin:0;font-size:11.5px;line-height:1.35;color:var(--muted)}
.ge-draw-btns{display:flex;flex-wrap:wrap;gap:4px}
.ge2 .mini{min-height:0;padding:3px 9px;font-size:11.5px;font-weight:550}
.ge-coord summary{font-size:11.5px;color:var(--teal);cursor:pointer}
.ge-coord[open]{display:grid;gap:6px}
.ge-symbol .symbol-select-button{width:100%;min-height:32px;font-size:12px;justify-content:flex-start}
.ge2 .object-meta{gap:9px}
.ge2 .object-meta .field>span{margin-bottom:0}
.meta-event-row{display:flex;gap:6px;align-items:center}
.meta-event-row input{flex:1;min-width:0}
.meta-event-row .mini{flex:none;min-height:32px}
.meta-src{font-weight:400;color:var(--muted);font-size:10.5px;margin-left:4px}
.ge2 .meta-tags .chip{padding:3px 9px;font-size:11.5px}
.ge2 .meta-tag-new input{min-height:0!important;padding:3px 9px!important;width:110px;font-size:11.5px!important}
@media (min-width:651px){.geo-editor.ge2{width:300px;max-height:calc(100% - 92px)}}

/* 02.55 · Краткий формуляр: все выбранные поля целиком */
.object-hover-row b{display:block!important;-webkit-line-clamp:unset!important;overflow:visible!important;white-space:pre-wrap;overflow-wrap:anywhere}
body .leaflet-tooltip.object-hover-tooltip{max-width:min(340px,calc(100vw - 24px))}
.object-hover-content{max-width:338px;max-height:calc(100vh - 140px);overflow:auto}
.object-hover-actions{position:sticky;bottom:0;background:var(--object-card-surface,var(--surface));margin-top:0;padding:6px}

/* 02.55 · Карточка объекта компактнее */
dialog.drawer.object-card-dialog{width:min(360px,100vw);max-width:360px}
dialog .object-card-frame .object-meta>.field.meta-event span{display:flex;align-items:baseline;gap:4px}
dialog .object-card-frame .meta-event-row input{border:0;padding:2px 0;font-size:13px;background:transparent;box-shadow:none;text-transform:none;letter-spacing:0;color:var(--dark)}
dialog .object-card-frame .meta-event-row .mini{min-height:0;padding:2px 8px;font-size:11px;text-transform:none;letter-spacing:0}
dialog .object-card-frame .meta-src{text-transform:none;letter-spacing:0;font-size:10px}
/* карточка: подпись слева, значение справа — строки вдвое ниже */
dialog.object-card-dialog .object-card-frame>.field,dialog.object-card-dialog .object-card-frame .object-meta>.field,dialog.object-card-dialog .object-card-read-row,dialog.object-card-dialog .object-card-type-row>.field{display:grid!important;grid-template-columns:92px minmax(0,1fr);align-items:center;column-gap:8px;padding:4px 9px!important}
dialog.object-card-dialog .object-card-read-row>span{font-size:9px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
dialog.object-card-dialog .object-card-frame .object-meta>.field>span{margin:0}
dialog.object-card-dialog .object-card-frame .object-meta>.field.meta-event>span{display:grid;gap:1px}
dialog.object-card-dialog .object-card-frame .meta-src{margin:0;font-size:8.5px;line-height:1.2}
dialog.object-card-dialog .object-card-frame .meta-tags{gap:4px}
dialog.object-card-dialog .object-card-frame .meta-tags .chip{padding:2px 8px;font-size:11px}
dialog.object-card-dialog .field textarea{height:30px;min-height:28px}
dialog.object-card-dialog .object-card-type-row{gap:6px}
dialog.object-card-dialog .object-card-section>summary{padding-bottom:4px}
dialog.object-card-dialog .object-card-section{margin-bottom:6px}
dialog.object-card-dialog .object-field-value{font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}
.meta-event-row [data-meta-now]{display:inline-flex;align-items:center;gap:4px}
.meta-event-row [data-meta-now] svg{width:14px;height:14px}
dialog.object-card-dialog .meta-event-row [data-meta-now] span{display:none}
dialog.object-card-dialog .meta-event-row [data-meta-now]{padding:3px 5px}
dialog.object-card-dialog .meta-event-row input{font-size:12px}
dialog.object-card-dialog .meta-event-row [data-meta-now] span{display:none!important}
dialog.object-card-dialog .object-card-frame .object-meta>.field.meta-event{grid-template-columns:92px minmax(0,1fr)}
dialog.object-card-dialog .meta-event-row{gap:4px}
dialog.object-card-dialog .meta-event-row input{min-width:0;flex:1 1 auto;font-size:11.5px!important;padding:2px 0!important}
dialog.object-card-dialog .meta-event-row input::-webkit-calendar-picker-indicator{margin-left:0}

/* 02.55 · Краткий формуляр: два столбца и медиа */
body .leaflet-tooltip.object-hover-tooltip:has(.two-col){max-width:min(600px,calc(100vw - 24px))}
.object-hover-content.two-col{max-width:598px;width:min(598px,calc(100vw - 26px))}
.object-hover-content.two-col .object-hover-rows{display:grid;grid-template-columns:1fr 1fr}
.object-hover-content.two-col .object-hover-row:nth-child(odd):not(.wide){border-right:1px solid var(--line)}
.object-hover-content.two-col .object-hover-row.wide{grid-column:1/-1}
.object-hover-content.two-col .object-hover-row{grid-template-columns:minmax(70px,.7fr) minmax(0,1.3fr)}
.hover-media{display:flex;flex-wrap:wrap;gap:4px;padding:6px;border-bottom:1px solid var(--line)}
.hm-tile{position:relative;width:64px;height:64px;padding:0;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:var(--bg);display:grid;place-items:center;cursor:zoom-in;color:var(--muted)}
.hm-tile img,.hm-tile video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}
.hm-tile:hover{border-color:var(--teal)}
.hm-tile svg{width:22px;height:22px}
.hm-play{position:absolute;z-index:1;width:26px;height:26px;border-radius:50%;background:#000a;display:grid;place-items:center;color:#fff}
.hm-play svg{width:14px;height:14px;fill:#fff;stroke:none}
.hm-more{font-size:13px;font-weight:600;color:var(--dark)}
.hm-missing{opacity:.5}

/* 02.55 · Просмотрщик медиа */
dialog.media-viewer{width:100vw;height:100dvh;max-width:100vw;max-height:100dvh;margin:0;padding:0;border:0;background:#0b1114f2;color:#fff;display:none;grid-template-rows:auto minmax(0,1fr) auto}
dialog.media-viewer[open]{display:grid}
dialog.media-viewer::backdrop{background:#000c}
.mv-head{display:flex;align-items:center;gap:8px;padding:10px 14px;padding-top:calc(10px + env(safe-area-inset-top,0px))}
.mv-title{flex:1;min-width:0;display:grid}
.mv-title b{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mv-title small{font-size:12px;color:#fff9}
.mv-btn{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;border:0;background:#ffffff14;color:#fff;cursor:pointer}
.mv-btn:hover{background:#ffffff2a}
.mv-btn svg{width:20px;height:20px}
.mv-stage{display:grid;place-items:center;min-height:0;overflow:hidden;padding:0 56px}
.mv-stage img,.mv-stage video{width:auto;height:auto;max-width:min(100%,calc(100vw - 112px));max-height:calc(100dvh - 130px);object-fit:contain;border-radius:4px;box-shadow:0 10px 40px #0008}
.mv-stage img{cursor:zoom-in;transition:transform .2s}
.mv-stage img.zoomed{transform:scale(var(--mv-zoom,1.5));cursor:zoom-out}
.mv-stage video{background:#000}
.mv-audio{display:grid;gap:18px;justify-items:center;width:min(480px,100%)}
.mv-audio>svg{width:96px;height:96px;opacity:.7}
.mv-audio audio{width:100%}
.mv-loading{color:#fffb;font-size:14px;text-align:center;max-width:420px}
.mv-nav{position:absolute;top:50%;translate:0 -50%;width:44px;height:44px;border-radius:50%;border:0;background:#ffffff1c;color:#fff;display:grid;place-items:center;cursor:pointer;z-index:2}
.mv-nav:hover{background:#ffffff33}
.mv-nav svg{width:24px;height:24px}
.mv-prev{left:8px}.mv-next{right:8px}
.media-viewer.single .mv-nav{display:none}
.mv-strip{display:flex;justify-content:center;gap:6px;padding:10px;padding-bottom:calc(10px + env(safe-area-inset-bottom,0px));overflow-x:auto}
.mv-strip:empty{padding:0}
.mv-thumb{display:flex;align-items:center;gap:4px;padding:5px 9px;border-radius:8px;border:1px solid #ffffff2a;background:transparent;color:#fffc;font-size:12px;cursor:pointer}
.mv-thumb svg{width:14px;height:14px}
.mv-thumb.active{background:#fff;color:#111}
@media (max-width:650px){.mv-stage{padding:0 8px}.mv-nav{top:auto;bottom:70px;translate:none}}

/* карточка: превью медиа компактнее, фото — по клику на весь экран */
dialog.object-card-dialog .object-media-player img{cursor:zoom-in;max-height:160px;width:100%;object-fit:cover}
dialog.object-card-dialog .object-media-player video{max-height:180px;width:100%;background:#000}
dialog.object-card-dialog .object-media-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
dialog.object-card-dialog [data-expand-media]{display:inline-flex;align-items:center;gap:4px;font-size:10px;color:var(--object-card-accent);padding:3px 6px}
dialog.object-card-dialog [data-expand-media] svg{width:13px;height:13px}
.mv-stage:has(.mv-note){grid-template-rows:minmax(0,1fr) auto;gap:10px}
.object-hover-content.two-col .object-hover-row,.object-hover-content.two-col .object-hover-row.wide{grid-template-columns:96px minmax(0,1fr)}
@media (max-width:650px){.mv-stage img,.mv-stage video{max-width:calc(100vw - 16px);max-height:calc(100dvh - 190px)}}
/* тёмная тема: цвет текста по умолчанию берётся из темы, а не из светлой палитры */
body{color:var(--dark)}
.ge-body{grid-template-columns:minmax(0,1fr)}
.ge2 input,.ge2 select,.ge2 textarea{min-width:0;max-width:100%}

/* 02.55 · Выбор знака обстановки */
dialog.drawer.symbol-picker-dialog{width:min(760px,100vw)}
.symbol-picker-dialog .dialog-head{padding:16px 20px 12px}
.symbol-picker-dialog .dialog-body:has(.symbol-picker){overflow:hidden;display:flex;padding:12px 16px 0}
.symbol-picker-dialog .dialog-foot{padding:10px 16px}
.symbol-picker{flex:1;min-height:0;display:flex;flex-direction:column;gap:10px}
.sp-current{display:flex;align-items:center;gap:10px;padding:6px 10px;border:1px solid var(--line);border-radius:10px;background:var(--bg)}
.sp-current span{flex:1;min-width:0;display:grid}
.sp-current small{font-size:11px;color:var(--muted)}
.sp-current b{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sp-search{display:flex;align-items:center;gap:8px;padding:0 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.sp-search:focus-within{border-color:var(--teal)}
.sp-search svg{width:18px;height:18px;color:var(--muted);flex:none}
.sp-search input{flex:1;min-width:0;border:0!important;outline:0;box-shadow:none!important;background:transparent!important;padding:10px 0;font-size:14px;color:var(--dark)}
.sp-cols{flex:1;min-height:0;display:grid;grid-template-columns:170px minmax(0,1fr);gap:12px}
.sp-side{overflow:auto;display:grid;align-content:start;gap:1px;padding-right:4px;padding-bottom:12px;scrollbar-width:thin}
.sp-side button{display:flex;justify-content:space-between;align-items:center;gap:6px;width:100%;padding:6px 9px;border:0;border-radius:7px;background:transparent;color:var(--dark);font-size:12.5px;font-weight:500;text-align:left;box-shadow:none;min-height:0}
.sp-side button span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sp-side button small{color:var(--muted);font-size:11px;flex:none}
.sp-side button:hover{background:var(--soft)}
.sp-side button[aria-pressed=true]{background:var(--teal);color:#fff}
.sp-side button[aria-pressed=true] small{color:#ffffffc0}
body.dark .sp-side button[aria-pressed=true]{color:#062226}
.sp-main{overflow:auto;padding-bottom:12px;scrollbar-width:thin}
.sp-cats{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px;position:sticky;top:0;z-index:1;background:var(--surface);padding-bottom:6px}
.sp-cats .chip small{opacity:.7;font-size:10.5px}
.sp-caption{margin:10px 2px 6px;font-size:11px;font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.sp-caption:first-child{margin-top:0}
.sp-hint,.sp-empty{margin:8px 2px;font-size:13px;line-height:1.55;color:var(--muted)}
.symbol-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:6px}
.symbol-tile{display:grid;justify-items:center;align-content:start;gap:5px;padding:9px 6px 7px;min-height:104px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--dark);box-shadow:none;cursor:pointer;font-weight:400}
.symbol-tile:hover{border-color:var(--teal);background:var(--soft)}
.symbol-tile.current{border-color:var(--teal);box-shadow:0 0 0 2px var(--teal) inset}
.symbol-tile svg{width:40px;height:40px;flex:none}
.symbol-tile span{font-size:11px;line-height:1.3;text-align:center;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;overflow-wrap:anywhere}
@media (max-width:650px){
 .sp-cols{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);gap:8px}
 .sp-side{display:flex;overflow-x:auto;overflow-y:hidden;padding:0 0 4px;gap:4px}
 .sp-side button{width:auto;flex:none;border:1px solid var(--line);border-radius:999px;padding:5px 10px}
 .symbol-grid{grid-template-columns:repeat(auto-fill,minmax(92px,1fr))}
}
#drawer .symbol-tile{white-space:normal;padding:9px 6px 7px;border-radius:9px}
#drawer .symbol-tile span{white-space:normal}
#drawer .sp-side button{display:flex;padding:6px 9px;border:0;border-radius:7px;white-space:nowrap;min-height:30px}
@media (max-width:650px){#drawer .sp-side button{border:1px solid var(--line);border-radius:999px;padding:5px 10px}}
#drawer .sp-side button span{flex:1;min-width:0;text-align:left}
#drawer .sp-side button small{display:inline!important;flex:none;font-size:11px;color:var(--muted)}
#drawer .sp-side button[aria-pressed=true]{background:var(--teal);color:#fff}
#drawer .sp-side button[aria-pressed=true] small{color:#ffffffc0}
body.dark #drawer .sp-side button[aria-pressed=true],body.dark #drawer .sp-side button[aria-pressed=true] small{color:#062226}
#drawer .sp-side{grid-template-columns:minmax(0,1fr)}
#drawer .sp-side button{min-width:0;max-width:100%}
#drawer .sp-side button span{overflow:hidden;text-overflow:ellipsis}
@media (max-width:650px){#drawer .sp-side button{max-width:none}}
@media (max-width:650px){.sp-cats{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.sp-cats .chip{flex:none}}
.import-preview-cap{margin:-6px 0 10px;font-size:12px}
/* описание в карточке — на всю ширину окна, подпись сверху */
dialog.object-card-dialog .object-card-frame>.field:has(textarea[name=description]){grid-template-columns:auto minmax(0,1fr);align-items:baseline;row-gap:4px;padding:6px 9px 8px!important}
dialog.object-card-dialog .object-card-frame>.field textarea[name=description]{grid-column:1/-1;width:100%;min-height:96px;resize:vertical;box-sizing:border-box}
dialog.object-card-dialog .meta-event-row{display:flex;align-items:center;gap:6px;min-width:0}
dialog.object-card-dialog .meta-event-row input{flex:1 1 auto;min-width:0}
/* ---------- выпадающий выбор знака ---------- */
dialog.symbol-pop{position:fixed;inset:auto;margin:0;padding:10px;display:none;flex-direction:column;gap:8px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--dark);box-shadow:0 14px 38px #0004;overflow:hidden;transform-origin:top left;animation:sp-roll .16s ease-out}
dialog.symbol-pop[open]{display:flex}
dialog.symbol-pop.up{transform-origin:bottom left}
dialog.symbol-pop::backdrop{background:transparent}
dialog.symbol-pop.closing{animation:sp-unroll .11s ease-in forwards}
@keyframes sp-roll{from{opacity:0;transform:translateY(-6px) scaleY(.92)}to{opacity:1;transform:none}}
@keyframes sp-unroll{to{opacity:0;transform:translateY(-4px) scaleY(.95)}}
.symbol-pop .sp-head{display:flex;gap:6px;align-items:center}
.symbol-pop .sp-search{flex:1;min-width:0}
.symbol-pop .sp-search input{padding:8px 0;font-size:13.5px}
.symbol-pop .sp-scope{flex:none;display:flex;align-items:center;gap:3px;padding:2px 4px 2px 8px;border-radius:999px;background:var(--soft);font-size:11.5px;color:var(--muted);white-space:nowrap}
.symbol-pop .sp-scope b{color:var(--dark);font-weight:600}
.symbol-pop .sp-scope button,.symbol-pop .sp-close{border:0;background:transparent;box-shadow:none;color:var(--muted);cursor:pointer;padding:0 5px;min-height:0;font-size:16px;line-height:1}
.symbol-pop .sp-close{font-size:22px;padding:2px 6px;border-radius:7px}
.symbol-pop .sp-close:hover{background:var(--soft);color:var(--dark)}
.symbol-pop .sp-current{padding:4px 8px;gap:8px}
.symbol-pop .sp-current svg{width:28px;height:28px;flex:none}
.symbol-pop .sp-main{flex:1;min-height:0;overflow:auto;padding:0 2px 4px;scrollbar-width:thin}
.symbol-pop .sp-caption{margin:10px 2px 5px;font-size:10.5px}
.symbol-pop .sp-caption:first-child{margin-top:2px}
.symbol-pop .symbol-grid{grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:5px}
.symbol-pop .symbol-tile{min-height:84px;padding:7px 4px 5px;gap:4px;white-space:normal;border-radius:8px}
.symbol-pop .symbol-tile svg{width:34px;height:34px}
.symbol-pop .symbol-tile span{font-size:10.5px;white-space:normal;-webkit-line-clamp:3}
.symbol-pop .sp-branches{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:4px}
.symbol-pop .sp-branches button{display:flex;justify-content:space-between;align-items:center;gap:6px;min-width:0;min-height:0;padding:6px 9px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--dark);box-shadow:none;font-size:12.5px;font-weight:500;cursor:pointer}
.symbol-pop .sp-branches button:hover{border-color:var(--teal);background:var(--soft)}
.symbol-pop .sp-branches span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.symbol-pop .sp-branches small{flex:none;color:var(--muted);font-size:11px}
.symbol-pop .sp-crumbs{display:flex;align-items:center;gap:8px;margin:10px 0 6px;position:sticky;top:0;z-index:1;background:var(--surface);padding:2px 0}
.symbol-pop .sp-crumbs b{font-size:13px}
.symbol-pop .sp-cats{top:30px;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
.symbol-pop .sp-cats .chip{flex:none}
.symbol-pop .link-button{border:0;background:none;box-shadow:none;padding:0;min-height:0;color:var(--teal);text-decoration:underline;cursor:pointer;font:inherit}
.symbol-select-button[aria-expanded=true]{border-color:var(--teal)!important;box-shadow:0 0 0 2px color-mix(in srgb,var(--teal) 35%,transparent)}
@media (max-width:650px){dialog.symbol-pop{max-height:calc(100dvh - 16px)!important}.symbol-pop .symbol-grid{grid-template-columns:repeat(auto-fill,minmax(72px,1fr))}}
dialog.symbol-pop.side{transform-origin:center right;animation-name:sp-slide}
@keyframes sp-slide{from{opacity:0;transform:translateX(10px)}to{opacity:1;transform:none}}
.ge2 .meta-event-row{display:flex;align-items:center;gap:6px;min-width:0}
.ge2 .meta-event-row input{flex:1 1 auto;min-width:0;width:auto}
.ge2 .meta-event-row .mini{flex:none}
#geo-map.sector-aiming{cursor:crosshair}
#geo-map.sector-aiming .leaflet-interactive{pointer-events:none}
.ge2 .object-meta,.ge2 .object-meta>.field,.ge2 .meta-event-row{min-width:0;max-width:100%;box-sizing:border-box}
.ge2 .meta-event-row input[type=datetime-local]{width:0}
/* список «Объектов здесь» и подсветка выбранного */
.disambiguation-popup>button{flex-direction:row!important;align-items:center!important;gap:8px!important}
.disambiguation-popup>button>span{display:flex;flex-direction:column;gap:2px;min-width:0}
.disambiguation-popup>button>span b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.disambig-swatch{flex:none;width:12px;height:12px;border-radius:50%;background:var(--c);box-shadow:0 0 0 2px var(--surface),0 0 0 3px var(--line)}
.disambiguation-popup>button.is-hl{background:color-mix(in srgb,#ff9800 18%,transparent)!important;box-shadow:inset 3px 0 0 #ff9800}
.disambig-hl-shape{animation:disambig-pulse 1.1s ease-in-out infinite}
@keyframes disambig-pulse{50%{stroke-opacity:.45;fill-opacity:.08}}
/* ---------- группировка меток ---------- */
.map-cluster{background:none;border:0}
.map-cluster .cl-ring{width:100%;height:100%;border-radius:50%;display:grid;place-items:center;box-shadow:0 2px 8px #0005;cursor:pointer;transition:transform .12s}
.map-cluster .cl-ring span{width:calc(100% - 14px);height:calc(100% - 14px);border-radius:50%;display:grid;place-items:center;background:var(--surface);color:var(--dark);font:700 13px/1 system-ui,sans-serif}
.map-cluster.big .cl-ring span{font-size:14px}
.map-cluster:hover .cl-ring,.map-cluster:focus-visible .cl-ring{transform:scale(1.1)}
.map-cluster:focus-visible{outline:none}.map-cluster:focus-visible .cl-ring{box-shadow:0 0 0 3px var(--teal),0 2px 8px #0005}
.map-cluster .cl-sel{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:#e53935;color:#fff;font:700 10.5px/18px system-ui,sans-serif;text-align:center;box-shadow:0 0 0 2px var(--surface)}
.leaflet-tooltip.cluster-tip{display:grid;gap:3px;padding:8px 10px;border-radius:9px;border:1px solid var(--line);background:var(--surface);color:var(--dark);box-shadow:var(--shadow);font-size:12px}
.leaflet-tooltip.cluster-tip::before{display:none}
.cluster-tip span{display:flex;align-items:center;gap:6px}
.cluster-tip i{width:9px;height:9px;border-radius:50%;flex:none}
.cluster-tip small{color:var(--muted);font-size:10.5px;margin-top:2px}
.map-cluster-btn{position:absolute;right:12px;bottom:136px;z-index:450;width:36px;height:36px;padding:0;display:grid;place-items:center;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--teal);box-shadow:var(--shadow)}
.map-cluster-btn svg{fill:currentColor;stroke:none;opacity:.9}
.map-cluster-btn.off{color:var(--muted)}
.map-cluster-btn[aria-expanded=true]{border-color:var(--teal)}
.cluster-pop{position:absolute;right:56px;bottom:92px;z-index:900;width:min(300px,calc(100vw - 80px));max-height:calc(100% - 120px);overflow:auto;padding:10px 12px 12px;display:grid;gap:10px;align-content:start;background:var(--surface);color:var(--dark);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);animation:hud-in .12s ease-out}
.cluster-pop .pop-head{display:flex;align-items:center;justify-content:space-between}
.cluster-pop .pop-x{border:0;background:none;box-shadow:none;font-size:20px;line-height:1;padding:0 4px;color:var(--muted);cursor:pointer;min-height:0}
.cluster-pop .cl-switch{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500}
.cluster-pop .cl-field{display:grid;gap:4px;font-size:12px}
.cluster-pop .cl-field>span{display:flex;justify-content:space-between;gap:6px;color:var(--muted)}
.cluster-pop .cl-field output,.cluster-pop .cl-field small{color:var(--dark);font-size:11.5px}
.cluster-pop .cl-cap{margin:0;font-size:10.5px;font-weight:650;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.cluster-pop .cl-layers{display:grid;gap:2px;max-height:180px;overflow:auto}
.cluster-pop .cl-layers label{display:flex;align-items:center;gap:7px;font-size:12.5px;padding:3px 2px}
.cluster-pop .cl-layers i{width:10px;height:10px;border-radius:50%;flex:none}
.cluster-pop .cl-layers span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cluster-pop .cl-hint{margin:0;font-size:11px;color:var(--muted);line-height:1.4}
.cluster-pop input[disabled]+i,.cluster-pop input[disabled]~span{opacity:.5}
@media (max-width:650px){.cluster-pop{right:8px;left:8px;width:auto;bottom:180px}}
.map-cluster .cl-ring{box-shadow:0 0 0 1.5px #fff,0 2px 8px #0006}
body.dark .map-cluster .cl-ring{box-shadow:0 0 0 1.5px #0d1b22,0 2px 8px #0008}
.cluster-pop .cl-scale{display:flex;justify-content:space-between;font-size:9.5px;color:var(--muted);margin-top:-2px}
.cluster-pop .cl-scale i{font-style:normal}
.cluster-pop .cl-sub{font-size:10.5px;color:var(--muted)}
.cluster-pop .cl-status{margin:0;padding:6px 8px;border-radius:8px;background:var(--soft);font-size:11.5px;color:var(--dark)}
.cluster-pop input[type=range]{width:100%;accent-color:var(--teal)}
/* ================= Панель слоёв: компактное дерево ================= */
.lt .lt-head{padding-bottom:6px}
.lt .layers-subtitle .link-btn{border:0;background:none;padding:0;min-height:0;color:var(--teal);text-decoration:underline;cursor:pointer;font:inherit;box-shadow:none}
.lt .lt-tools{display:flex;gap:6px;padding:6px 12px 4px}
.lt .lt-tools .search{flex:1;min-width:0;display:flex;align-items:center;gap:6px;padding:0 9px;border:1px solid var(--line);border-radius:9px;background:var(--surface)}
.lt .lt-tools .search svg{width:15px;height:15px;color:var(--muted);flex:none}
.lt .lt-tools .search input{flex:1;min-width:0;border:0!important;box-shadow:none!important;background:transparent!important;padding:7px 0;font-size:13px;outline:0}
.lt .lt-tools select{width:auto;flex:none;padding:5px 24px 5px 8px;font-size:12px;border-radius:9px}
.lt .lt-actions{display:flex;align-items:center;gap:4px;padding:2px 12px 8px;border-bottom:1px solid var(--line)}
.lt .lt-actions .mini{min-height:28px;padding:3px 9px;font-size:12px}
.lt .lt-actions .icon-only{padding:3px 7px}
.lt .lt-sp{flex:1}
.lt .lt-body{padding:6px 8px 10px}
.lt .tree-group{border:0;margin:0 0 2px;padding:0}
.lt .group-summary{display:flex!important;align-items:center;gap:4px;min-height:32px;padding:2px 4px!important;font-size:12.5px;font-weight:600;border-radius:7px;background:transparent;cursor:pointer;list-style:none}
.lt .group-summary::-webkit-details-marker{display:none}
.lt .group-summary:hover{background:var(--soft)}
.lt .lt-caret{width:14px;flex:none;display:grid;place-items:center;color:var(--muted)}
.lt .lt-caret::before{content:'';border:4px solid transparent;border-left:5px solid currentColor;transform-origin:2px 4px;transition:transform .12s}
.lt details[open]>summary .lt-caret::before{transform:rotate(90deg) translateY(-1px)}
.lt .lt-folder svg{width:15px;height:15px;color:var(--muted);display:block}
.lt .lt-inbox svg{color:var(--teal)}
.lt .group-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lt .group-count{font-size:11px;font-weight:500;color:var(--muted);white-space:nowrap}
.lt .group-children{padding:0 0 4px 12px;margin-left:7px;border-left:1px solid var(--line)}
.lt .small-control{width:26px;height:26px;min-height:0;padding:0;display:grid;place-items:center;border-radius:6px;flex:none}
.lt .small-control svg{width:15px;height:15px}
.lt .lt-row{display:flex!important;align-items:center;gap:4px;min-height:32px;padding:1px 2px 1px 0!important;margin:0!important;border:1px solid transparent;border-radius:7px;position:relative}
.lt .lt-row:hover{background:var(--soft)}
.lt .lt-row.selected{background:color-mix(in srgb,var(--teal) 12%,transparent);border-color:color-mix(in srgb,var(--teal) 35%,transparent)}
.lt .lt-row.working{background:color-mix(in srgb,var(--teal) 9%,transparent)}
.lt .lt-row.is-hidden .layer-title-button b,.lt .lt-row.is-hidden .layer-swatch,.lt .lt-row.is-hidden .lt-file{opacity:.45}
.lt .lt-grip{width:14px;flex:none;display:grid;place-items:center;color:var(--muted);cursor:grab;opacity:0;touch-action:none}
.lt .lt-grip svg{width:12px;height:12px;fill:currentColor;stroke:none}
.lt .lt-row:hover .lt-grip,.lt .lt-row:focus-within .lt-grip{opacity:.8}
.lt .lt-check{width:14px;height:14px;margin:0;flex:none;opacity:0;accent-color:var(--teal)}
.lt .lt-row:hover .lt-check,.lt .lt-check:checked,.lt .lt-check:focus-visible,.lt.has-selection .lt-check,.lt .group-summary:hover .lt-check{opacity:1}
.lt .layer-swatch{width:10px;height:10px;border-radius:50%;flex:none}
.lt .layer-title-button{flex:1;min-width:0;display:flex;align-items:center;gap:6px;padding:4px 2px;border:0;background:none;box-shadow:none;text-align:left;color:var(--dark);cursor:pointer;min-height:0}
.lt .layer-title-button b{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lt .layer-title-button small{font-size:10.5px;color:var(--muted);flex:none}
.lt .lt-work{display:inline-flex;align-items:center;gap:2px;flex:none;font-style:normal;font-size:10px;font-weight:600;color:var(--teal);padding:1px 5px;border-radius:999px;background:color-mix(in srgb,var(--teal) 14%,transparent)}
.lt .lt-work svg{width:10px;height:10px}
.lt .lt-count{min-width:24px;height:22px;min-height:0;padding:0 5px;border:0;border-radius:6px;background:none;box-shadow:none;font-size:11.5px;color:var(--muted);text-align:right;flex:none}
.lt button.lt-count:hover:not(:disabled){background:var(--surface);color:var(--teal)}
.lt .lt-eye[aria-pressed=false] svg{opacity:.55}
.lt .lt-eye[aria-pressed=mixed] svg{opacity:.75}
.lt .lt-pad{width:26px;flex:none}
.lt .lt-lock{width:28px;flex:none;display:grid;place-items:center;color:var(--muted)}
.lt .lt-lock svg{width:13px;height:13px}
.lt .lt-system .layer-title-button b{font-weight:500}
.lt .lt-trash{display:flex;align-items:center;gap:6px;width:100%;margin-top:8px;padding:6px 8px;border:0;border-top:1px solid var(--line);border-radius:0;background:none;box-shadow:none;font-size:12px;color:var(--muted);cursor:pointer;min-height:0}
.lt .lt-trash svg{width:14px;height:14px}.lt .lt-trash span{margin-left:auto}
.lt .lt-trash:hover{color:var(--dark)}
.lt .lt-more{display:block;width:100%;margin:6px 0 0;padding:4px 8px;border:0;background:none;box-shadow:none;text-align:left;font-size:11.5px;color:var(--muted);cursor:pointer;min-height:0}
.lt .lt-more:hover{color:var(--teal)}
.lt .empty-group{margin:4px 6px;font-size:11.5px;color:var(--muted)}
.lt .layer-drop-target{box-shadow:inset 0 2px 0 var(--teal)}
.lt details.layer-drop-target>summary{background:color-mix(in srgb,var(--teal) 14%,transparent)}
/* донесения */
.lt .lt-reports>.group-summary{background:color-mix(in srgb,var(--teal) 6%,transparent)}
.lt .lt-feed-tools{display:flex;gap:5px;padding:4px 2px 2px}
.lt .lt-feed-tools input{flex:1;min-width:0;padding:5px 8px;font-size:12px;border-radius:8px}
.lt .lt-feed-tools select{width:auto;padding:4px 22px 4px 7px;font-size:12px;border-radius:8px}
.lt .lt-day{margin:8px 4px 2px;font-size:10.5px;font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.lt .lt-file{width:30px;height:18px;flex:none;display:grid;place-items:center;border-radius:4px;background:var(--soft);color:var(--muted);font-size:8.5px;font-weight:700;text-transform:uppercase;letter-spacing:.02em}
.lt .lt-file svg{width:12px;height:12px}
.lt .lt-file[data-kind=pdf]{background:#e5393522;color:#c62828}.lt .lt-file[data-kind=docx],.lt .lt-file[data-kind=doc]{background:#1e88e522;color:#1565c0}
.lt .lt-file[data-kind=xlsx],.lt .lt-file[data-kind=csv]{background:#43a04722;color:#2e7d32}.lt .lt-file[data-kind=kml],.lt .lt-file[data-kind=geojson],.lt .lt-file[data-kind=gpx],.lt .lt-file[data-kind=kmz]{background:#fb8c0022;color:#e65100}
.lt .lt-feed-actions{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:6px 2px 2px}
.lt .lt-feed-actions .mini{min-height:24px;padding:2px 8px;font-size:11.5px}
.lt .lt-feed-actions small{font-size:11px;color:var(--muted);margin-left:auto}
/* нижняя полоса */
.lt .lt-foot{padding:8px 12px}
.lt .lt-work-bar{display:flex;align-items:center;gap:8px}
.lt .lt-work-bar>span:nth-child(2){flex:1;min-width:0;display:grid}
.lt .lt-work-bar small{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.lt .lt-work-bar b{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lt .lt-bulk-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;font-size:12.5px}
.lt .lt-bulk-actions{display:flex;flex-wrap:wrap;gap:4px}
.lt .lt-bulk-actions .mini{min-height:28px;padding:3px 8px;font-size:12px;display:inline-flex;align-items:center;gap:4px}
.lt .lt-bulk-actions svg{width:13px;height:13px}
/* виды */
.lt .lt-views-wrap{position:relative}
.lt .lt-views-wrap>button small{font-size:10px;padding:0 5px;border-radius:999px;background:var(--soft)}
.lt .lt-views{position:absolute;right:0;top:calc(100% + 6px);z-index:50;width:min(280px,80vw);padding:10px;display:grid;gap:6px;background:var(--surface);color:var(--dark);border:1px solid var(--line);border-radius:11px;box-shadow:var(--shadow);animation:hud-in .12s ease-out}
.lt .lt-views-cap{margin:0;font-size:10.5px;font-weight:650;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.lt .lt-views-empty{margin:0;font-size:12px;color:var(--muted);line-height:1.45}
.lt .lt-view{display:flex;align-items:center;gap:2px;border-radius:8px}
.lt .lt-view:hover{background:var(--soft)}
.lt .lt-view-apply{flex:1;min-width:0;display:grid;text-align:left;padding:5px 7px;border:0;background:none;box-shadow:none;color:var(--dark);cursor:pointer;min-height:0}
.lt .lt-view-apply b{font-size:13px;font-weight:600}.lt .lt-view-apply small{font-size:11px;color:var(--muted)}
.lt .lt-view-new{display:flex;gap:5px;margin-top:2px}
.lt .lt-view-new input{flex:1;min-width:0;padding:6px 8px;font-size:12.5px;border-radius:8px}
/* ================= Подложки ================= */
.bm .bm-cap{display:flex;align-items:baseline;gap:6px;margin:4px 2px 6px;font-size:10.5px;font-weight:650;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.bm .bm-cap small{font-weight:400;text-transform:none;letter-spacing:0;font-size:11px}
.bm .bm-active{display:grid;gap:3px;margin-bottom:12px}
.bm .bm-none{margin:0;padding:10px;border:1px dashed var(--line);border-radius:9px;font-size:12px;color:var(--muted)}
.bm .bm-on{display:flex;align-items:center;gap:6px;padding:4px 4px 4px 2px;border:1px solid var(--line);border-radius:9px;background:var(--surface);position:relative}
.bm .bm-on.dragging{z-index:5;box-shadow:var(--shadow);opacity:.95}
.bm .bm-on.drop-before{box-shadow:0 -2px 0 var(--teal)}
.bm .bm-grip{width:14px;flex:none;display:grid;place-items:center;color:var(--muted);cursor:grab;touch-action:none}
.bm .bm-grip svg{width:12px;height:12px;fill:currentColor;stroke:none}
.bm .bm-mini{width:32px;height:32px;flex:none;border-radius:6px;object-fit:cover}
.bm .bm-on-name{flex:1;min-width:0;display:grid}
.bm .bm-on-name b{font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bm .bm-on-name small{font-size:10.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bm .bm-op{display:flex;align-items:center;gap:4px;flex:none;font-size:11px;color:var(--muted)}
.bm .bm-op input{width:64px;accent-color:var(--teal);padding:0}
.bm .bm-op output{width:32px;text-align:right}
.bm .small-control{width:26px;height:26px;min-height:0;padding:0;display:grid;place-items:center;border-radius:6px;flex:none}
.bm .small-control svg{width:14px;height:14px}
.bm .bm-gal-head{display:flex;gap:6px;margin-bottom:6px}
.bm .bm-gal-head .search{flex:1;min-width:0;display:flex;align-items:center;gap:6px;padding:0 9px;border:1px solid var(--line);border-radius:9px;background:var(--surface)}
.bm .bm-gal-head .search svg{width:15px;height:15px;color:var(--muted)}
.bm .bm-gal-head .search input{flex:1;min-width:0;border:0!important;box-shadow:none!important;background:transparent!important;padding:7px 0;font-size:13px;outline:0}
.bm .bm-cats{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:8px}
.bm .bm-cats .chip{font-size:11.5px;padding:3px 9px}.bm .bm-cats small{opacity:.65}
.bm .bm-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:6px}
.bm .bm-tile{position:relative;border:1px solid var(--line);border-radius:10px;background:var(--surface);overflow:hidden}
.bm .bm-tile.on{border-color:var(--teal);box-shadow:0 0 0 1px var(--teal)}
.bm .bm-tile.err{opacity:.6}
.bm .bm-tile-main{display:grid;width:100%;padding:0 0 6px;border:0;background:none;box-shadow:none;text-align:left;color:var(--dark);cursor:pointer;min-height:0;gap:1px;white-space:normal}
.bm .bm-img{width:100%;aspect-ratio:16/10;object-fit:cover;display:block;background:var(--soft)}
.bm .bm-ph{display:grid!important;place-items:center;color:var(--muted)}
.bm .bm-ph svg{width:26px;height:26px}
.bm .bm-mini.bm-ph svg{width:16px;height:16px}
.bm .bm-ph[data-kind=local],.bm .bm-ph[data-kind=browser]{background:linear-gradient(135deg,color-mix(in srgb,var(--teal) 25%,var(--soft)),var(--soft))}
.bm .bm-tile-name{padding:4px 7px 0;font-size:11.5px;font-weight:600;line-height:1.25;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.bm .bm-tile-main small{padding:0 7px;font-size:10px;color:var(--muted)}
.bm .bm-tile-main:hover .bm-img{filter:brightness(1.06)}
.bm .bm-check{position:absolute;top:5px;left:5px;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:var(--teal);color:#fff;box-shadow:0 1px 4px #0005}
.bm .bm-check svg{width:12px;height:12px}
.bm .bm-tile-add,.bm .bm-tile-del{position:absolute;top:5px;right:5px;width:24px;height:24px;min-height:0;padding:0;border-radius:50%;display:grid;place-items:center;border:0;background:#000a;color:#fff;font-size:16px;line-height:1;cursor:pointer;box-shadow:none}
.bm .bm-tile-add:hover{background:var(--teal)}
.bm .bm-tile-del{top:auto;bottom:30px;font-size:13px;background:#c62828cc}
.bm .bm-tile-new{display:grid;place-items:center;align-content:center;gap:4px;min-height:120px;padding:10px;border-style:dashed;color:var(--muted);cursor:pointer;text-align:center;box-shadow:none}
.bm .bm-tile-new svg{width:20px;height:20px}.bm .bm-tile-new span{font-size:12px;font-weight:600;color:var(--dark)}.bm .bm-tile-new small{font-size:10px}
.bm .bm-hint{margin:10px 2px;font-size:11px;color:var(--muted);line-height:1.45}
.bm .bm-foot{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:8px 12px;font-size:11.5px}
.bm .bm-foot #basemap-quality{margin:0;width:100%;color:var(--muted)}
@media (max-width:650px){.lt .lt-grip,.lt .lt-check{opacity:.8}.bm .bm-op input{width:50px}}
.bm .bm-sec{grid-column:1/-1;margin:6px 2px 0;font-size:10.5px;font-weight:650;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.bm .bm-sec:first-child{margin-top:0}
/* компактные поля в панели слоёв и подложек */
.lt .group-summary:before{content:none!important;display:none!important}
.lt .search svg,.bm .search svg{position:static!important;top:auto;left:auto}
.lt .search input,.bm .search input{padding:6px 0!important;min-height:0;height:30px}
.lt .lt-tools .search,.bm .bm-gal-head .search{height:32px}
.lt .lt-tools .search:focus-within,.bm .bm-gal-head .search:focus-within{border-color:var(--teal)}
.lt .lt-tools select{height:32px;min-height:0;max-width:110px}
.lt .lt-feed-tools input,.lt .lt-feed-tools select{height:28px;min-height:0;padding-top:3px;padding-bottom:3px;font-size:12px}
.lt .lt-feed-tools input{padding-left:8px;padding-right:8px}
.lt .lt-feed-tools select{max-width:96px}
.lt .lt-actions .mini,.lt .lt-actions button{min-height:28px;height:28px}
.bm .bm-gal-head .mini{height:32px;min-height:0;padding:3px 10px;font-size:12px;flex:none}
.lt .lt-report .layer-title-button small{font-size:10px}
/* «Сейчас на карте»: ползунок второй строкой */
.bm .bm-on{flex-wrap:wrap;row-gap:0}
.bm .bm-op{order:10;flex:1 0 100%;padding:0 6px 2px 54px}
.bm .bm-op input{flex:1;width:auto}
.bm .bm-on-name small{white-space:nowrap}
/* плитки подложек: клик — добавить, удержание — предпросмотр */
.bm .bm-gal-head .mini{white-space:nowrap;display:inline-flex;align-items:center;gap:4px;flex:none}
.bm .bm-gal-head .mini svg{width:14px;height:14px;flex:none}
@media (max-width:330px){.bm .bm-gal-head .mini span{display:none}}
.bm .bm-plus{position:absolute;top:5px;right:5px;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:#000a;color:#fff;opacity:0;transition:opacity .12s}
.bm .bm-plus svg{width:13px;height:13px}
.bm .bm-tile-main:hover .bm-plus,.bm .bm-tile-main:focus-visible .bm-plus{opacity:1}
.bm .bm-tile-main{position:relative}
.bm .bm-tile.pressing,.bm .bm-on.pressing{animation:bm-press .55s linear forwards}
@keyframes bm-press{to{transform:scale(.96);box-shadow:0 0 0 3px color-mix(in srgb,var(--teal) 55%,transparent)}}
.bm .bm-tile-main{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
dialog.bm-preview{width:min(720px,calc(100vw - 24px));padding:0;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--dark);box-shadow:0 20px 60px #0006;overflow:hidden}
dialog.bm-preview::backdrop{background:#0006}
.bm-preview>header{display:flex;align-items:center;gap:10px;padding:10px 12px 10px 16px;border-bottom:1px solid var(--line)}
.bm-preview>header>div{flex:1;min-width:0;display:grid}
.bm-preview>header b{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bm-preview>header small{font-size:12px;color:var(--muted)}
#bm-prev-map{height:min(60vh,440px);background:var(--soft)}
.bm-prev-msg{margin:0;padding:8px 16px;font-size:12.5px;color:#c62828;background:#c628281a}
.bm-preview>footer{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:10px 12px;border-top:1px solid var(--line)}
.bm-preview>footer span{flex:1}
.bm-preview>footer .mini{display:inline-flex;align-items:center;gap:4px}
.bm-preview>footer svg{width:14px;height:14px}
.bm .bm-comp{position:relative;display:block;overflow:hidden;background:var(--soft)}
.bm .bm-comp img{position:absolute;max-width:none;image-rendering:auto}
.bm .bm-mini.bm-comp{width:32px;height:32px}

/* 02.55 · Краткий формуляр уже: не шире 260 px, всегда один столбец */
body .leaflet-tooltip.object-hover-tooltip,body .leaflet-tooltip.object-hover-tooltip:has(.two-col){max-width:min(260px,calc(100vw - 24px))}
.object-hover-content,.object-hover-content.two-col{min-width:180px;max-width:258px;width:auto}
.object-hover-content.two-col .object-hover-rows{display:block}
.object-hover-content.two-col .object-hover-row:nth-child(odd):not(.wide){border-right:0}
.object-hover-row,.object-hover-content.two-col .object-hover-row,.object-hover-content.two-col .object-hover-row.wide{grid-template-columns:84px minmax(0,1fr)}
.object-hover-row span{padding:5px 6px;overflow-wrap:normal;word-break:normal;hyphens:manual}
.object-hover-row b{padding:5px 7px}
.object-hover-actions{gap:4px;padding:5px}
.object-hover-actions button{padding:5px 4px;min-width:0}
.hm-tile{width:56px;height:56px}

/* 02.55 · Закладки карты */
.bk-panel .map-panel-head{padding:12px 12px 12px 16px}
.bk-search{display:flex;align-items:center;gap:6px;margin:8px 10px 0;padding:0 8px;border:1px solid var(--line);border-radius:6px;background:var(--surface,#fff)}
.bk-search svg{width:15px;height:15px;color:var(--muted);flex-shrink:0}
.bk-search input{border:0!important;background:transparent!important;box-shadow:none!important;padding:7px 0!important;min-height:0!important;font-size:12.5px;flex:1;min-width:0}
.bk-panel .map-panel-body{padding:6px 6px 10px}
.bk-list{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.bk-item{position:relative;display:flex;align-items:center;gap:2px;border-radius:6px;padding:2px 4px 2px 0;border:1px solid transparent}
.bk-item:hover{background:var(--bg)}
.bk-item.active{background:color-mix(in srgb,var(--teal) 12%,transparent);border-color:color-mix(in srgb,var(--teal) 35%,transparent)}
.bk-item.dragging{opacity:.45}
.bk-item.drop-before{box-shadow:inset 0 2px 0 var(--teal)}
.bk-item.drop-after{box-shadow:inset 0 -2px 0 var(--teal)}
.bk-grip{width:14px;display:grid;place-items:center;color:var(--muted);opacity:0;cursor:grab;flex-shrink:0}
.bk-grip svg{width:13px;height:13px}
.bk-item:hover .bk-grip{opacity:.7}
.bk-go{flex:1;min-width:0;display:flex;align-items:flex-start;gap:8px;text-align:left;border:0!important;background:transparent!important;padding:7px 4px!important;cursor:pointer;color:var(--dark);box-shadow:none!important;min-height:0!important;text-transform:none;letter-spacing:0}
.bk-go:disabled{cursor:default;opacity:.6}
.bk-num{flex-shrink:0;width:18px;height:18px;border-radius:4px;display:grid;place-items:center;font-size:10.5px;font-weight:600;color:var(--muted);border:1px solid var(--line);margin-top:1px}
.bk-num:empty{visibility:hidden}
.bk-item.active .bk-num{background:var(--teal);border-color:var(--teal);color:#fff}
.bk-text{min-width:0;display:grid;gap:2px}
.bk-name{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bk-text small{display:block;font-size:10.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400}
.bk-tag{color:var(--teal);font-weight:500}
.bk-name-input{font-size:13px!important;padding:3px 6px!important;min-height:0!important;width:100%}
.bk-actions{display:flex;gap:0;opacity:0;flex-shrink:0;transition:opacity .12s}
.bk-item:hover .bk-actions,.bk-item:focus-within .bk-actions{opacity:1}
.bk-actions .icon-btn{width:26px;height:26px;padding:0!important;min-height:0!important;display:grid;place-items:center}
.bk-actions svg{width:14px;height:14px}
@media (hover:none){.bk-actions{opacity:1}.bk-grip{opacity:.5}}
.bk-empty{text-align:center;padding:28px 14px;color:var(--muted)}
.bk-empty>svg{width:30px;height:30px;opacity:.5}
.bk-empty p{margin:6px 0 0}
.bk-none{padding:12px 8px}
.bk-undo{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:2px 2px 6px;padding:6px 6px 6px 10px;border-radius:6px;background:var(--bg);font-size:12px}
.bk-undo button{color:var(--teal);font-weight:600;padding:3px 8px}
.bk-add{width:100%;display:flex;align-items:center;justify-content:center;gap:6px}
.bk-add svg{width:15px;height:15px}
.bk-add-form{display:grid;gap:8px}
.bk-add-form [name=name]{font-size:13px;padding:7px 8px}
.bk-check{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--dark);cursor:pointer}
.bk-check input{margin:0}
.bk-add-buttons{display:flex;justify-content:flex-end;gap:6px}
.bk-text small.bk-coords{font-size:10px;opacity:.85;font-family:ui-monospace,monospace}

/* 02.56 · Многопользовательский режим */
body.mu-locked>.app{filter:blur(3px);pointer-events:none;user-select:none}
.mu-login{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:16px;background:color-mix(in srgb,var(--bg,#eef3f1) 82%,transparent)}
.mu-login-card{width:min(360px,100%);display:grid;gap:12px;padding:28px 26px 20px;border-radius:12px;background:var(--surface,#fff);border:1px solid var(--line);box-shadow:0 18px 50px #0003}
body.dark .mu-login-card{background:#1a2e39}
.mu-login-brand{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;background:var(--teal);color:#fff;font-size:20px}
.mu-login-card h1{font-size:22px;margin:4px 0 0}
.mu-login-sub{margin:0;color:var(--muted);font-size:13px}
.mu-login-card label{display:grid;gap:4px;font-size:12px;color:var(--muted)}
.mu-login-card input{font-size:15px;padding:9px 10px}
.mu-login-card button[type=submit]{padding:10px;font-size:14px;margin-top:4px}
.mu-login-error{margin:0;min-height:1em;color:var(--red,#c0392b);font-size:13px}
.mu-login-note{margin:6px 0 0;font-size:11px;color:var(--muted)}
.mu-status{width:9px;height:9px;border-radius:50%;background:#2e9d6a;align-self:center;margin:4px auto;box-shadow:0 0 0 3px #2e9d6a33}
.mu-status[data-state=sync]{background:#d9a21b;box-shadow:0 0 0 3px #d9a21b33}
.mu-status[data-state=error]{background:#d0453a;box-shadow:0 0 0 3px #d0453a33;animation:mu-blink 1.2s infinite}
@keyframes mu-blink{50%{opacity:.35}}
body.mu-no-draw .hud-menu-wrap:has([data-hud-menu=draw]),body.mu-no-draw [data-edit-object],body.mu-no-draw [data-delete-object],body.mu-no-import .hud-menu-wrap:has([data-hud-menu=upload]),body.mu-no-layers [data-action=add-layer],body.mu-no-layers [data-action=add-group]{display:none!important}
.mu-panel{padding:0;overflow:hidden}
.mu-pad{padding:12px 16px}
.mu-toolbar{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.mu-toolbar .search{flex:1;min-width:180px;max-width:340px}
.mu-count{font-size:12px;color:var(--muted)}
.mu-inline{display:flex;align-items:center;gap:8px;font-size:13px}
.mu-table{width:100%;border-collapse:collapse;font-size:13px}
.mu-table th{text-align:left;font-size:11px;font-weight:600;color:var(--muted);padding:9px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.mu-table td{padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
.mu-table tbody tr[tabindex]{cursor:pointer}
.mu-table tbody tr[tabindex]:hover,.mu-table tbody tr[tabindex]:focus-visible{background:var(--bg)}
.mu-table td>b{display:block;font-weight:500}
.mu-table td small{display:block;color:var(--muted);font-size:11.5px}
.mu-table td:first-child{position:relative}
.mu-table td:first-child:has(.mu-ava){padding-left:52px}
.mu-ava{position:absolute;left:12px;top:50%;translate:0 -50%;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--bg);border:1px solid var(--line);font-weight:600;font-size:13px}
.mu-ava.on::after{content:'';position:absolute;right:-1px;bottom:-1px;width:9px;height:9px;border-radius:50%;background:#2e9d6a;border:2px solid var(--surface,#fff)}
.mu-me{display:inline!important;font-weight:400;padding:0 5px;border-radius:4px;background:var(--bg)}
.mu-table .chip{display:inline-block;padding:2px 8px;border-radius:10px;background:var(--bg);border:1px solid var(--line);font-size:11.5px;margin:1px 0}
.mu-scroll{overflow-x:auto}
.mu-matrix th:not(:first-child):not(:last-child){width:64px;vertical-align:bottom;white-space:normal;font-weight:500;line-height:1.2;font-size:10.5px;text-align:center}
.mu-cell{text-align:center}
.mu-yes{color:var(--teal);display:inline-grid}
.mu-yes svg{width:16px;height:16px}
.mu-no{color:var(--muted)}
.mu-audit td{font-size:12.5px;padding:6px 12px}
.mu-audit td:first-child{white-space:nowrap;color:var(--muted)}
.mu-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;padding:16px}
.mu-card{border:1px solid var(--line);border-radius:8px;padding:12px;display:grid;gap:2px}
.mu-card span{font-size:11px;color:var(--muted)}
.mu-card b{font-size:22px;font-weight:600}
.mu-card small{font-size:11px;color:var(--muted)}
a.button{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:6px;text-decoration:none}
a.button.primary{background:var(--teal);color:#fff}
a.button svg{width:16px;height:16px}
.mu-fieldset{border:1px solid var(--line);border-radius:8px;padding:8px 12px 10px;margin:0 0 12px;display:grid;gap:6px}
.mu-fieldset legend{font-size:12px;color:var(--muted);padding:0 4px}
.mu-check{display:flex;align-items:center;gap:8px;font-size:13px;cursor:pointer}
.mu-check input{margin:0}
.mu-danger{color:var(--red,#c0392b);margin:4px 0 12px}
.mu-pass{display:flex;gap:6px}
.mu-pass input{flex:1;min-width:0;font-family:ui-monospace,monospace}
.mu-sessions{list-style:none;margin:0 0 8px;padding:0;display:grid;gap:6px;font-size:12.5px}
.mu-sessions small{display:block;color:var(--muted);font-size:11px}
.muted{color:var(--muted)}
@media (max-width:650px){.mu-table th:nth-child(3),.mu-table td:nth-child(3),.mu-table th:nth-child(4),.mu-table td:nth-child(4){display:none}.mu-matrix th:nth-child(3),.mu-matrix td:nth-child(3){display:table-cell}}
body.mu-mode .notice-inline{display:none}

/* 02.56 · Страница настроек */
.st-layout{display:grid;grid-template-columns:200px minmax(0,760px);gap:24px;align-items:start}
.st-nav{position:sticky;top:12px;display:grid;gap:2px}
.st-nav a{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:6px;color:var(--dark);text-decoration:none;font-size:13px}
.st-nav a:hover{background:var(--bg)}
.st-nav svg{width:16px;height:16px;color:var(--muted)}
.st-cards{display:grid;gap:16px}
.st-card{background:var(--surface,#fff);border:1px solid var(--line);border-radius:10px;padding:6px 18px 8px;scroll-margin-top:12px}
body.dark .st-card{background:#1a2e39}
.st-card h2{display:flex;align-items:center;gap:8px;font-size:15px;margin:12px 0 4px}
.st-card h2 svg{width:18px;height:18px;color:var(--teal)}
.st-note{margin:0 0 4px;font-size:12px;color:var(--muted)}
.st-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:11px 0;border-top:1px solid var(--line)}
.st-card h2+.st-row,.st-note+.st-row{border-top:0}
.st-row>span:first-child{display:grid;gap:2px;min-width:0}
.st-row b{font-weight:500;font-size:13.5px}
.st-row small{font-size:12px;color:var(--muted);line-height:1.35}
.st-row select{min-width:220px;max-width:300px}
.st-row>button{flex-shrink:0;white-space:nowrap}
.st-text input{width:280px;max-width:100%}
.st-off{opacity:.45}
.st-toggle{cursor:pointer}
.st-toggle input{appearance:none;-webkit-appearance:none;flex-shrink:0;width:38px;height:22px;border-radius:11px;background:var(--line);position:relative;cursor:pointer;margin:0;border:0;transition:background .15s}
.st-toggle input::after{content:'';position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0004;transition:left .15s}
.st-toggle input:checked{background:var(--teal)}
.st-toggle input:checked::after{left:19px}
.st-toggle input:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
.st-seg{display:inline-flex;border:1px solid var(--line);border-radius:7px;padding:2px;gap:2px;flex-shrink:0;flex-wrap:wrap}
.st-seg button{border:0!important;background:transparent;padding:5px 11px!important;border-radius:5px;font-size:12.5px;min-height:0!important;box-shadow:none!important;color:var(--dark)}
.st-seg button[aria-checked=true]{background:var(--teal);color:#fff}
.st-range{display:flex;align-items:center;gap:10px;flex-shrink:0}
.st-range input{width:180px}
.st-range output{min-width:52px;text-align:right;font-size:12.5px;font-variant-numeric:tabular-nums}
@media (max-width:900px){.st-layout{grid-template-columns:1fr}.st-nav{position:static;display:flex;overflow-x:auto;gap:4px}.st-nav a{white-space:nowrap;border:1px solid var(--line)}}
@media (max-width:600px){.st-row{flex-wrap:wrap}.st-row select,.st-text input,.st-range input{width:100%;min-width:0;max-width:none}.st-range{width:100%}}
.st-range input,.st-card input[type=checkbox]{accent-color:var(--teal)}
/* 03.11 · Разделы — панелью слева рядом с картой (как «Слои»), карта остаётся рабочей */
.section-panel{min-width:360px;position:relative}
.section-panel .section-close{position:absolute;top:10px;right:8px;z-index:3}
.section-main{flex:1;overflow:auto;padding:14px 12px 18px;overscroll-behavior:contain;font-size:12px}
.section-main .page-heading{display:flex;flex-direction:column;align-items:stretch;gap:8px;margin:0 30px 10px 0}
.section-main .page-heading .eyebrow,.section-main .page-heading .intro{display:none}
.section-main .page-heading h1{font-size:17px;margin:0}
.section-main .page-heading .primary,.section-main .page-heading button{align-self:flex-start;font-size:12px;padding:7px 10px;min-height:0}
.section-main .tabs{display:flex;overflow-x:auto;gap:2px;margin:0 0 10px;scrollbar-width:thin}
.section-main .tabs button{flex:0 0 auto;font-size:11px;padding:7px 9px;white-space:nowrap}
.section-main .panel,.section-main .box{border-radius:10px;padding:0;box-shadow:none}
.section-main .filters,.section-main .toolbar{display:flex;flex-wrap:wrap;gap:6px;padding:8px}
.section-main .filters>*{min-width:0}
.section-main .filters input[type=search],.section-main .filters .search,.section-main .filters label:first-child{flex:1 1 100%}
.section-main .filters select,.section-main .filters button{font-size:11px;min-height:30px;padding:5px 8px}
.section-main .demo-controls,.section-main .hint{display:none}
.section-main .section-caption{font-size:11px;line-height:1.5}
.section-main .table-wrap,.section-main .table-scroll{overflow:visible}
/* таблицы → карточки */
.section-main table{display:block;width:100%;border:0;min-width:0!important}
.section-main thead{display:none}
.section-main tbody{display:grid;gap:6px;padding:6px}
.section-main tr{display:block;position:relative;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.section-main td{display:flex;align-items:baseline;justify-content:space-between;gap:10px;border:0;padding:2px 0;font-size:12px;min-width:0;text-align:right;overflow-wrap:anywhere;white-space:normal}
.section-main td[data-label]::before{content:attr(data-label);color:var(--muted);font-size:10px;white-space:nowrap;text-align:left;flex-shrink:0}
.section-main td:has(>input[type=checkbox]){position:absolute;top:6px;right:8px;padding:0}
.section-main td:has(>input[type=checkbox])::before{display:none}
.section-main td:nth-child(2){display:block;text-align:left;font-size:13px;padding-right:26px}
.section-main td:nth-child(2)::before{display:none}
.section-main td:empty{display:none}
.section-main .table-foot{display:flex;flex-wrap:wrap;gap:6px;justify-content:space-between;padding:8px;font-size:11px}
/* настройки */
.section-main .st-layout{display:block}
.section-main .st-nav{display:flex;overflow-x:auto;gap:4px;position:static;margin-bottom:8px}
.section-main .st-nav a{flex:0 0 auto;font-size:11px;padding:6px 8px}
.section-main .st-card{padding:12px;margin-bottom:10px}
.section-main .st-card h2{font-size:14px}
.section-main .st-row{flex-wrap:wrap;gap:6px}
.section-main .st-row>span{flex:1 1 100%}
.section-main .st-row select,.section-main .st-row input[type=text],.section-main .st-row input[type=number],.section-main .st-row input[type=url],.section-main .st-row input[type=password]{max-width:100%;width:100%}
/* администрирование */
.section-main .mu-cards{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.section-main .mu-pad{padding:10px}
@media(max-width:650px){.section-panel{min-width:0;width:min(100%,360px)!important}}
.section-main .stats{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:0 0 10px}
.section-main .stats .stat,.section-main .stats>button{min-width:0;padding:8px 10px;font-size:11px;text-align:left}
.section-main .stats b,.section-main .stats strong{font-size:18px}
.section-main .notice-inline{font-size:11px;padding:8px 10px}
.section-main .stat-num{font-size:18px;margin-top:2px}.section-main .stat-label{font-size:11px}

/* forms as a side panel over the live map (non-modal, like the object card) */
body dialog.drawer.side-panel{position:fixed;inset:0 0 0 auto;margin:0;z-index:1200;width:min(400px,100vw);max-width:400px;height:100dvh;max-height:100dvh;border-radius:0;box-shadow:-8px 0 30px #0004}
body dialog.drawer.side-panel.win-moved{height:min(82dvh,780px);max-height:calc(100dvh - 16px);border-radius:14px}
dialog.drawer.side-panel .dialog-head{padding:12px 14px}
dialog.drawer.side-panel .dialog-head h2{font-size:16px}
dialog.drawer.side-panel .dialog-body{padding:12px 14px}
dialog.drawer.side-panel .dialog-foot{padding:10px 14px;flex-wrap:wrap}
dialog.drawer.side-panel .field-row{grid-template-columns:minmax(0,1fr)}
@media(max-width:650px){body dialog.drawer.side-panel{inset:auto 0 0 0;width:100vw;max-width:100vw;height:60dvh;max-height:60dvh;border-radius:14px 14px 0 0}}
