.react-grid-layout {
  position: relative;
  transition: height 200ms ease;
}
.react-grid-item {
  transition: all 200ms ease;
  transition-property: left, top, width, height;
}
.react-grid-item img {
  pointer-events: none;
  user-select: none;
}
.react-grid-item.cssTransforms {
  transition-property: transform, width, height;
}
.react-grid-item.resizing {
  transition: none;
  z-index: 1;
  will-change: width, height;
}

.react-grid-item.react-draggable-dragging {
  transition: none;
  z-index: 3;
  will-change: transform;
}

.react-grid-item.dropping {
  visibility: hidden;
}

.react-grid-item.react-grid-placeholder {
  background: red;
  opacity: 0.2;
  transition-duration: 100ms;
  z-index: 2;
  user-select: none;
}

.react-grid-item.react-grid-placeholder.placeholder-resizing {
  transition: none;
}

.react-grid-item > .react-resizable-handle {
  position: absolute;
  width: 20px;
  height: 20px;
  opacity: 0;
}

.react-grid-item:hover > .react-resizable-handle {
  opacity: 1;
}

.react-grid-item > .react-resizable-handle::after {
  content: "";
  position: absolute;
  right: 3px;
  bottom: 3px;
  width: 5px;
  height: 5px;
  border-right: 2px solid rgba(0, 0, 0, 0.4);
  border-bottom: 2px solid rgba(0, 0, 0, 0.4);
}

.react-resizable-hide > .react-resizable-handle {
  display: none;
}

.react-grid-item > .react-resizable-handle.react-resizable-handle-sw {
  bottom: 0;
  left: 0;
  cursor: sw-resize;
  transform: rotate(90deg);
}
.react-grid-item > .react-resizable-handle.react-resizable-handle-se {
  bottom: 0;
  right: 0;
  cursor: se-resize;
}
.react-grid-item > .react-resizable-handle.react-resizable-handle-nw {
  top: 0;
  left: 0;
  cursor: nw-resize;
  transform: rotate(180deg);
}
.react-grid-item > .react-resizable-handle.react-resizable-handle-ne {
  top: 0;
  right: 0;
  cursor: ne-resize;
  transform: rotate(270deg);
}
.react-grid-item > .react-resizable-handle.react-resizable-handle-w,
.react-grid-item > .react-resizable-handle.react-resizable-handle-e {
  top: 50%;
  margin-top: -10px;
  cursor: ew-resize;
}
.react-grid-item > .react-resizable-handle.react-resizable-handle-w {
  left: 0;
  transform: rotate(135deg);
}
.react-grid-item > .react-resizable-handle.react-resizable-handle-e {
  right: 0;
  transform: rotate(315deg);
}
.react-grid-item > .react-resizable-handle.react-resizable-handle-n,
.react-grid-item > .react-resizable-handle.react-resizable-handle-s {
  left: 50%;
  margin-left: -10px;
  cursor: ns-resize;
}
.react-grid-item > .react-resizable-handle.react-resizable-handle-n {
  top: 0;
  transform: rotate(225deg);
}
.react-grid-item > .react-resizable-handle.react-resizable-handle-s {
  bottom: 0;
  transform: rotate(45deg);
}
.react-resizable {
  position: relative;
}
.react-resizable-handle {
  position: absolute;
  width: 20px;
  height: 20px;
  background-repeat: no-repeat;
  background-origin: content-box;
  box-sizing: border-box;
  background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+');
  background-position: bottom right;
  padding: 0 3px 3px 0;
}
.react-resizable-handle-sw {
  bottom: 0;
  left: 0;
  cursor: sw-resize;
  transform: rotate(90deg);
}
.react-resizable-handle-se {
  bottom: 0;
  right: 0;
  cursor: se-resize;
}
.react-resizable-handle-nw {
  top: 0;
  left: 0;
  cursor: nw-resize;
  transform: rotate(180deg);
}
.react-resizable-handle-ne {
  top: 0;
  right: 0;
  cursor: ne-resize;
  transform: rotate(270deg);
}
.react-resizable-handle-w,
.react-resizable-handle-e {
  top: 50%;
  margin-top: -10px;
  cursor: ew-resize;
}
.react-resizable-handle-w {
  left: 0;
  transform: rotate(135deg);
}
.react-resizable-handle-e {
  right: 0;
  transform: rotate(315deg);
}
.react-resizable-handle-n,
.react-resizable-handle-s {
  left: 50%;
  margin-left: -10px;
  cursor: ns-resize;
}
.react-resizable-handle-n {
  top: 0;
  transform: rotate(225deg);
}
.react-resizable-handle-s {
  bottom: 0;
  transform: rotate(45deg);
}/* required styles */

.leaflet-pane,
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-tile-container,
.leaflet-pane > svg,
.leaflet-pane > canvas,
.leaflet-zoom-box,
.leaflet-image-layer,
.leaflet-layer {
	position: absolute;
	left: 0;
	top: 0;
	}
.leaflet-container {
	overflow: hidden;
	}
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow {
	-webkit-user-select: none;
	   -moz-user-select: none;
	        user-select: none;
	  -webkit-user-drag: none;
	}
/* Prevents IE11 from highlighting tiles in blue */
.leaflet-tile::selection {
	background: transparent;
}
/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
.leaflet-safari .leaflet-tile {
	image-rendering: -webkit-optimize-contrast;
	}
/* hack that prevents hw layers "stretching" when loading new tiles */
.leaflet-safari .leaflet-tile-container {
	width: 1600px;
	height: 1600px;
	-webkit-transform-origin: 0 0;
	}
.leaflet-marker-icon,
.leaflet-marker-shadow {
	display: block;
	}
/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
.leaflet-container .leaflet-overlay-pane svg {
	max-width: none !important;
	max-height: none !important;
	}
.leaflet-container .leaflet-marker-pane img,
.leaflet-container .leaflet-shadow-pane img,
.leaflet-container .leaflet-tile-pane img,
.leaflet-container img.leaflet-image-layer,
.leaflet-container .leaflet-tile {
	max-width: none !important;
	max-height: none !important;
	width: auto;
	padding: 0;
	}

.leaflet-container img.leaflet-tile {
	/* See: https://bugs.chromium.org/p/chromium/issues/detail?id=600120 */
	mix-blend-mode: plus-lighter;
}

.leaflet-container.leaflet-touch-zoom {
	-ms-touch-action: pan-x pan-y;
	touch-action: pan-x pan-y;
	}
.leaflet-container.leaflet-touch-drag {
	-ms-touch-action: pinch-zoom;
	/* Fallback for FF which doesn't support pinch-zoom */
	touch-action: none;
	touch-action: pinch-zoom;
}
.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
	-ms-touch-action: none;
	touch-action: none;
}
.leaflet-container {
	-webkit-tap-highlight-color: transparent;
}
.leaflet-container a {
	-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
}
.leaflet-tile {
	filter: inherit;
	visibility: hidden;
	}
.leaflet-tile-loaded {
	visibility: inherit;
	}
.leaflet-zoom-box {
	width: 0;
	height: 0;
	-moz-box-sizing: border-box;
	     box-sizing: border-box;
	z-index: 800;
	}
/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
.leaflet-overlay-pane svg {
	-moz-user-select: none;
	}

.leaflet-pane         { z-index: 400; }

.leaflet-tile-pane    { z-index: 200; }
.leaflet-overlay-pane { z-index: 400; }
.leaflet-shadow-pane  { z-index: 500; }
.leaflet-marker-pane  { z-index: 600; }
.leaflet-tooltip-pane   { z-index: 650; }
.leaflet-popup-pane   { z-index: 700; }

.leaflet-map-pane canvas { z-index: 100; }
.leaflet-map-pane svg    { z-index: 200; }

.leaflet-vml-shape {
	width: 1px;
	height: 1px;
	}
.lvml {
	behavior: url(#default#VML);
	display: inline-block;
	position: absolute;
	}


/* control positioning */

.leaflet-control {
	position: relative;
	z-index: 800;
	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
	pointer-events: auto;
	}
.leaflet-top,
.leaflet-bottom {
	position: absolute;
	z-index: 1000;
	pointer-events: none;
	}
.leaflet-top {
	top: 0;
	}
.leaflet-right {
	right: 0;
	}
.leaflet-bottom {
	bottom: 0;
	}
.leaflet-left {
	left: 0;
	}
.leaflet-control {
	float: left;
	clear: both;
	}
.leaflet-right .leaflet-control {
	float: right;
	}
.leaflet-top .leaflet-control {
	margin-top: 10px;
	}
.leaflet-bottom .leaflet-control {
	margin-bottom: 10px;
	}
.leaflet-left .leaflet-control {
	margin-left: 10px;
	}
.leaflet-right .leaflet-control {
	margin-right: 10px;
	}


/* zoom and fade animations */

.leaflet-fade-anim .leaflet-popup {
	opacity: 0;
	-webkit-transition: opacity 0.2s linear;
	   -moz-transition: opacity 0.2s linear;
	        transition: opacity 0.2s linear;
	}
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
	opacity: 1;
	}
.leaflet-zoom-animated {
	-webkit-transform-origin: 0 0;
	    -ms-transform-origin: 0 0;
	        transform-origin: 0 0;
	}
svg.leaflet-zoom-animated {
	will-change: transform;
}

.leaflet-zoom-anim .leaflet-zoom-animated {
	-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
	   -moz-transition:    -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
	        transition:         transform 0.25s cubic-bezier(0,0,0.25,1);
	}
.leaflet-zoom-anim .leaflet-tile,
.leaflet-pan-anim .leaflet-tile {
	-webkit-transition: none;
	   -moz-transition: none;
	        transition: none;
	}

.leaflet-zoom-anim .leaflet-zoom-hide {
	visibility: hidden;
	}


/* cursors */

.leaflet-interactive {
	cursor: pointer;
	}
.leaflet-grab {
	cursor: -webkit-grab;
	cursor:    -moz-grab;
	cursor:         grab;
	}
.leaflet-crosshair,
.leaflet-crosshair .leaflet-interactive {
	cursor: crosshair;
	}
.leaflet-popup-pane,
.leaflet-control {
	cursor: auto;
	}
.leaflet-dragging .leaflet-grab,
.leaflet-dragging .leaflet-grab .leaflet-interactive,
.leaflet-dragging .leaflet-marker-draggable {
	cursor: move;
	cursor: -webkit-grabbing;
	cursor:    -moz-grabbing;
	cursor:         grabbing;
	}

/* marker & overlays interactivity */
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-image-layer,
.leaflet-pane > svg path,
.leaflet-tile-container {
	pointer-events: none;
	}

.leaflet-marker-icon.leaflet-interactive,
.leaflet-image-layer.leaflet-interactive,
.leaflet-pane > svg path.leaflet-interactive,
svg.leaflet-image-layer.leaflet-interactive path {
	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
	pointer-events: auto;
	}

/* visual tweaks */

.leaflet-container {
	background: #ddd;
	outline-offset: 1px;
	}
.leaflet-container a {
	color: #0078A8;
	}
.leaflet-zoom-box {
	border: 2px dotted #38f;
	background: rgba(255,255,255,0.5);
	}


/* general typography */
.leaflet-container {
	font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
	font-size: 12px;
	font-size: 0.75rem;
	line-height: 1.5;
	}


/* general toolbar styles */

.leaflet-bar {
	box-shadow: 0 1px 5px rgba(0,0,0,0.65);
	border-radius: 4px;
	}
.leaflet-bar a {
	background-color: #fff;
	border-bottom: 1px solid #ccc;
	width: 26px;
	height: 26px;
	line-height: 26px;
	display: block;
	text-align: center;
	text-decoration: none;
	color: black;
	}
.leaflet-bar a,
.leaflet-control-layers-toggle {
	background-position: 50% 50%;
	background-repeat: no-repeat;
	display: block;
	}
.leaflet-bar a:hover,
.leaflet-bar a:focus {
	background-color: #f4f4f4;
	}
.leaflet-bar a:first-child {
	border-top-left-radius: 4px;
	border-top-right-radius: 4px;
	}
.leaflet-bar a:last-child {
	border-bottom-left-radius: 4px;
	border-bottom-right-radius: 4px;
	border-bottom: none;
	}
.leaflet-bar a.leaflet-disabled {
	cursor: default;
	background-color: #f4f4f4;
	color: #bbb;
	}

.leaflet-touch .leaflet-bar a {
	width: 30px;
	height: 30px;
	line-height: 30px;
	}
.leaflet-touch .leaflet-bar a:first-child {
	border-top-left-radius: 2px;
	border-top-right-radius: 2px;
	}
.leaflet-touch .leaflet-bar a:last-child {
	border-bottom-left-radius: 2px;
	border-bottom-right-radius: 2px;
	}

/* zoom control */

.leaflet-control-zoom-in,
.leaflet-control-zoom-out {
	font: bold 18px 'Lucida Console', Monaco, monospace;
	text-indent: 1px;
	}

.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out  {
	font-size: 22px;
	}


/* layers control */

.leaflet-control-layers {
	box-shadow: 0 1px 5px rgba(0,0,0,0.4);
	background: #fff;
	border-radius: 5px;
	}
.leaflet-control-layers-toggle {
	background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC);
	width: 36px;
	height: 36px;
	}
.leaflet-retina .leaflet-control-layers-toggle {
	background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=);
	background-size: 26px 26px;
	}
.leaflet-touch .leaflet-control-layers-toggle {
	width: 44px;
	height: 44px;
	}
.leaflet-control-layers .leaflet-control-layers-list,
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
	display: none;
	}
.leaflet-control-layers-expanded .leaflet-control-layers-list {
	display: block;
	position: relative;
	}
.leaflet-control-layers-expanded {
	padding: 6px 10px 6px 6px;
	color: #333;
	background: #fff;
	}
.leaflet-control-layers-scrollbar {
	overflow-y: scroll;
	overflow-x: hidden;
	padding-right: 5px;
	}
.leaflet-control-layers-selector {
	margin-top: 2px;
	position: relative;
	top: 1px;
	}
.leaflet-control-layers label {
	display: block;
	font-size: 13px;
	font-size: 1.08333em;
	}
.leaflet-control-layers-separator {
	height: 0;
	border-top: 1px solid #ddd;
	margin: 5px -10px 5px -6px;
	}

/* Default icon URLs */
.leaflet-default-icon-path { /* used only in path-guessing heuristic, see L.Icon.Default */
	background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=);
	}


/* attribution and scale controls */

.leaflet-container .leaflet-control-attribution {
	background: #fff;
	background: rgba(255, 255, 255, 0.8);
	margin: 0;
	}
.leaflet-control-attribution,
.leaflet-control-scale-line {
	padding: 0 5px;
	color: #333;
	line-height: 1.4;
	}
.leaflet-control-attribution a {
	text-decoration: none;
	}
.leaflet-control-attribution a:hover,
.leaflet-control-attribution a:focus {
	text-decoration: underline;
	}
.leaflet-attribution-flag {
	display: inline !important;
	vertical-align: baseline !important;
	width: 1em;
	height: 0.6669em;
	}
.leaflet-left .leaflet-control-scale {
	margin-left: 5px;
	}
.leaflet-bottom .leaflet-control-scale {
	margin-bottom: 5px;
	}
.leaflet-control-scale-line {
	border: 2px solid #777;
	border-top: none;
	line-height: 1.1;
	padding: 2px 5px 1px;
	white-space: nowrap;
	-moz-box-sizing: border-box;
	     box-sizing: border-box;
	background: rgba(255, 255, 255, 0.8);
	text-shadow: 1px 1px #fff;
	}
.leaflet-control-scale-line:not(:first-child) {
	border-top: 2px solid #777;
	border-bottom: none;
	margin-top: -2px;
	}
.leaflet-control-scale-line:not(:first-child):not(:last-child) {
	border-bottom: 2px solid #777;
	}

.leaflet-touch .leaflet-control-attribution,
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
	box-shadow: none;
	}
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
	border: 2px solid rgba(0,0,0,0.2);
	background-clip: padding-box;
	}


/* popup */

.leaflet-popup {
	position: absolute;
	text-align: center;
	margin-bottom: 20px;
	}
.leaflet-popup-content-wrapper {
	padding: 1px;
	text-align: left;
	border-radius: 12px;
	}
.leaflet-popup-content {
	margin: 13px 24px 13px 20px;
	line-height: 1.3;
	font-size: 13px;
	font-size: 1.08333em;
	min-height: 1px;
	}
.leaflet-popup-content p {
	margin: 17px 0;
	margin: 1.3em 0;
	}
.leaflet-popup-tip-container {
	width: 40px;
	height: 20px;
	position: absolute;
	left: 50%;
	margin-top: -1px;
	margin-left: -20px;
	overflow: hidden;
	pointer-events: none;
	}
.leaflet-popup-tip {
	width: 17px;
	height: 17px;
	padding: 1px;

	margin: -10px auto 0;
	pointer-events: auto;

	-webkit-transform: rotate(45deg);
	   -moz-transform: rotate(45deg);
	    -ms-transform: rotate(45deg);
	        transform: rotate(45deg);
	}
.leaflet-popup-content-wrapper,
.leaflet-popup-tip {
	background: white;
	color: #333;
	box-shadow: 0 3px 14px rgba(0,0,0,0.4);
	}
.leaflet-container a.leaflet-popup-close-button {
	position: absolute;
	top: 0;
	right: 0;
	border: none;
	text-align: center;
	width: 24px;
	height: 24px;
	font: 16px/24px Tahoma, Verdana, sans-serif;
	color: #757575;
	text-decoration: none;
	background: transparent;
	}
.leaflet-container a.leaflet-popup-close-button:hover,
.leaflet-container a.leaflet-popup-close-button:focus {
	color: #585858;
	}
.leaflet-popup-scrolled {
	overflow: auto;
	}

.leaflet-oldie .leaflet-popup-content-wrapper {
	-ms-zoom: 1;
	}
.leaflet-oldie .leaflet-popup-tip {
	width: 24px;
	margin: 0 auto;

	-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
	filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
	}

.leaflet-oldie .leaflet-control-zoom,
.leaflet-oldie .leaflet-control-layers,
.leaflet-oldie .leaflet-popup-content-wrapper,
.leaflet-oldie .leaflet-popup-tip {
	border: 1px solid #999;
	}


/* div icon */

.leaflet-div-icon {
	background: #fff;
	border: 1px solid #666;
	}


/* Tooltip */
/* Base styles for the element that has a tooltip */
.leaflet-tooltip {
	position: absolute;
	padding: 6px;
	background-color: #fff;
	border: 1px solid #fff;
	border-radius: 3px;
	color: #222;
	white-space: nowrap;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
	pointer-events: none;
	box-shadow: 0 1px 3px rgba(0,0,0,0.4);
	}
.leaflet-tooltip.leaflet-interactive {
	cursor: pointer;
	pointer-events: auto;
	}
.leaflet-tooltip-top:before,
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
	position: absolute;
	pointer-events: none;
	border: 6px solid transparent;
	background: transparent;
	content: "";
	}

/* Directions */

.leaflet-tooltip-bottom {
	margin-top: 6px;
}
.leaflet-tooltip-top {
	margin-top: -6px;
}
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-top:before {
	left: 50%;
	margin-left: -6px;
	}
.leaflet-tooltip-top:before {
	bottom: 0;
	margin-bottom: -12px;
	border-top-color: #fff;
	}
.leaflet-tooltip-bottom:before {
	top: 0;
	margin-top: -12px;
	margin-left: -6px;
	border-bottom-color: #fff;
	}
.leaflet-tooltip-left {
	margin-left: -6px;
}
.leaflet-tooltip-right {
	margin-left: 6px;
}
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
	top: 50%;
	margin-top: -6px;
	}
.leaflet-tooltip-left:before {
	right: 0;
	margin-right: -12px;
	border-left-color: #fff;
	}
.leaflet-tooltip-right:before {
	left: 0;
	margin-left: -12px;
	border-right-color: #fff;
	}

/* Printing */

@media print {
	/* Prevent printers from removing background-images of controls. */
	.leaflet-control {
		-webkit-print-color-adjust: exact;
		print-color-adjust: exact;
		}
	}
:root {
	--fullscreen-icon-enter: url('data:image/svg+xml,<svg viewBox="0 0 26 26" xmlns="http://www.w3.org/2000/svg"><path d="M5 10.3V5.9c0-.5.4-.9.9-.9h4.4c.2 0 .4.2.4.4V7c0 .2-.2.4-.4.4h-3v3c0 .2-.2.4-.4.4H5.4a.4.4 0 0 1-.4-.4zm10.3-4.9V7c0 .2.2.4.4.4h3v3c0 .2.2.4.4.4h1.5c.2 0 .4-.2.4-.4V5.9c0-.5-.4-.9-.9-.9h-4.4c-.2 0-.4.2-.4.4zm5.3 9.9H19c-.2 0-.4.2-.4.4v3h-3c-.2 0-.4.2-.4.4v1.5c0 .2.2.4.4.4h4.4c.5 0 .9-.4.9-.9v-4.4c0-.2-.2-.4-.4-.4zm-9.9 5.3V19c0-.2-.2-.4-.4-.4h-3v-3c0-.2-.2-.4-.4-.4H5.4c-.2 0-.4.2-.4.4v4.4c0 .5.4.9.9.9h4.4c.2 0 .4-.2.4-.4z" fill="%23333"/></svg>');
	--fullscreen-icon-exit: url('data:image/svg+xml,<svg viewBox="0 0 26 26" xmlns="http://www.w3.org/2000/svg"><path d="M20.6 10.7H16a.9.9 0 0 1-.8-.8v-4.5c0-.2.2-.4.4-.4h1.4c.3 0 .5.2.5.4v3h3c.2 0 .4.2.4.5v1.4c0 .2-.2.4-.4.4zm-9.9-.8V5.4c0-.2-.2-.4-.4-.4H8.9c-.3 0-.5.2-.5.4v3h-3c-.2 0-.4.2-.4.5v1.4c0 .2.2.4.4.4H9.9c.4 0 .8-.4.8-.8zm0 10.7V16c0-.4-.4-.8-.8-.8H5.4c-.2 0-.4.2-.4.4v1.4c0 .3.2.5.4.5h3v3c0 .2.2.4.5.4h1.4c.2 0 .4-.2.4-.4zm6.9 0v-3h3c.2 0 .4-.2.4-.5v-1.4c0-.2-.2-.4-.4-.4H16c-.4 0-.8.4-.8.8v4.5c0 .2.2.4.4.4h1.5c.3 0 .5-.2.5-.4z" fill="%23333"/></svg>');
}

.leaflet-fullscreen-icon {
	background-image: var(--fullscreen-icon-enter);
	background-size: 26px 26px;
}

.leaflet-fullscreen-icon.leaflet-fullscreen-on {
	background-image: var(--fullscreen-icon-exit);
}

/* Safari still needs this vendor-prefix: https://caniuse.com/mdn-css_selectors_fullscreen */
/* stylelint-disable-next-line selector-no-vendor-prefix */
.leaflet-container:-webkit-full-screen,
.leaflet-container:fullscreen {
	width: 100% !important;
	height: 100% !important;
	z-index: 99999;
}

.leaflet-pseudo-fullscreen {
	position: fixed !important;
	width: 100% !important;
	height: 100% !important;
	top: 0 !important;
	left: 0 !important;
	z-index: 99999;
}
.marker-icon{background-color:#fff;border:1px solid #3388ff;border-radius:50%;margin:-8px 0 0 -8px!important;width:14px!important;height:14px!important;outline:0;transition:opacity ease .3s}.marker-icon-middle{opacity:.7;margin:-6px 0 0 -6px!important;width:10px!important;height:10px!important}.leaflet-pm-draggable{cursor:move!important}.cursor-marker{cursor:crosshair;pointer-events:none;opacity:0}.cursor-marker.visible{opacity:1!important}.geoman-draw-cursor,.geoman-draw-cursor .leaflet-interactive{cursor:crosshair}.rect-style-marker,.rect-start-marker{opacity:0}.rect-style-marker.visible,.rect-start-marker.visible{opacity:1!important}.vertexmarker-disabled{opacity:.7}.pm-text-marker{width:0;height:0}.pm-textarea{box-sizing:content-box;background-color:#fff;color:#000;resize:none;border:none;outline:0;cursor:pointer;border-radius:3px;padding-left:7px;padding-bottom:0;padding-top:4px}.leaflet-pm-draggable .pm-textarea{cursor:move}.pm-textarea:focus,.pm-textarea:focus-within,.pm-textarea:focus-visible,.pm-textarea:active{border:2px solid #000;outline:0}.pm-textarea.pm-disabled{border:none;user-select:none}.pm-textarea.pm-hasfocus{cursor:auto}.leaflet-pm-touch-hint{position:absolute;top:var(--pm-touch-hint-top, 10px);left:50%;transform:translate(-50%);background:#fffffff2;color:#333;padding:8px 16px;border-radius:4px;box-shadow:0 2px 6px #0003;z-index:1000;font-size:14px;pointer-events:none}.leaflet-pm-toolbar .leaflet-buttons-control-button{padding:5px;box-sizing:border-box;position:relative;z-index:3}.leaflet-pm-toolbar .leaflet-pm-actions-container a.leaflet-pm-action:first-child:not(.pos-right),.leaflet-pm-toolbar .leaflet-pm-actions-container a.leaflet-pm-action:last-child.pos-right{border-radius:0}.leaflet-pm-toolbar .button-container a.leaflet-buttons-control-button{border-radius:0}.leaflet-pm-toolbar .button-container:last-child a.leaflet-buttons-control-button{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-pm-toolbar .button-container:first-child a.leaflet-buttons-control-button{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-pm-toolbar .button-container:last-child a.leaflet-buttons-control-button{border-bottom:none}.leaflet-pm-toolbar .control-fa-icon{font-size:19px;line-height:24px}.leaflet-pm-toolbar .control-icon{width:100%;height:100%;box-sizing:border-box;background-size:contain;background-repeat:no-repeat;background-position:center center}.leaflet-pm-toolbar .leaflet-pm-icon-marker{background-image:url('data:image/svg+xml,<?xml version="1.0" encoding="UTF-8"?>%0A<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">%0A    <!-- Generator: Sketch 52.5 (67469) - http://www.bohemiancoding.com/sketch -->%0A    <title>Atoms/Icons/Tools/Marker</title>%0A    <desc>Created with Sketch.</desc>%0A    <defs>%0A        <path d="M15.5,24.8782959 C15.2909201,24.8772219 15.1744857,24.8467817 14.6590866,24.2354163 C10.2196955,19.4118054 8,15.5014392 8,12.5043177 C8,8.35979746 11.3578644,5 15.5,5 C19.6421356,5 23,8.35979746 23,12.5043177 C23,17 18.2878217,21.9268378 16.3336601,24.2440186 C15.8224622,24.8501802 15.7090799,24.8793699 15.5,24.8782959 Z M15.5,15.5326948 C17.275201,15.5326948 18.7142857,14.1180004 18.7142857,12.3728864 C18.7142857,10.6277723 17.275201,9.21307792 15.5,9.21307792 C13.724799,9.21307792 12.2857143,10.6277723 12.2857143,12.3728864 C12.2857143,14.1180004 13.724799,15.5326948 15.5,15.5326948 Z" id="path-1"></path>%0A    </defs>%0A    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">%0A        <g id="Atoms/Icons/Tools/Marker" transform="translate(-3.000000, -3.000000)">%0A            <mask id="mask-2" fill="white">%0A                <use xlink:href="%23path-1"></use>%0A            </mask>%0A            <use id="Mask" fill="%235B5B5B" fill-rule="nonzero" xlink:href="%23path-1"></use>%0A        </g>%0A    </g>%0A</svg>')}.leaflet-pm-toolbar .leaflet-pm-icon-polygon{background-image:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">%0A  <defs>%0A    <path id="polygon-a" d="M19.4206892,9.16509725 C19.1523681,8.66992914 19,8.10275831 19,7.5 C19,5.56700338 20.5670034,4 22.5,4 C24.4329966,4 26,5.56700338 26,7.5 C26,9.26323595 24.6961471,10.7219407 23,10.9645556 L23,19.0354444 C24.6961471,19.2780593 26,20.736764 26,22.5 C26,24.4329966 24.4329966,26 22.5,26 C20.736764,26 19.2780593,24.6961471 19.0354444,23 L10.9645556,23 C10.7219407,24.6961471 9.26323595,26 7.5,26 C5.56700338,26 4,24.4329966 4,22.5 C4,20.5670034 5.56700338,19 7.5,19 C8.10275831,19 8.66992914,19.1523681 9.16509725,19.4206892 L19.4206892,9.16509725 Z M20.8349073,10.5793063 L10.5793108,20.8349027 C10.6086731,20.8890888 10.6366469,20.9441372 10.6631844,21 L19.3368156,21 C19.6825775,20.272154 20.272154,19.6825775 21,19.3368156 L21,10.6631844 C20.9441372,10.6366469 20.8890888,10.6086731 20.8349027,10.5793108 Z M22.5,9 C23.3284271,9 24,8.32842712 24,7.5 C24,6.67157288 23.3284271,6 22.5,6 C21.6715729,6 21,6.67157288 21,7.5 C21,8.32842712 21.6715729,9 22.5,9 Z M22.5,24 C23.3284271,24 24,23.3284271 24,22.5 C24,21.6715729 23.3284271,21 22.5,21 C21.6715729,21 21,21.6715729 21,22.5 C21,23.3284271 21.6715729,24 22.5,24 Z M7.5,24 C8.32842712,24 9,23.3284271 9,22.5 C9,21.6715729 8.32842712,21 7.5,21 C6.67157288,21 6,21.6715729 6,22.5 C6,23.3284271 6.67157288,24 7.5,24 Z"/>%0A  </defs>%0A  <g fill="none" fill-rule="evenodd" transform="translate(-3 -3)">%0A    <mask id="polygon-b" fill="%23fff">%0A      <use xlink:href="%23polygon-a"/>%0A    </mask>%0A    <use fill="%235B5B5B" fill-rule="nonzero" xlink:href="%23polygon-a"/>%0A    <g fill="%235B5B5B" mask="url(%23polygon-b)">%0A      <rect width="30" height="30"/>%0A    </g>%0A  </g>%0A</svg>%0A')}.leaflet-pm-toolbar .leaflet-pm-icon-polyline{background-image:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">%0A  <defs>%0A    <path id="line-a" d="M9.16509725,19.4206892 L18.4206892,10.1650973 C18.1523681,9.66992914 18,9.10275831 18,8.5 C18,6.56700338 19.5670034,5 21.5,5 C23.4329966,5 25,6.56700338 25,8.5 C25,10.4329966 23.4329966,12 21.5,12 C20.8972417,12 20.3300709,11.8476319 19.8349027,11.5793108 L10.5793108,20.8349027 C10.8476319,21.3300709 11,21.8972417 11,22.5 C11,24.4329966 9.43299662,26 7.5,26 C5.56700338,26 4,24.4329966 4,22.5 C4,20.5670034 5.56700338,19 7.5,19 C8.10275831,19 8.66992914,19.1523681 9.16509725,19.4206892 Z M21.5,10 C22.3284271,10 23,9.32842712 23,8.5 C23,7.67157288 22.3284271,7 21.5,7 C20.6715729,7 20,7.67157288 20,8.5 C20,9.32842712 20.6715729,10 21.5,10 Z M7.5,24 C8.32842712,24 9,23.3284271 9,22.5 C9,21.6715729 8.32842712,21 7.5,21 C6.67157288,21 6,21.6715729 6,22.5 C6,23.3284271 6.67157288,24 7.5,24 Z"/>%0A  </defs>%0A  <g fill="none" fill-rule="evenodd" transform="translate(-3 -3)">%0A    <mask id="line-b" fill="%23fff">%0A      <use xlink:href="%23line-a"/>%0A    </mask>%0A    <use fill="%235B5B5B" fill-rule="nonzero" xlink:href="%23line-a"/>%0A    <g fill="%235B5B5B" mask="url(%23line-b)">%0A      <rect width="30" height="30"/>%0A    </g>%0A  </g>%0A</svg>%0A')}.leaflet-pm-toolbar .leaflet-pm-icon-circle{background-image:url('data:image/svg+xml,<?xml version="1.0" encoding="UTF-8"?>%0A<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">%0A    <!-- Generator: Sketch 52.5 (67469) - http://www.bohemiancoding.com/sketch -->%0A    <title>Atoms/Icons/Tools/Circle</title>%0A    <desc>Created with Sketch.</desc>%0A    <defs>%0A        <path d="M18.2897751,6.78602275 C18.8924131,6.29464981 19.661797,6 20.5,6 C22.4329966,6 24,7.56700338 24,9.5 C24,10.338203 23.7053502,11.1075869 23.2139772,11.7102249 C23.719599,12.8712053 24,14.1528571 24,15.5 C24,20.7467051 19.7467051,25 14.5,25 C9.25329488,25 5,20.7467051 5,15.5 C5,10.2532949 9.25329488,6 14.5,6 C15.8471429,6 17.1287947,6.28040098 18.2897751,6.78602275 Z M17.1504228,8.4817586 C16.3263581,8.17039236 15.4330777,8 14.5,8 C10.3578644,8 7,11.3578644 7,15.5 C7,19.6421356 10.3578644,23 14.5,23 C18.6421356,23 22,19.6421356 22,15.5 C22,14.5669223 21.8296076,13.6736419 21.5182414,12.8495772 C21.1960383,12.9473968 20.8541622,13 20.5,13 C18.5670034,13 17,11.4329966 17,9.5 C17,9.14583778 17.0526032,8.80396169 17.1504228,8.4817586 Z M14.5,17 C13.6715729,17 13,16.3284271 13,15.5 C13,14.6715729 13.6715729,14 14.5,14 C15.3284271,14 16,14.6715729 16,15.5 C16,16.3284271 15.3284271,17 14.5,17 Z M20.5,11 C21.3284271,11 22,10.3284271 22,9.5 C22,8.67157288 21.3284271,8 20.5,8 C19.6715729,8 19,8.67157288 19,9.5 C19,10.3284271 19.6715729,11 20.5,11 Z" id="path-1"></path>%0A    </defs>%0A    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">%0A        <g id="Atoms/Icons/Tools/Circle" transform="translate(-3.000000, -3.000000)">%0A            <mask id="mask-2" fill="white">%0A                <use xlink:href="%23path-1"></use>%0A            </mask>%0A            <use id="Mask" fill="%235B5B5B" fill-rule="nonzero" xlink:href="%23path-1"></use>%0A            <g id="Atoms/Color/Grey" mask="url(%23mask-2)" fill="%235B5B5B">%0A                <rect id="Rectangle" x="0" y="0" width="30" height="30"></rect>%0A            </g>%0A        </g>%0A    </g>%0A</svg>')}.leaflet-pm-toolbar .leaflet-pm-icon-circle-marker{background-image:url('data:image/svg+xml,<?xml version="1.0" encoding="UTF-8"?>%0A%0A<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" stroke="%235B5B5B" stroke-width="8"%0A     fill="none">%0A<circle cx="50" cy="50" r="35"/>%0A  <circle cx="50" cy="50" r="3" fill="%235B5B5B"/>%0A</svg>')}.leaflet-pm-toolbar .leaflet-pm-icon-rectangle{background-image:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">%0A  <defs>%0A    <path id="rectangle-a" d="M23,10.9645556 L23,19.0354444 C24.6961471,19.2780593 26,20.736764 26,22.5 C26,24.4329966 24.4329966,26 22.5,26 C20.736764,26 19.2780593,24.6961471 19.0354444,23 L10.9645556,23 C10.7219407,24.6961471 9.26323595,26 7.5,26 C5.56700338,26 4,24.4329966 4,22.5 C4,20.736764 5.30385293,19.2780593 7,19.0354444 L7,10.9645556 C5.30385293,10.7219407 4,9.26323595 4,7.5 C4,5.56700338 5.56700338,4 7.5,4 C9.26323595,4 10.7219407,5.30385293 10.9645556,7 L19.0354444,7 C19.2780593,5.30385293 20.736764,4 22.5,4 C24.4329966,4 26,5.56700338 26,7.5 C26,9.26323595 24.6961471,10.7219407 23,10.9645556 Z M21,10.6631844 C20.272154,10.3174225 19.6825775,9.72784598 19.3368156,9 L10.6631844,9 C10.3174225,9.72784598 9.72784598,10.3174225 9,10.6631844 L9,19.3368156 C9.72784598,19.6825775 10.3174225,20.272154 10.6631844,21 L19.3368156,21 C19.6825775,20.272154 20.272154,19.6825775 21,19.3368156 L21,10.6631844 Z M7.5,9 C8.32842712,9 9,8.32842712 9,7.5 C9,6.67157288 8.32842712,6 7.5,6 C6.67157288,6 6,6.67157288 6,7.5 C6,8.32842712 6.67157288,9 7.5,9 Z M22.5,9 C23.3284271,9 24,8.32842712 24,7.5 C24,6.67157288 23.3284271,6 22.5,6 C21.6715729,6 21,6.67157288 21,7.5 C21,8.32842712 21.6715729,9 22.5,9 Z M22.5,24 C23.3284271,24 24,23.3284271 24,22.5 C24,21.6715729 23.3284271,21 22.5,21 C21.6715729,21 21,21.6715729 21,22.5 C21,23.3284271 21.6715729,24 22.5,24 Z M7.5,24 C8.32842712,24 9,23.3284271 9,22.5 C9,21.6715729 8.32842712,21 7.5,21 C6.67157288,21 6,21.6715729 6,22.5 C6,23.3284271 6.67157288,24 7.5,24 Z"/>%0A  </defs>%0A  <g fill="none" fill-rule="evenodd" transform="translate(-3 -3)">%0A    <mask id="rectangle-b" fill="%23fff">%0A      <use xlink:href="%23rectangle-a"/>%0A    </mask>%0A    <use fill="%235B5B5B" fill-rule="nonzero" xlink:href="%23rectangle-a"/>%0A    <g fill="%235B5B5B" mask="url(%23rectangle-b)">%0A      <rect width="30" height="30"/>%0A    </g>%0A  </g>%0A</svg>%0A')}.leaflet-pm-toolbar .leaflet-pm-icon-delete{background-image:url('data:image/svg+xml,<?xml version="1.0" encoding="UTF-8"?>%0A<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">%0A    <!-- Generator: Sketch 52.5 (67469) - http://www.bohemiancoding.com/sketch -->%0A    <title>Atoms/Icons/Tools/Eraser</title>%0A    <desc>Created with Sketch.</desc>%0A    <defs>%0A        <path d="M17.7874219,18.4812552 L11.6480079,13.3498184 L6.40466009,19.3816001 L10.5539156,22.9884929 L13.86934,22.9884929 L17.7874219,18.4812552 Z M16.5074252,22.9884929 L26.0000002,22.9884929 L26.0000002,24.9884929 L10.0000002,24.9884929 L9.80708313,24.9884929 L5.09254204,20.8910192 C4.25891285,20.1663564 4.17057814,18.9031112 4.89524093,18.069482 L16.0482444,5.23941916 C16.7729072,4.40578998 18.0361525,4.31745526 18.8697816,5.04211806 L24.9074583,10.2905903 C25.7410875,11.0152531 25.8294222,12.2784983 25.1047594,13.1121275 L16.5074252,22.9884929 Z" id="path-1"></path>%0A    </defs>%0A    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">%0A        <g id="Atoms/Icons/Tools/Eraser" transform="translate(-3.000000, -3.000000)">%0A            <mask id="mask-2" fill="white">%0A                <use xlink:href="%23path-1"></use>%0A            </mask>%0A            <use id="Combined-Shape" fill="%235B5B5B" fill-rule="nonzero" xlink:href="%23path-1"></use>%0A        </g>%0A    </g>%0A</svg>')}.leaflet-pm-toolbar .leaflet-pm-icon-edit{background-image:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">%0A  <defs>%0A    <path id="edit_anchor-a" d="M13.5,11 C11.5670034,11 10,9.43299662 10,7.5 C10,5.56700338 11.5670034,4 13.5,4 C15.4329966,4 17,5.56700338 17,7.5 C17,9.43299662 15.4329966,11 13.5,11 Z M13.5,9 C14.3284271,9 15,8.32842712 15,7.5 C15,6.67157288 14.3284271,6 13.5,6 C12.6715729,6 12,6.67157288 12,7.5 C12,8.32842712 12.6715729,9 13.5,9 Z M12.0002889,7.52973893 C12.0125983,8.16273672 12.4170197,8.6996643 12.9807111,8.90767966 L3,15 L3,13 L12.0002889,7.52973893 Z M14.2172722,6.18228472 L19.453125,3 L22.6589355,3 L14.989102,7.68173885 C14.9962971,7.62216459 15,7.56151472 15,7.5 C15,6.93138381 14.6836098,6.4366645 14.2172722,6.18228472 Z M23.4434042,19.2851736 L20.1282799,19.2851736 L21.8729983,23.5349525 C21.9945296,23.8295773 21.8556546,24.1599209 21.5778734,24.2849208 L20.0414675,24.9545142 C19.7550613,25.0795141 19.4338738,24.9366704 19.3123426,24.6509518 L17.6544367,20.6154541 L14.9461873,23.4010151 C14.5852811,23.7721711 14,23.4860463 14,22.9992653 L14,9.57183533 C14,9.05933561 14.6225311,8.809492 14.946156,9.17008555 L23.8340292,18.3120179 C24.1925291,18.6613615 23.9279979,19.2851736 23.4434042,19.2851736 Z"/>%0A  </defs>%0A  <g fill="none" fill-rule="evenodd" transform="translate(-3 -3)">%0A    <mask id="edit_anchor-b" fill="%23fff">%0A      <use xlink:href="%23edit_anchor-a"/>%0A    </mask>%0A    <use fill="%235B5B5B" fill-rule="nonzero" xlink:href="%23edit_anchor-a"/>%0A    <g fill="%235B5B5B" mask="url(%23edit_anchor-b)">%0A      <rect width="30" height="30"/>%0A    </g>%0A  </g>%0A</svg>%0A')}.leaflet-pm-toolbar .leaflet-pm-icon-drag{background-image:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">%0A  <defs>%0A    <path id="move-a" d="M21,14 L21,10 L27,15 L21,20 L21,16 L16,16 L16,21 L20,21 L15,27 L10,21 L14,21 L14,16 L9,16 L9,20 L3,15 L9,10 L9,14 L14,14 L14,9 L10,9 L15,3 L20,9 L16,9 L16,14 L21,14 Z"/>%0A  </defs>%0A  <g fill="none" fill-rule="evenodd" transform="translate(-3 -3)">%0A    <mask id="move-b" fill="%23fff">%0A      <use xlink:href="%23move-a"/>%0A    </mask>%0A    <use fill="%23D8D8D8" xlink:href="%23move-a"/>%0A    <g fill="%235B5B5B" mask="url(%23move-b)">%0A      <rect width="30" height="30"/>%0A    </g>%0A  </g>%0A</svg>%0A')}.leaflet-pm-toolbar .leaflet-pm-icon-cut{background-image:url('data:image/svg+xml,<?xml version="1.0" encoding="UTF-8"?>%0A<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">%0A    <!-- Generator: Sketch 52.5 (67469) - http://www.bohemiancoding.com/sketch -->%0A    <title>Atoms/Icons/Tools/Scissors</title>%0A    <desc>Created with Sketch.</desc>%0A    <defs>%0A        <path d="M12.9691574,13.4939435 L21.0317032,5.54167013 L23.4649499,5.67722957 L17.0470713,14.5106816 L27.5660336,17.1333535 L25.7891944,18.8012588 L14.5854951,17.8987506 L13.6487955,19.188007 C13.794639,19.2650958 13.9367985,19.3534417 14.0741377,19.4532245 C15.6379648,20.5894114 15.9846357,22.7782052 14.8484488,24.3420324 C13.7122619,25.9058595 11.5234681,26.2525304 9.95964096,25.1163435 C8.39581384,23.9801565 8.04914296,21.7913627 9.18532986,20.2275356 C9.74587276,19.4560145 10.5626188,18.9807475 11.4341218,18.8336407 L12.6805656,17.1180579 L12.5239724,16.3747216 L11.9506932,15.3012391 L9.89310646,14.7882251 C9.13093796,15.2357261 8.19977854,15.3966447 7.27445355,15.1659352 C5.39887519,14.698301 4.25751094,12.7987519 4.72514515,10.9231736 C5.19277935,9.04759519 7.09232846,7.90623094 8.96790682,8.37386515 C10.8434852,8.84149935 11.9848494,10.7410485 11.5172152,12.6166268 C11.4761464,12.7813449 11.4240335,12.9404001 11.3618627,13.0931999 L12.9691574,13.4939435 Z M7.75829735,13.2253438 C8.56211664,13.4257584 9.37620912,12.9366023 9.57662378,12.132783 C9.77703844,11.3289637 9.28788233,10.5148713 8.48406303,10.3144566 C7.68024373,10.1140419 6.86615126,10.603198 6.6657366,11.4070173 C6.46532194,12.2108366 6.95447805,13.0249291 7.75829735,13.2253438 Z M10.8033639,21.4031061 C10.3164266,22.0733177 10.4649998,23.0113722 11.1352115,23.4983095 C11.8054231,23.9852467 12.7434776,23.8366735 13.2304148,23.1664619 C13.7173521,22.4962502 13.5687788,21.5581957 12.8985672,21.0712585 C12.2283556,20.5843212 11.2903011,20.7328945 10.8033639,21.4031061 Z" id="path-1"></path>%0A    </defs>%0A    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">%0A        <g id="Atoms/Icons/Tools/Scissors" transform="translate(-3.000000, -3.000000)">%0A            <mask id="mask-2" fill="white">%0A                <use xlink:href="%23path-1"></use>%0A            </mask>%0A            <use id="Mask" fill="%235B5B5B" fill-rule="nonzero" transform="translate(16.093194, 15.663351) rotate(-32.000000) translate(-16.093194, -15.663351) " xlink:href="%23path-1"></use>%0A        </g>%0A    </g>%0A</svg>')}.leaflet-pm-toolbar .leaflet-pm-icon-snapping{background-image:url('data:image/svg+xml,<?xml version="1.0" encoding="UTF-8"?>%0A<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">%0A    <!-- Generator: Sketch 57.1 (83088) - https://sketch.com -->%0A    <title>Atoms/Icons/Tools/Magnet</title>%0A    <desc>Created with Sketch.</desc>%0A    <defs>%0A        <path d="M21.9994759,10.9428183 L21.9999985,16.3710417 C22,16.6872007 22,17.0058278 22,17.3269411 C22,21.5646545 18.6421356,25 14.5,25 C10.3578644,25 7,21.5646545 7,17.3269411 L7.00087508,10.9907507 L11.0022808,10.9984125 C11.0017033,11.6980114 11.001247,12.4168248 11.0008992,13.1554887 L11,17.3269411 C11,19.3756809 12.5876841,21 14.5,21 C16.4123159,21 18,19.3756809 18,17.3269411 C18,15.0702032 17.9995696,12.9619668 17.998539,10.9910032 L21.9994759,10.9428183 Z M10,7 C10.5522847,7 11,7.44771525 11,8 L11,10 L7,10 L7,8 C7,7.44771525 7.44771525,7 8,7 L10,7 Z M21,7 C21.5522847,7 22,7.44771525 22,8 L22,10 L18,10 L18,8 C18,7.44771525 18.4477153,7 19,7 L21,7 Z" id="path-1"></path>%0A    </defs>%0A    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">%0A        <g id="Atoms/Icons/Tools/Magnet" transform="translate(-3.000000, -3.000000)">%0A            <mask id="mask-2" fill="white">%0A                <use xlink:href="%23path-1"></use>%0A            </mask>%0A            <use id="Mask" fill="%235B5B5B" fill-rule="nonzero" transform="translate(14.500000, 16.000000) rotate(45.000000) translate(-14.500000, -16.000000) " xlink:href="%23path-1"></use>%0A        </g>%0A    </g>%0A</svg>')}.leaflet-pm-toolbar .leaflet-pm-icon-rotate{background-image:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24">%0A    <defs>%0A        <path id="rotate" d="M21.2,5.8c-0.1-0.2-0.2-0.3-0.3-0.5l-0.1-0.2c-0.1-0.2-0.2-0.3-0.3-0.5l-0.1-0.2c-0.1-0.2-0.2-0.3-0.4-0.5l-0.2-0.3l2.8-3.1L18,0.6l-4.6,0.1l0.5,4.5l0.5,4.5l3.2-3.6v0.1l0.1,0.2c0.1,0.1,0.1,0.2,0.2,0.2l0.1,0.2C18,7,18,7.1,18.1,7.2c0.3,0.7,0.6,1.4,0.7,2.1c0.2,1.4,0,2.9-0.6,4.2L18,13.9L17.9,14l-0.3,0.5l-0.1,0.2c-0.2,0.2-0.4,0.5-0.6,0.7c-0.5,0.5-1.1,1-1.7,1.3c-0.6,0.4-1.3,0.6-2.1,0.8c-0.7,0.1-1.5,0.2-2.2,0.1c-0.8-0.1-1.5-0.3-2.2-0.5c-0.7-0.3-1.3-0.7-1.9-1.2l-0.4-0.4l-0.2-0.3L6,15c-0.1-0.1-0.2-0.2-0.2-0.3l-0.3-0.4l-0.1-0.1l-0.2-0.4c0-0.1-0.1-0.1-0.1-0.2l-0.3-0.5l-0.1-0.2c-0.1-0.3-0.2-0.6-0.3-0.9c-0.2-0.8-0.3-1.6-0.3-2.4c0-0.2,0-0.3,0-0.5V8.9c0-0.2,0-0.3,0.1-0.4l0.1-0.6l0.2-0.6c0.3-0.8,0.7-1.5,1.2-2.2c0.5-0.7,1.1-1.3,1.8-1.8c0.2-0.1,0.3-0.4,0.1-0.6C7.5,2.6,7.4,2.5,7.3,2.5H7.1L7,2.6C6.1,3,5.4,3.6,4.7,4.2C4,4.9,3.5,5.7,3,6.6c-0.9,1.8-1.2,3.8-0.8,5.8c0.1,0.5,0.2,0.9,0.3,1.4l0.3,0.8C2.9,14.7,3,14.8,3,15l0.2,0.4c0,0.1,0.1,0.2,0.1,0.2l0.3,0.5c0.1,0.2,0.2,0.3,0.3,0.5l0.1,0.2c0.1,0.1,0.2,0.3,0.3,0.4L5,17.8c0.7,0.7,1.6,1.3,2.5,1.8c0.9,0.5,1.9,0.8,3,0.9c0.5,0.1,1,0.1,1.5,0.1c0.6,0,1.1,0,1.6-0.1c1-0.2,2.1-0.5,3-1l0.2-0.1c0.2-0.1,0.3-0.2,0.5-0.3l0.7-0.4c0.2-0.1,0.3-0.2,0.4-0.3l0.2-0.2c0.2-0.1,0.4-0.3,0.5-0.5l0.1-0.1c0.3-0.3,0.7-0.7,0.9-1l0.6-0.9l0.4-0.6c1-1.9,1.4-4.1,1.1-6.2C22,7.8,21.7,6.7,21.2,5.8z"/>%0A    </defs>%0A    <g fill="none" fill-rule="evenodd" transform="translate(0 2)">%0A        <mask id="rotate-b" fill="%23fff">%0A            <use xlink:href="%23rotate"/>%0A        </mask>%0A        <use fill="%235B5B5B" fill-rule="nonzero" xlink:href="%23rotate"/>%0A        <g fill="%235B5B5B" mask="url(%23rotate-b)">%0A            <rect width="30" height="30"/>%0A        </g>%0A    </g>%0A</svg>%0A')}.leaflet-pm-toolbar .leaflet-pm-icon-text{background-image:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">%0A  <title>Text</title>%0A  <g id="Ebene_2" data-name="Ebene 2">%0A    <polyline points="19.64 7.27 19.64 4 12 4 12 20 15.91 20 8.09 20 12 20 12 4 4.36 4 4.36 7.27" fill="none" stroke="%235b5b5b" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5px"/>%0A  </g>%0A</svg>')}.leaflet-buttons-control-button:hover,.leaflet-buttons-control-button:focus{cursor:pointer;background-color:#f4f4f4}.active>.leaflet-buttons-control-button{box-shadow:inset 0 -1px 5px 2px #514d4d4f}.leaflet-buttons-control-text-hide{display:none}.button-container{position:relative}.button-container .leaflet-pm-actions-container{z-index:2;position:absolute;top:0;left:100%;display:none;white-space:nowrap;direction:ltr}.leaflet-right .leaflet-pm-toolbar .button-container .leaflet-pm-actions-container{right:100%;left:auto}.button-container.active .leaflet-pm-actions-container{display:block}.button-container .leaflet-pm-actions-container:not(.pos-right) a.leaflet-pm-action:last-child{border-radius:0 3px 3px 0;border-right:0}.button-container .leaflet-pm-actions-container.pos-right a.leaflet-pm-action:first-child{border-radius:3px 0 0 3px}.button-container .leaflet-pm-actions-container.pos-right a.leaflet-pm-action:last-child{border-right:0}.button-container .leaflet-pm-actions-container .leaflet-pm-action{padding:0 10px;background-color:#666;color:#fff;display:inline-block;width:auto;border-right:1px solid #eee;user-select:none;border-bottom:none;height:29px;line-height:29px;vertical-align:middle}.leaflet-pm-toolbar .button-container:first-child.pos-right.active a.leaflet-buttons-control-button{border-top-left-radius:0}.leaflet-pm-toolbar .button-container:first-child.active:not(.pos-right) a.leaflet-buttons-control-button{border-top-right-radius:0}.button-container .leaflet-pm-actions-container .leaflet-pm-action:hover,.button-container .leaflet-pm-actions-container .leaflet-pm-action:focus{cursor:pointer;background-color:#777}.button-container .leaflet-pm-actions-container .leaflet-pm-action.active-action{background-color:#8e8e8e}.leaflet-pm-toolbar.activeChild{z-index:801}.leaflet-buttons-control-button.pm-disabled{background-color:#f4f4f4}.leaflet-buttons-control-button.pm-disabled>.control-icon{filter:opacity(.6)}.button-container .leaflet-pm-actions-container .pm-action-button-mode.control-icon{filter:brightness(0) invert(1);width:18px}

/*# sourceMappingURL=leaflet-geoman.css.map */.switch{--color-bg:#E1E1E1;--color-bg-on:#16B5FF;--thumb-color-on:white;--thumb-color-off:var(--thumb-color-on);--thumb-scale:1;--size:16px;--duration:.18s;--width-multiplier:2.5;--thumb-animation-pad:15%;user-select:none;display:inline-flex;align-items:center}@keyframes switchMoveThumb{50%{padding:0 var(--thumb-animation-pad)}}@keyframes switchMoveThumb1{50%{padding:0 var(--thumb-animation-pad)}}.switch--textRight .switch__label{order:10;padding:0 0 0 .4em}.switch>div{cursor:pointer}.switch__label{order:0;padding-right:.4em;color:var(--label-color)}.switch__gfx{--thumb-left:0%;--transform:translateX(calc(var(--thumb-left) * -1)) scale(var(--thumb-scale));order:5;padding:3px;position:relative;background:var(--bg,var(--color-bg));border-radius:50px;width:calc(var(--size) * var(--width-multiplier));transition:var(--duration);background-size:4px 4px}.switch__gfx::before{content:'';display:block;position:relative;left:var(--thumb-left);background:var(--thumb-color,var(--thumb-color-off));border-radius:var(--size);width:var(--size);height:var(--size);transform:var(--transform);transition:var(--duration);animation:switchMoveThumb var(--duration) ease 1}.switch input{position:absolute;opacity:0}.switch input[disabled]+div{background-image:linear-gradient(45deg,#fff 25%,transparent 25%,transparent 50%,#fff 50%,#fff 75%,transparent 75%)}.switch input:disabled~div{cursor:not-allowed}.switch input:indeterminate+div{--thumb-left:50%}.switch input:checked+div{--bg:var(--color-bg-on);--thumb-left:100%;--thumb-color:var(--thumb-color-on)}.switch input:checked+div::before{animation-name:switchMoveThumb1}.switch input:focus+div{outline:1px dotted silver}.switch input:focus:not(:focus-visible)+div{outline:0}/* Cyberpunk auth screens — login & change-password only */

.auth-cyber {
  --cyber-bg0: #05060a;
  --cyber-bg1: #0c1020;
  --cyber-cyan: #00e5ff;
  --cyber-cyan-dim: rgba(0, 229, 255, 0.35);
  --cyber-magenta: #ff2d95;
  --cyber-magenta-dim: rgba(255, 45, 149, 0.25);
  --cyber-green: #00ff9d;
  --cyber-text: #e8f4ff;
  --cyber-muted: #6b7c99;
  --cyber-input-bg: rgba(8, 12, 24, 0.92);
  --cyber-font-display: "Orbitron", system-ui, sans-serif;
  --cyber-font-mono: "Share Tech Mono", ui-monospace, monospace;

  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 1.5rem 1rem;
  position: relative;
  overflow: hidden;
  background: radial-gradient(ellipse 120% 80% at 50% -20%, var(--cyber-magenta-dim), transparent 50%),
    radial-gradient(ellipse 80% 60% at 100% 100%, var(--cyber-cyan-dim), transparent 45%),
    linear-gradient(165deg, var(--cyber-bg0) 0%, var(--cyber-bg1) 50%, #060810 100%);
  color: var(--cyber-text);
  font-family: var(--cyber-font-mono);
  font-size: 15px;
}

.auth-cyber__grid {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(var(--cyber-cyan-dim) 1px, transparent 1px),
    linear-gradient(90deg, var(--cyber-cyan-dim) 1px, transparent 1px);
  background-size: 48px 48px;
  mask-image: radial-gradient(ellipse 70% 60% at 50% 40%, black 20%, transparent 70%);
  opacity: 0.45;
  pointer-events: none;
  animation: auth-cyber-grid-drift 28s linear infinite;
}

@keyframes auth-cyber-grid-drift {
  from { transform: translate(0, 0); }
  to { transform: translate(48px, 48px); }
}

.auth-cyber__glow {
  position: absolute;
  width: 140%;
  height: 60%;
  left: -20%;
  bottom: -15%;
  background: linear-gradient(90deg, transparent, var(--cyber-magenta-dim), transparent);
  filter: blur(40px);
  opacity: 0.5;
  pointer-events: none;
}

.auth-cyber__card {
  position: relative;
  width: min(440px, 100%);
  padding: 2rem 2rem 1.75rem;
  border-radius: 4px;
  background: linear-gradient(145deg, rgba(12, 18, 36, 0.97) 0%, rgba(6, 10, 22, 0.98) 100%);
  border: 1px solid var(--cyber-cyan-dim);
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.5),
    0 0 40px rgba(0, 229, 255, 0.08),
    0 0 80px rgba(255, 45, 149, 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.04);
  clip-path: polygon(0 0, 100% 0, 100% calc(100% - 12px), calc(100% - 12px) 100%, 0 100%);
}

.auth-cyber__card::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--cyber-cyan), var(--cyber-magenta), var(--cyber-cyan));
  opacity: 0.9;
}

.auth-cyber__brand {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  margin-bottom: 1.75rem;
}

.auth-cyber__logo {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  font-size: 1.35rem;
  color: var(--cyber-cyan);
  text-shadow: 0 0 20px var(--cyber-cyan-dim);
  border: 1px solid var(--cyber-cyan-dim);
  background: rgba(0, 229, 255, 0.06);
  flex-shrink: 0;
}

.auth-cyber__brand h1 {
  margin: 0;
  font-family: var(--cyber-font-display);
  font-size: 1.15rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--cyber-text);
  line-height: 1.35;
}

.auth-cyber__brand p {
  margin: 0.35rem 0 0;
  font-size: 0.82rem;
  color: var(--cyber-muted);
  letter-spacing: 0.04em;
  line-height: 1.45;
}

.auth-cyber__tag {
  display: inline-block;
  margin-top: 0.5rem;
  padding: 0.2rem 0.5rem;
  font-size: 0.65rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--cyber-magenta);
  border: 1px solid var(--cyber-magenta-dim);
  background: rgba(255, 45, 149, 0.08);
}

.auth-cyber__form {
  display: flex;
  flex-direction: column;
  gap: 1.1rem;
}

.auth-cyber__label {
  display: block;
  font-size: 0.7rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--cyber-muted);
  margin-bottom: 0.4rem;
}

.auth-cyber__field-wrap {
  display: flex;
  gap: 0.5rem;
  align-items: stretch;
}

.auth-cyber__input {
  flex: 1;
  min-width: 0;
  padding: 0.65rem 0.85rem;
  font-family: var(--cyber-font-mono);
  font-size: 0.95rem;
  color: var(--cyber-text);
  background: var(--cyber-input-bg);
  border: 1px solid rgba(0, 229, 255, 0.2);
  border-radius: 2px;
  outline: none;
  transition: border-color 0.2s, box-shadow 0.2s;
}

.auth-cyber__input::placeholder {
  color: var(--cyber-muted);
  opacity: 0.7;
}

.auth-cyber__input:focus {
  border-color: var(--cyber-cyan);
  box-shadow: 0 0 0 1px var(--cyber-cyan-dim), 0 0 24px rgba(0, 229, 255, 0.12);
}

.auth-cyber__icon-btn {
  display: grid;
  place-items: center;
  width: 44px;
  flex-shrink: 0;
  padding: 0;
  border: 1px solid rgba(0, 229, 255, 0.25);
  border-radius: 2px;
  background: rgba(0, 229, 255, 0.06);
  color: var(--cyber-cyan);
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
}

.auth-cyber__icon-btn:hover {
  background: rgba(0, 229, 255, 0.12);
  border-color: var(--cyber-cyan-dim);
}

.auth-cyber__icon-btn:focus-visible {
  outline: 2px solid var(--cyber-cyan);
  outline-offset: 2px;
}

.auth-cyber__remember {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  font-size: 0.8rem;
  color: var(--cyber-muted);
  cursor: pointer;
  user-select: none;
}

.auth-cyber__remember input {
  width: 1rem;
  height: 1rem;
  accent-color: var(--cyber-cyan);
}

.auth-cyber__submit {
  margin-top: 0.25rem;
  padding: 0.85rem 1.25rem;
  font-family: var(--cyber-font-display);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: #020408;
  border: none;
  border-radius: 2px;
  cursor: pointer;
  background: linear-gradient(105deg, var(--cyber-cyan) 0%, #00c8e8 40%, var(--cyber-magenta) 100%);
  box-shadow: 0 0 24px rgba(0, 229, 255, 0.35);
  transition: filter 0.2s, transform 0.1s;
}

.auth-cyber__submit:hover:not(:disabled) {
  filter: brightness(1.08);
}

.auth-cyber__submit:active:not(:disabled) {
  transform: scale(0.99);
}

.auth-cyber__submit:disabled {
  opacity: 0.55;
  cursor: not-allowed;
  filter: grayscale(0.3);
}

.auth-cyber__banner {
  padding: 0.65rem 0.85rem;
  font-size: 0.8rem;
  line-height: 1.4;
  border-radius: 2px;
  border-left: 3px solid;
}

.auth-cyber__banner--error {
  background: rgba(255, 45, 149, 0.1);
  border-color: var(--cyber-magenta);
  color: #ffb8d9;
}

.auth-cyber__banner--warn {
  background: rgba(255, 200, 0, 0.08);
  border-color: #ffc400;
  color: #ffe6a0;
}

.auth-cyber__banner--info {
  background: rgba(0, 229, 255, 0.08);
  border-color: var(--cyber-cyan);
  color: #b8f4ff;
}

.auth-cyber__footer {
  margin-top: 1.5rem;
  padding-top: 1rem;
  border-top: 1px solid rgba(0, 229, 255, 0.12);
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.5rem;
  font-size: 0.7rem;
  color: var(--cyber-muted);
  letter-spacing: 0.06em;
}

.auth-cyber__version {
  font-variant-numeric: tabular-nums;
  color: var(--cyber-cyan);
  opacity: 0.7;
}

.auth-cyber__strength {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-top: 0.35rem;
}

.auth-cyber__strength-bar {
  flex: 1;
  height: 4px;
  background: rgba(255, 255, 255, 0.08);
  border-radius: 2px;
  overflow: hidden;
}

.auth-cyber__strength-fill {
  height: 100%;
  border-radius: 2px;
  transition: width 0.25s, background 0.25s;
}

.auth-cyber__strength-fill--weak {
  width: 33%;
  background: var(--cyber-magenta);
  box-shadow: 0 0 8px var(--cyber-magenta-dim);
}

.auth-cyber__strength-fill--mid {
  width: 66%;
  background: #ffc400;
  box-shadow: 0 0 8px rgba(255, 196, 0, 0.4);
}

.auth-cyber__strength-fill--strong {
  width: 100%;
  background: var(--cyber-green);
  box-shadow: 0 0 10px rgba(0, 255, 157, 0.35);
}

.auth-cyber__hint {
  font-size: 0.72rem;
  color: var(--cyber-muted);
  line-height: 1.45;
}

.auth-cyber__lock {
  text-align: center;
  font-family: var(--cyber-font-display);
  font-size: 1.5rem;
  letter-spacing: 0.15em;
  color: var(--cyber-magenta);
  text-shadow: 0 0 20px var(--cyber-magenta-dim);
}

@media (max-width: 480px) {
  .auth-cyber__card {
    padding: 1.5rem 1.25rem;
  }
  .auth-cyber__brand h1 {
    font-size: 1rem;
  }
}
.link-button {
  border: 0;
  background: transparent;
  color: var(--accent, #4f8cff);
  text-decoration: underline;
  cursor: pointer;
  padding: 0;
  font: inherit;
}

/* Monitoring: detector name should look like a cyber badge (clickable). */
.detector-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.12rem 0.4rem;
  border: 1px solid rgba(0, 229, 255, 0.4);
  border-radius: 2px;
  background: rgba(0, 229, 255, 0.08);
  color: var(--ac-cyan, #00e5ff);
  cursor: pointer;
  text-decoration: none;
  font: inherit;
  line-height: 1.2;
  min-height: 0;
}

.detector-badge:hover {
  background: rgba(0, 229, 255, 0.14);
  border-color: rgba(0, 229, 255, 0.55);
}

.detector-badge:focus-visible {
  outline: 2px solid rgba(0, 229, 255, 0.55);
  outline-offset: 2px;
}

/* Monitoring: floating asset info window labels (cyber style). */
.monitoring-floating-info__label {
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.62rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ac-cyan);
}

.modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.45);
  display: grid;
  place-items: center;
  z-index: 1200;
  padding: 1rem;
}

.kpi-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.75rem;
}

@media (max-width: 1100px) {
  .kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 640px) {
  .kpi-grid { grid-template-columns: 1fr; }
}
.assistant-page {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  height: 100%;
  min-height: 0;
  min-width: 0;
}

.assistant-page--compact {
  height: 68vh;
  min-height: 420px;
}

.assistant-widget-panel .assistant-page--compact {
  height: 100%;
  min-height: 0;
}

/* Виджет: область переписки фиксированной высоты (остаток под хедер панели), скролл только внутри .assistant-chat */
.assistant-widget-panel > .assistant-page.assistant-page--compact {
  flex: 1 1 auto;
  min-width: 0;
  grid-template-rows: minmax(0, 1fr);
  align-content: stretch;
}

.assistant-widget-panel .assistant-page--compact .assistant-chat-column {
  min-height: 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.assistant-widget-panel .assistant-page--compact .assistant-toolbar {
  flex: 0 0 auto;
}

.assistant-widget-panel .assistant-page--compact .assistant-chat-wrap {
  flex: 1 1 auto;
  min-height: 0;
}

.assistant-widget-panel .assistant-page--compact .assistant-input {
  flex: 0 0 auto;
}

.assistant-widget-panel .assistant-page--compact .assistant-input textarea {
  resize: vertical;
  max-height: 8rem;
  min-height: 4.25rem;
}

.assistant-widget-panel .assistant-page--compact > .assistant-report-aside {
  min-height: 0;
  align-self: stretch;
  max-height: none;
  height: auto;
}

/* Markdown отчёта ассистента (react-markdown + remark-gfm) */
.assistant-report-md {
  margin-top: 0.6rem;
  font-size: 0.95rem;
  line-height: 1.5;
  color: rgba(230, 237, 243, 0.95);
  overflow-x: auto;
  min-width: 0;
}
.assistant-report-md h1 {
  font-size: 1.25rem;
  margin: 0.75rem 0 0.4rem;
  font-weight: 800;
}
.assistant-report-md h2 {
  font-size: 1.1rem;
  margin: 0.65rem 0 0.35rem;
  font-weight: 700;
  opacity: 0.96;
}
.assistant-report-md h3 {
  font-size: 1rem;
  margin: 0.55rem 0 0.3rem;
  font-weight: 700;
}
.assistant-report-md p {
  margin: 0.35rem 0;
}
.assistant-report-md ul,
.assistant-report-md ol {
  margin: 0.35rem 0;
  padding-left: 1.25rem;
}
.assistant-report-md table {
  border-collapse: collapse;
  width: 100%;
  margin: 0.5rem 0;
  font-size: 0.88rem;
}
.assistant-report-md th,
.assistant-report-md td {
  border: 1px solid rgba(0, 229, 255, 0.35);
  padding: 0.35rem 0.5rem;
  text-align: left;
  vertical-align: top;
}
.assistant-report-md th {
  background: rgba(0, 229, 255, 0.1);
}
.assistant-report-md pre {
  background: rgba(0, 0, 0, 0.35);
  border: 1px solid rgba(0, 229, 255, 0.22);
  border-radius: 6px;
  padding: 0.5rem 0.65rem;
  overflow-x: auto;
  font-size: 0.85rem;
}
.assistant-report-md code {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.88em;
}
.assistant-report-md pre code {
  background: none;
  border: 0;
  padding: 0;
}
.assistant-report-md blockquote {
  margin: 0.4rem 0;
  padding-left: 0.75rem;
  border-left: 3px solid rgba(0, 229, 255, 0.45);
  opacity: 0.92;
}
.assistant-report-md a {
  color: #86f9ff;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.assistant-page-shell {
  display: grid;
  gap: 0.8rem;
}

.assistant-page-shell--cyber {
  --as-cyan: #00e5ff;
  --as-magenta: #ff2d95;
  --as-border: rgba(0, 229, 255, 0.34);
  --as-text: #dff8ff;
}

.assistant-page-shell--cyber .card {
  background:
    radial-gradient(120% 90% at 100% 0%, rgba(255, 45, 149, 0.10) 0%, transparent 58%),
    radial-gradient(130% 95% at 0% 100%, rgba(0, 229, 255, 0.10) 0%, transparent 60%),
    linear-gradient(150deg, rgba(12, 18, 36, 0.97) 0%, rgba(6, 10, 22, 0.98) 100%);
  border: 1px solid var(--as-border);
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.42),
    0 0 20px rgba(0, 229, 255, 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.04);
}

.assistant-page-shell__header {
  position: relative;
  overflow: hidden;
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 0.75rem;
}
.assistant-page-shell__header::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(
    120deg,
    transparent 0%,
    rgba(0, 229, 255, 0.04) 35%,
    rgba(255, 45, 149, 0.05) 55%,
    transparent 100%
  );
  transform: translateX(-100%);
  animation: cyber-scanline 5.0s linear infinite;
}

.assistant-page-shell__title {
  position: relative;
  z-index: 1;
  min-width: 0;
}
.assistant-page-shell__kicker {
  color: #86f9ff;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-size: 0.78rem;
  text-shadow: 0 0 12px rgba(0, 229, 255, 0.28);
  margin-bottom: 0.15rem;
}
.assistant-page-shell__h {
  font-size: 1.35rem;
  font-weight: 800;
  color: var(--as-text);
}
.assistant-page-shell__sub {
  margin-top: 0.25rem;
  color: rgba(191, 248, 255, 0.72);
  font-size: 0.92rem;
  max-width: 62rem;
}

.assistant-page-shell__actions {
  position: relative;
  z-index: 1;
  display: flex;
  gap: 0.5rem;
  align-items: center;
}

.assistant-page-shell__action-btn {
  min-height: auto !important;
  width: 2.35rem;
  height: 2.35rem;
  padding: 0 !important;
  border-radius: 0.55rem;
  border: 1px solid rgba(0, 229, 255, 0.45);
  background: rgba(0, 229, 255, 0.06);
  color: #bff8ff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.assistant-page-shell__action-btn:hover {
  background: rgba(0, 229, 255, 0.14);
  border-color: rgba(0, 229, 255, 0.72);
}

/* Внутренности AssistantChat на странице /assistant */
.assistant-page-shell--cyber .assistant-chat {
  background:
    radial-gradient(120% 90% at 100% 0%, rgba(255, 45, 149, 0.06) 0%, transparent 58%),
    radial-gradient(130% 95% at 0% 100%, rgba(0, 229, 255, 0.06) 0%, transparent 60%),
    rgba(0, 0, 0, 0.22);
  border-color: rgba(0, 229, 255, 0.22);
}

.assistant-page-shell--cyber .assistant-chat-wrap {
  border-radius: 12px;
}

.assistant-page-shell--cyber .assistant-msg-meta {
  border-color: rgba(0, 229, 255, 0.28);
  background: rgba(0, 229, 255, 0.08);
  color: rgba(223, 248, 255, 0.9);
}

.assistant-page-shell--cyber .assistant-msg--user pre {
  background: rgba(0, 229, 255, 0.10);
  border: 1px solid rgba(0, 229, 255, 0.18);
}

.assistant-page-shell--cyber .assistant-msg--assistant pre {
  background: rgba(255, 45, 149, 0.08);
  border: 1px solid rgba(255, 45, 149, 0.18);
}

.assistant-page-shell--cyber .assistant-input textarea {
  border-color: rgba(0, 229, 255, 0.38);
  background: rgba(0, 0, 0, 0.45);
  color: var(--as-text);
}

.assistant-page-shell--cyber .assistant-input button[type="submit"] {
  border-color: rgba(0, 229, 255, 0.55);
  background: linear-gradient(135deg, rgba(0, 229, 255, 0.14), rgba(255, 45, 149, 0.14));
}

.assistant-page-shell--cyber .assistant-source {
  border-left-color: rgba(0, 229, 255, 0.65);
}

@media (prefers-reduced-motion: reduce) {
  .assistant-page-shell__header::after {
    animation: none !important;
  }
}

.assistant-toolbar {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 0.75rem;
}

.assistant-control-trigger {
  min-height: auto !important;
  padding: 0 !important;
  border-radius: 0;
  border: none;
  background: transparent;
  color: var(--text);
  font-weight: 700;
  font-size: 1.02rem;
  cursor: default !important;
}

.assistant-control-trigger:hover {
  background: transparent !important;
}

.assistant-control-overlay {
  position: fixed;
  inset: 0;
  z-index: 3200;
  background: rgba(0, 0, 0, 0.45);
  display: grid;
  place-items: center;
}

.assistant-control-card {
  width: min(1040px, calc(100vw - 2rem));
  max-height: calc(100vh - 2rem);
  overflow: auto;
  border-radius: 12px;
  border: 1px solid var(--border);
  background: var(--panel);
  padding: 0.75rem;
  box-shadow: 0 20px 45px rgba(0, 0, 0, 0.35);
}

.assistant-control-stats-wrap {
  margin-top: 0.55rem;
}

.assistant-stats-panel--modal {
  border-radius: 10px;
  border: 1px solid var(--border);
}

.assistant-chat-head {
  display: none;
}

.diag-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.1rem;
  padding: 0.12rem 0.5rem;
  border-radius: 999px;
  font-size: 0.78rem;
  font-weight: 700;
  border: 1px solid transparent;
}

.diag-pill--green {
  color: #16a34a;
  background: rgba(34, 197, 94, 0.12);
  border-color: rgba(34, 197, 94, 0.35);
}

.diag-pill--yellow {
  color: #d97706;
  background: rgba(245, 158, 11, 0.12);
  border-color: rgba(245, 158, 11, 0.35);
}

.diag-pill--red {
  color: #dc2626;
  background: rgba(239, 68, 68, 0.12);
  border-color: rgba(239, 68, 68, 0.35);
}

.assistant-status {
  color: var(--text-muted, #6b7280);
  font-size: 0.9rem;
}

.assistant-admin-status {
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  padding: 0.15rem 0.5rem;
  font-size: 0.78rem;
  border: 1px solid transparent;
}

.assistant-admin-status--unknown {
  color: #6b7280;
  background: #f3f4f6;
  border-color: #e5e7eb;
}

.assistant-admin-status--ok {
  color: #065f46;
  background: #d1fae5;
  border-color: #6ee7b7;
}

.assistant-admin-status--invalid {
  color: #991b1b;
  background: #fee2e2;
  border-color: #fca5a5;
}

.assistant-domains {
  display: flex;
  flex-wrap: wrap;
  gap: 0.8rem;
  align-items: center;
}

.assistant-domains label {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}

.assistant-domains select {
  margin-left: 0.35rem;
}

.assistant-stats-panel {
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 0.65rem;
  background: var(--panel);
  display: grid;
  gap: 0.55rem;
}

.assistant-stats-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 0.7rem;
  align-items: center;
}

.assistant-stats-filters label {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}

.assistant-stats-table-wrap {
  max-height: 220px;
  overflow: auto;
}

.assistant-stats-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.82rem;
}

.assistant-stats-table th,
.assistant-stats-table td {
  border-bottom: 1px solid var(--border);
  text-align: left;
  vertical-align: top;
  padding: 0.35rem 0.4rem;
}

.assistant-stats-table th {
  position: sticky;
  top: 0;
  background: var(--panel);
}

.assistant-mini-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.6rem;
}

.assistant-mini-card {
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 0.45rem;
  display: grid;
  gap: 0.25rem;
  background: color-mix(in srgb, var(--panel) 84%, #ffffff 16%);
}

.assistant-mini-title {
  font-size: 0.82rem;
  opacity: 0.9;
  font-weight: 600;
}

.assistant-mini-row {
  display: grid;
  grid-template-columns: 2.6rem 1fr 2.2rem;
  gap: 0.35rem;
  align-items: center;
}

.assistant-mini-label,
.assistant-mini-value {
  font-size: 0.75rem;
  opacity: 0.88;
}

.assistant-mini-value {
  text-align: right;
}

.assistant-mini-bar-wrap {
  height: 8px;
  border-radius: 999px;
  background: rgba(148, 163, 184, 0.2);
  overflow: hidden;
}

.assistant-mini-bar {
  height: 100%;
  border-radius: 999px;
}

.assistant-mini-bar--good {
  background: #10b981;
}

.assistant-mini-bar--warn {
  background: #f59e0b;
}

.assistant-name-overlay {
  position: fixed;
  inset: 0;
  z-index: 1300;
  background: rgba(0, 0, 0, 0.45);
  display: grid;
  place-items: center;
}

.assistant-name-card {
  width: min(520px, calc(100vw - 2rem));
  border-radius: 12px;
  border: 1px solid var(--border);
  background: var(--panel);
  padding: 0.8rem;
  display: grid;
  gap: 0.55rem;
}

.assistant-name-card h4 {
  margin: 0;
}

.assistant-name-card p {
  margin: 0;
  color: var(--text-muted, #6b7280);
  font-size: 0.88rem;
}

.assistant-name-card input {
  width: 100%;
}

.assistant-chat-wrap {
  position: relative;
  flex: 1 1 auto;
  min-height: 0;
  min-width: 0;
}

.assistant-chat {
  height: 100%;
  overflow: auto;
  overflow-x: hidden;
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 0.8rem;
  padding-bottom: 2.6rem;
  background: var(--panel);
}

.assistant-chat-clear-btn {
  position: absolute;
  left: 0.55rem;
  bottom: 0.45rem;
  min-height: auto !important;
  width: 1.8rem;
  height: 1.8rem;
  border-radius: 0.45rem;
  border: 1px solid var(--border);
  background: rgba(139, 148, 158, 0.12);
  color: var(--text);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  z-index: 2;
}

.assistant-chat-clear-btn:hover {
  background: rgba(248, 81, 73, 0.14);
  border-color: rgba(248, 81, 73, 0.5);
}

.assistant-chat-cancel-btn {
  position: absolute;
  right: calc(1.05rem + 20px);
  bottom: 0.45rem;
  min-height: auto !important;
  width: 1.9rem;
  height: 1.8rem;
  border-radius: 0.45rem;
  border: 1px solid var(--border);
  background: rgba(248, 81, 73, 0.12);
  color: var(--text);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  z-index: 2;
}

.assistant-chat-cancel-btn:hover:not(:disabled) {
  background: rgba(248, 81, 73, 0.2);
  border-color: rgba(248, 81, 73, 0.6);
}

.assistant-chat-cancel-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.assistant-feedback-btn {
  min-height: auto !important;
  border: 1px solid var(--border);
  background: rgba(139, 148, 158, 0.12);
  color: var(--text);
  padding: 0.16rem 0.4rem !important;
  width: 2rem;
  height: 1.7rem;
  font-size: 1rem;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  filter: grayscale(1) saturate(0.1) contrast(1.1);
}

.assistant-feedback-btn:hover {
  background: rgba(139, 148, 158, 0.2);
}

.assistant-feedback-row {
  display: flex;
  justify-content: flex-end;
  gap: 0.35rem;
  margin-top: 0.25rem;
}

.assistant-empty {
  color: var(--text-muted, #6b7280);
}

.assistant-msg {
  margin-bottom: 0.85rem;
}

.assistant-msg pre {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  word-break: break-word;
  margin: 0;
  font-family: inherit;
}

.assistant-msg-meta {
  margin-top: 0.3rem;
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  font-size: 0.76rem;
  color: var(--text-muted, #8b949e);
  background: rgba(139, 148, 158, 0.12);
  border: 1px solid rgba(139, 148, 158, 0.3);
  border-radius: 999px;
  padding: 0.12rem 0.5rem;
}

.assistant-msg-meta-row {
  margin-top: 0.3rem;
  display: flex;
  align-items: center;
  gap: 0.35rem;
  flex-wrap: wrap;
}

.assistant-msg-meta-row .assistant-msg-meta {
  margin-top: 0;
}

.assistant-msg-meta--dev {
  font-weight: 600;
  letter-spacing: 0.01em;
}

.assistant-msg-meta--dev-on {
  color: #2e7d32;
  background: rgba(46, 125, 50, 0.12);
  border-color: rgba(46, 125, 50, 0.35);
}

.assistant-msg-meta--dev-off {
  color: #b26a00;
  background: rgba(178, 106, 0, 0.12);
  border-color: rgba(178, 106, 0, 0.35);
}

.assistant-msg--user pre {
  background: rgba(88, 166, 255, 0.14);
  border-radius: 8px;
  padding: 0.45rem 0.6rem;
}

.assistant-msg--assistant pre {
  background: rgba(139, 148, 158, 0.14);
  border-radius: 8px;
  padding: 0.45rem 0.6rem;
}

.assistant-sources {
  display: grid;
  gap: 0.35rem;
  margin-top: 0.4rem;
}

.assistant-source {
  border-left: 3px solid #94a3b8;
  padding-left: 0.55rem;
  display: grid;
}

.assistant-source span {
  color: var(--text-muted, #6b7280);
  font-size: 0.82rem;
}

.assistant-input {
  display: grid;
  gap: 0.5rem;
}

.assistant-input textarea {
  width: 100%;
  resize: vertical;
}

.assistant-widget-fab {
  position: fixed;
  right: 1.25rem;
  bottom: 1.25rem;
  z-index: 3001;
  width: 3.2rem;
  height: 3.2rem;
  border-radius: 999px;
  border: none;
  font-weight: 700;
  cursor: pointer;
  background: linear-gradient(135deg, #00e5ff 0%, #0076ff 48%, #ff2d95 100%);
  color: #031022;
  box-shadow:
    0 0 0 1px rgba(0, 229, 255, 0.5),
    0 0 16px rgba(0, 229, 255, 0.4),
    0 12px 28px rgba(0, 0, 0, 0.45);
}

.assistant-widget-panel {
  position: fixed;
  right: 1.25rem;
  bottom: 5rem;
  width: min(560px, calc(100vw - 2rem));
  height: min(70vh, 680px);
  min-width: 420px;
  min-height: 360px;
  max-width: calc(100vw - 1.2rem);
  max-height: calc(100vh - 5.6rem);
  z-index: 3001;
  border: 1px solid rgba(0, 229, 255, 0.62);
  border-radius: 12px;
  background:
    radial-gradient(120% 90% at 100% 0%, rgba(255, 45, 149, 0.12) 0%, transparent 58%),
    radial-gradient(130% 95% at 0% 100%, rgba(0, 229, 255, 0.12) 0%, transparent 60%),
    linear-gradient(152deg, rgba(9, 14, 30, 0.98) 0%, rgba(6, 10, 22, 0.98) 100%);
  box-shadow:
    0 0 0 1px rgba(0, 229, 255, 0.22),
    0 0 20px rgba(0, 229, 255, 0.16),
    0 0 34px rgba(255, 45, 149, 0.09),
    0 24px 52px rgba(0, 0, 0, 0.5);
  padding: 0.75rem;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  min-width: min(420px, calc(100vw - 1rem));
  min-height: min(360px, calc(100vh - 1rem));
}

.assistant-widget-resize-handle {
  position: absolute;
  z-index: 2;
}

.assistant-widget-resize-handle--n {
  left: 12px;
  right: 12px;
  top: -5px;
  height: 10px;
  cursor: ns-resize;
}

.assistant-widget-resize-handle--e {
  top: 12px;
  bottom: 12px;
  right: -5px;
  width: 10px;
  cursor: ew-resize;
}

.assistant-widget-resize-handle--s {
  left: 12px;
  right: 12px;
  bottom: -5px;
  height: 10px;
  cursor: ns-resize;
}

.assistant-widget-resize-handle--w {
  top: 12px;
  bottom: 12px;
  left: -5px;
  width: 10px;
  cursor: ew-resize;
}

.assistant-widget-resize-handle--ne,
.assistant-widget-resize-handle--nw,
.assistant-widget-resize-handle--se,
.assistant-widget-resize-handle--sw {
  width: 12px;
  height: 12px;
}

.assistant-widget-resize-handle--ne {
  top: -6px;
  right: -6px;
  cursor: nesw-resize;
}

.assistant-widget-resize-handle--nw {
  top: -6px;
  left: -6px;
  cursor: nwse-resize;
}

.assistant-widget-resize-handle--se {
  right: -6px;
  bottom: -6px;
  cursor: nwse-resize;
}

.assistant-widget-resize-handle--sw {
  left: -6px;
  bottom: -6px;
  cursor: nesw-resize;
}

.assistant-widget-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 0.5rem;
  flex: 0 0 auto;
}

.assistant-widget-header--draggable {
  cursor: move;
  user-select: none;
}

.assistant-widget-title {
  font-size: 0.95rem;
  letter-spacing: 0.01em;
  color: #86f9ff;
  text-shadow: 0 0 12px rgba(0, 229, 255, 0.35);
}

.assistant-widget-actions {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}

.assistant-widget-settings,
.assistant-widget-close {
  min-height: auto !important;
  width: 1.8rem;
  height: 1.8rem;
  border-radius: 0.4rem;
  border: 1px solid rgba(0, 229, 255, 0.45);
  background: rgba(0, 229, 255, 0.06);
  color: #bff8ff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  padding: 0;
}

.assistant-widget-settings {
  font-size: 1rem;
}

.assistant-widget-settings:hover {
  background: rgba(0, 229, 255, 0.14);
  border-color: rgba(0, 229, 255, 0.7);
}

.assistant-widget-close {
  font-size: 1.1rem;
}

.assistant-widget-close:hover {
  background: rgba(255, 45, 149, 0.16);
  border-color: rgba(255, 45, 149, 0.58);
}

@media (max-width: 768px) {
  .assistant-widget-panel {
    right: 0.6rem;
    left: 0.6rem;
    width: auto;
    bottom: 4.7rem;
    min-width: auto;
    min-height: 320px;
  }
}

@tailwind base;
@tailwind components;
@tailwind utilities;

* {
  box-sizing: border-box;
}

html {
  font-size: 12px;
  font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

body {
  margin: 0;
  font-family: 'Segoe UI', system-ui, sans-serif;
  font-size: 1.1rem;
  background: #0f1419;
  color: #e6edf3;
  min-height: 100vh;
}

#root {
  min-height: 100vh;
}

:root {
  --bg: #0f1419;
  --panel: #161b22;
  /** Карточки / выпадающие панели (непрозрачный фон; раньше использовалось без определения) */
  --card: #161b22;
  /** Основной цвет текста (как у body) */
  --text: #e6edf3;
  --border: #30363d;
  --accent: #58a6ff;
  --success: #3fb950;
  --warning: #f59e0b;
  --danger: #f85149;
  --muted: #8b949e;

  /* Subtle status backgrounds for "traffic light" UI */
  --success-bg: rgba(63, 185, 80, 0.12);
  --warning-bg: rgba(245, 158, 11, 0.2);
  --danger-bg: rgba(248, 81, 73, 0.2);

  /**
   * Единая высота «контентных» модальных окон (настройки, просмотр, формы без компактного confirm).
   * Не подстраивается под объём текста — тело с прокруткой. См. ui/docs/DESIGN_MODALS.md
   */
  --app-modal-fixed-height: min(720px, 85vh);
}

button {
  cursor: pointer;
  font: inherit;
  padding: 0.2rem 0.6rem;
  border-radius: 0.3rem;
  border: 1px solid var(--border);
  background: var(--panel);
  color: var(--e6edf3, #e6edf3);
  min-height: 2.4rem;
}
button:hover {
  background: #21262d;
}
button.primary {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
}
/* Карта техники: часы последнего обновления данных */
/* Плавающее окно карты (поверх приложения) */
.map-floating-window {
  position: fixed;
}
/* Как gap между секциями на полноэкранной карте (MapWorkspace: 0.65rem) */
.map-floating-window__body {
  padding: 0.65rem;
  box-sizing: border-box;
}
.map-floating-window__header .secondary {
  min-height: 22px !important;
  padding: 0.1rem 0.4rem !important;
}
.map-floating-window__resize {
  position: absolute;
  touch-action: none;
  box-sizing: border-box;
}
/* Рёбра: тянуть за сторону */
.map-floating-window__resize--edge {
  z-index: 3;
}
.map-floating-window__resize--edge.map-floating-window__resize--n {
  left: 10px;
  right: 10px;
  top: 0;
  height: 8px;
  width: auto;
  cursor: ns-resize;
}
.map-floating-window__resize--edge.map-floating-window__resize--s {
  left: 10px;
  right: 10px;
  bottom: 0;
  height: 8px;
  width: auto;
  cursor: ns-resize;
}
.map-floating-window__resize--edge.map-floating-window__resize--e {
  top: 10px;
  bottom: 10px;
  right: 0;
  width: 8px;
  height: auto;
  cursor: ew-resize;
}
.map-floating-window__resize--edge.map-floating-window__resize--w {
  top: 10px;
  bottom: 10px;
  left: 0;
  width: 8px;
  height: auto;
  cursor: ew-resize;
}
/* Углы поверх рёбер (приоритет захвата) */
.map-floating-window__resize--corner {
  width: 11px;
  height: 11px;
  z-index: 4;
}
.map-floating-window__resize--corner.map-floating-window__resize--nw {
  left: 0;
  top: 0;
  cursor: nwse-resize;
}
.map-floating-window__resize--corner.map-floating-window__resize--ne {
  right: 0;
  top: 0;
  cursor: nesw-resize;
}
.map-floating-window__resize--corner.map-floating-window__resize--sw {
  left: 0;
  bottom: 0;
  cursor: nesw-resize;
}
.map-floating-window__resize--corner.map-floating-window__resize--se {
  right: 0;
  bottom: 0;
  cursor: nwse-resize;
}
.map-floating-window::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(90deg, rgba(0, 229, 255, 0.12), rgba(255, 45, 149, 0.1));
  opacity: 0.5;
}
.map-floating-window--monitoring::before {
  background: linear-gradient(90deg, rgba(255, 45, 149, 0.11), rgba(0, 229, 255, 0.14));
}
.map-floating-window__header {
  position: relative;
  z-index: 1;
}
.map-floating-window__body {
  position: relative;
  z-index: 1;
}
.map-floating-window__action-btn {
  border-color: rgba(0, 229, 255, 0.5) !important;
  background: rgba(0, 229, 255, 0.08) !important;
  color: #d8fbff !important;
}
.map-floating-window__action-btn:hover {
  border-color: rgba(0, 229, 255, 0.72) !important;
  background: rgba(0, 229, 255, 0.14) !important;
}
.map-floating-window__action-btn--close {
  border-color: rgba(255, 45, 149, 0.52) !important;
  background: rgba(255, 45, 149, 0.12) !important;
}
.map-floating-window__action-btn--close:hover {
  border-color: rgba(255, 45, 149, 0.7) !important;
  background: rgba(255, 45, 149, 0.2) !important;
}
.map-page--floating .map-toolbar.card {
  flex-wrap: wrap;
  padding: 0.45rem 0.55rem;
}

/* Вкладка «Карта»: колонка контента растягивается, карта не уезжает под скролл */
.page-content:has(> .map-page) {
  display: flex;
  flex-direction: column;
  min-height: 0;
}

/* Колонка справа: Leaflet забирает оставшуюся высоту, блок времени всегда снизу и не обрезается */
.map-page-map-viewport {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  position: relative;
}

.map-page-time-dock {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: 0.65rem;
  min-width: 0;
}

.map-page-time-dock__slider {
  flex: 1;
  min-width: 0;
}

.map-page-time-dock__play {
  flex-shrink: 0;
}

.map-page-time-dock__track {
  flex-shrink: 0;
}

/* Ползунок времени: без лишнего min-width у даты — ползунок тянется почти до метки */
.map-time-slider {
  display: flex;
  align-items: center;
  gap: 0.42rem;
  width: 100%;
  flex-wrap: nowrap;
  min-width: 0;
}

.map-time-slider__label {
  font-size: 0.85rem;
  color: var(--muted);
  white-space: nowrap;
  flex-shrink: 0;
}

.map-time-slider__input {
  flex: 1 1 auto;
  min-width: 0;
  width: 100%;
  max-width: 100%;
}

.map-time-slider__value {
  font-size: 0.8rem;
  color: var(--muted);
  flex: 0 0 auto;
  text-align: right;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.map-page--cyber .map-time-slider {
  gap: 0.38rem;
}

.map-page--cyber .map-time-slider__value {
  font-family: 'Share Tech Mono', ui-monospace, 'Cascadia Code', 'Consolas', monospace;
  font-size: 0.72rem;
  letter-spacing: 0.02em;
  color: rgba(203, 213, 225, 0.92);
}

@keyframes map-time-slider-playing-glow {
  0%,
  100% {
    text-shadow:
      0 0 6px rgba(255, 237, 74, 0.95),
      0 0 14px rgba(250, 204, 21, 0.55),
      0 0 24px rgba(234, 179, 8, 0.28);
  }
  50% {
    text-shadow:
      0 0 8px rgba(255, 245, 120, 1),
      0 0 18px rgba(253, 224, 71, 0.75),
      0 0 28px rgba(250, 204, 21, 0.45);
  }
}

.map-page--cyber .map-time-slider__value--playing {
  color: #fff176 !important;
  animation: map-time-slider-playing-glow 2.2s ease-in-out infinite;
}

@media (prefers-reduced-motion: reduce) {
  .map-page--cyber .map-time-slider__value--playing {
    animation: none;
    text-shadow:
      0 0 6px rgba(255, 237, 74, 0.95),
      0 0 14px rgba(250, 204, 21, 0.55),
      0 0 22px rgba(234, 179, 8, 0.3);
  }
}

/* Обёртка + корень Leaflet растягиваются внутри flex-колонки */
.map-page-map-viewport .assets-map-wrap {
  display: flex;
  flex-direction: column;
}

.map-page-map-viewport .assets-map-wrap .leaflet-container {
  flex: 1;
  min-height: 0 !important;
  width: 100% !important;
}

/*
 * Leaflet: зум (+/−), полноэкран (в одной колонке с зумом) и кнопка слоёв.
 * Дефолтные белые кнопки на тёмной карте плохо читаются; выравниваем с «кибер»-панелью.
 * Размер ~ на треть меньше стандартных touch-контролов Leaflet.
 */
.assets-map-wrap {
  --leaflet-cyber-ctrl: 18px;
  --leaflet-cyber-zoom-font: 12px;
  /* Иконка «слои»: как у зум-кнопок, без invert() */
  --leaflet-cyber-layers-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23bff8ff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolygon points='12 2 2 7 12 12 22 7 12 2'/%3E%3Cpolyline points='2 17 12 22 22 17'/%3E%3Cpolyline points='2 12 12 17 22 12'/%3E%3C/svg%3E");
  /* Линейка (как Lucide Ruler): измерение расстояния */
  --leaflet-cyber-ruler-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23bff8ff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21.3 8.7l-5.6-5.6a2.1 2.1 0 0 0-2.8 0L2.7 15.3a1 1 0 0 0-.3.7V21h5v-.7a1 1 0 0 1 .3-.7L21.3 11.5a2.1 2.1 0 0 0 0-2.8z'/%3E%3Cpath d='m16 5 3 3'/%3E%3Cpath d='M8 12h.01M12 12h.01M16 12h.01'/%3E%3C/svg%3E");
  /* Те же иконки со тёмным штрихом — на светлом фоне :hover */
  --leaflet-cyber-layers-icon-hover: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230c4a6e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolygon points='12 2 2 7 12 12 22 7 12 2'/%3E%3Cpolyline points='2 17 12 22 22 17'/%3E%3Cpolyline points='2 12 12 17 22 12'/%3E%3C/svg%3E");
  --leaflet-cyber-ruler-icon-hover: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230c4a6e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21.3 8.7l-5.6-5.6a2.1 2.1 0 0 0-2.8 0L2.7 15.3a1 1 0 0 0-.3.7V21h5v-.7a1 1 0 0 1 .3-.7L21.3 11.5a2.1 2.1 0 0 0 0-2.8z'/%3E%3Cpath d='m16 5 3 3'/%3E%3Cpath d='M8 12h.01M12 12h.01M16 12h.01'/%3E%3C/svg%3E");
}

.assets-map-wrap .leaflet-container .leaflet-bar {
  border: 1px solid rgba(0, 229, 255, 0.42) !important;
  border-radius: 5px !important;
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.35),
    0 0 14px rgba(0, 229, 255, 0.12) !important;
  overflow: hidden;
}

.assets-map-wrap .leaflet-container .leaflet-bar a {
  width: var(--leaflet-cyber-ctrl) !important;
  height: var(--leaflet-cyber-ctrl) !important;
  min-width: var(--leaflet-cyber-ctrl) !important;
  min-height: var(--leaflet-cyber-ctrl) !important;
  line-height: var(--leaflet-cyber-ctrl) !important;
  background-color: rgba(6, 10, 22, 0.94) !important;
  border-bottom: 1px solid rgba(0, 229, 255, 0.22) !important;
  color: #7eefff !important;
  font-weight: 700 !important;
  font-size: var(--leaflet-cyber-zoom-font) !important;
  font-family: 'Share Tech Mono', ui-monospace, 'Cascadia Code', 'Consolas', monospace !important;
  text-indent: 0 !important;
  box-sizing: border-box;
}

/* Geoman/pm tools: lighter by default (like zoom hover). */
.assets-map-wrap .leaflet-container .leaflet-pm-toolbar .leaflet-bar a,
.assets-map-wrap .leaflet-container .leaflet-pm-toolbar .leaflet-buttons-control-button {
  background-color: rgba(224, 247, 255, 0.94) !important;
  color: #0c4a6e !important;
}

/* Без +/−: для них отдельный блок ниже (чёрный текст на светлой подложке). */
.assets-map-wrap .leaflet-container .leaflet-bar a:hover:not(.leaflet-control-zoom-in):not(.leaflet-control-zoom-out),
.assets-map-wrap .leaflet-container .leaflet-bar a:focus-visible:not(.leaflet-control-zoom-in):not(.leaflet-control-zoom-out) {
  background-color: rgba(224, 247, 255, 0.94) !important;
  color: #0c4a6e !important;
}

.assets-map-wrap .leaflet-container .leaflet-bar a:focus:not(:focus-visible) {
  /* клик мышью: без «залипшей» светлой подложки до следующего таба */
  outline: none;
}

.assets-map-wrap .leaflet-container .leaflet-bar a.leaflet-disabled {
  opacity: 0.38 !important;
  color: #88a3c7 !important;
}

.assets-map-wrap .leaflet-container .leaflet-bar a.leaflet-disabled:hover,
.assets-map-wrap .leaflet-container .leaflet-bar a.leaflet-disabled:focus-visible {
  background-color: rgba(6, 10, 22, 0.94) !important;
  color: #88a3c7 !important;
}

.assets-map-wrap .leaflet-container .leaflet-bar a:last-child {
  border-bottom: none !important;
}

.assets-map-wrap .leaflet-container .leaflet-control-zoom-in,
.assets-map-wrap .leaflet-container .leaflet-control-zoom-out {
  font: 700 var(--leaflet-cyber-zoom-font) 'Share Tech Mono', ui-monospace, monospace !important;
}

/* +/−: явный a.leaflet-bar — выше специфичность, чем у общего .leaflet-bar a:hover с color !important */
.assets-map-wrap .leaflet-container .leaflet-bar a.leaflet-control-zoom-in:not(.leaflet-disabled):hover,
.assets-map-wrap .leaflet-container .leaflet-bar a.leaflet-control-zoom-out:not(.leaflet-disabled):hover,
.assets-map-wrap .leaflet-container .leaflet-bar a.leaflet-control-zoom-in:not(.leaflet-disabled):focus-visible,
.assets-map-wrap .leaflet-container .leaflet-bar a.leaflet-control-zoom-out:not(.leaflet-disabled):focus-visible {
  background-color: rgba(224, 247, 255, 0.94) !important;
  color: #000 !important;
  -webkit-text-fill-color: #000 !important;
}

/* Полноэкран (leaflet.fullscreen): не используем filter на всей кнопке (он инвертирует фон).
   Вместо этого переопределяем SVG-иконки на светлые через CSS variables плагина. */
.assets-map-wrap {
  --fullscreen-icon-enter: url('data:image/svg+xml,<svg viewBox="0 0 26 26" xmlns="http://www.w3.org/2000/svg"><path d="M5 10.3V5.9c0-.5.4-.9.9-.9h4.4c.2 0 .4.2.4.4V7c0 .2-.2.4-.4.4h-3v3c0 .2-.2.4-.4.4H5.4a.4.4 0 0 1-.4-.4zm10.3-4.9V7c0 .2.2.4.4.4h3v3c0 .2.2.4.4.4h1.5c.2 0 .4-.2.4-.4V5.9c0-.5-.4-.9-.9-.9h-4.4c-.2 0-.4.2-.4.4zm5.3 9.9H19c-.2 0-.4.2-.4.4v3h-3c-.2 0-.4.2-.4.4v1.5c0 .2.2.4.4.4h4.4c.5 0 .9-.4.9-.9v-4.4c0-.2-.2-.4-.4-.4zm-9.9 5.3V19c0-.2-.2-.4-.4-.4h-3v-3c0-.2-.2-.4-.4-.4H5.4c-.2 0-.4.2-.4.4v4.4c0 .5.4.9.9.9h4.4c.2 0 .4-.2.4-.4z" fill="%23bff8ff"/></svg>');
  --fullscreen-icon-exit: url('data:image/svg+xml,<svg viewBox="0 0 26 26" xmlns="http://www.w3.org/2000/svg"><path d="M20.6 10.7H16a.9.9 0 0 1-.8-.8v-4.5c0-.2.2-.4.4-.4h1.4c.3 0 .5.2.5.4v3h3c.2 0 .4.2.4.5v1.4c0 .2-.2.4-.4.4zm-9.9-.8V5.4c0-.2-.2-.4-.4-.4H8.9c-.3 0-.5.2-.5.4v3h-3c-.2 0-.4.2-.4.5v1.4c0 .2.2.4.4.4H9.9c.4 0 .8-.4.8-.8zm0 10.7V16c0-.4-.4-.8-.8-.8H5.4c-.2 0-.4.2-.4.4v1.4c0 .3.2.5.4.5h3v3c0 .2.2.4.5.4h1.4c.2 0 .4-.2.4-.4zm6.9 0v-3h3c.2 0 .4-.2.4-.5v-1.4c0-.2-.2-.4-.4-.4H16c-.4 0-.8.4-.8.8v4.5c0 .2.2.4.4.4h1.5c.3 0 .5-.2.5-.4z" fill="%23bff8ff"/></svg>');
  --fullscreen-icon-enter-hover: url('data:image/svg+xml,<svg viewBox="0 0 26 26" xmlns="http://www.w3.org/2000/svg"><path d="M5 10.3V5.9c0-.5.4-.9.9-.9h4.4c.2 0 .4.2.4.4V7c0 .2-.2.4-.4.4h-3v3c0 .2-.2.4-.4.4H5.4a.4.4 0 0 1-.4-.4zm10.3-4.9V7c0 .2.2.4.4.4h3v3c0 .2.2.4.4.4h1.5c.2 0 .4-.2.4-.4V5.9c0-.5-.4-.9-.9-.9h-4.4c-.2 0-.4.2-.4.4zm5.3 9.9H19c-.2 0-.4.2-.4.4v3h-3c-.2 0-.4.2-.4.4v1.5c0 .2.2.4.4.4h4.4c.5 0 .9-.4.9-.9v-4.4c0-.2-.2-.4-.4-.4zm-9.9 5.3V19c0-.2-.2-.4-.4-.4h-3v-3c0-.2-.2-.4-.4-.4H5.4c-.2 0-.4.2-.4.4v4.4c0 .5.4.9.9.9h4.4c.2 0 .4-.2.4-.4z" fill="%230c4a6e"/></svg>');
  --fullscreen-icon-exit-hover: url('data:image/svg+xml,<svg viewBox="0 0 26 26" xmlns="http://www.w3.org/2000/svg"><path d="M20.6 10.7H16a.9.9 0 0 1-.8-.8v-4.5c0-.2.2-.4.4-.4h1.4c.3 0 .5.2.5.4v3h3c.2 0 .4.2.4.5v1.4c0 .2-.2.4-.4.4zm-9.9-.8V5.4c0-.2-.2-.4-.4-.4H8.9c-.3 0-.5.2-.5.4v3h-3c-.2 0-.4.2-.4.5v1.4c0 .2.2.4.4.4H9.9c.4 0 .8-.4.8-.8zm0 10.7V16c0-.4-.4-.8-.8-.8H5.4c-.2 0-.4.2-.4.4v1.4c0 .3.2.5.4.5h3v3c0 .2.2.4.5.4h1.4c.2 0 .4-.2.4-.4zm6.9 0v-3h3c.2 0 .4-.2.4-.5v-1.4c0-.2-.2-.4-.4-.4H16c-.4 0-.8.4-.8.8v4.5c0 .2.2.4.4.4h1.5c.3 0 .5-.2.5-.4z" fill="%230c4a6e"/></svg>');
}

.assets-map-wrap .leaflet-container a.leaflet-fullscreen-icon {
  background-size: 14px 14px !important;
  background-image: var(--fullscreen-icon-enter) !important;
}

.assets-map-wrap .leaflet-container a.leaflet-fullscreen-icon.leaflet-fullscreen-on {
  background-image: var(--fullscreen-icon-exit) !important;
}

.assets-map-wrap .leaflet-container a.leaflet-fullscreen-icon:hover,
.assets-map-wrap .leaflet-container a.leaflet-fullscreen-icon:focus-visible {
  background-color: rgba(224, 247, 255, 0.94) !important;
  background-image: var(--fullscreen-icon-enter-hover) !important;
}

.assets-map-wrap .leaflet-container a.leaflet-fullscreen-icon.leaflet-fullscreen-on:hover,
.assets-map-wrap .leaflet-container a.leaflet-fullscreen-icon.leaflet-fullscreen-on:focus-visible {
  background-image: var(--fullscreen-icon-exit-hover) !important;
}

.assets-map-wrap .leaflet-container.leaflet-touch .leaflet-bar a {
  width: var(--leaflet-cyber-ctrl) !important;
  height: var(--leaflet-cyber-ctrl) !important;
  line-height: var(--leaflet-cyber-ctrl) !important;
}

.assets-map-wrap .leaflet-container.leaflet-touch .leaflet-control-zoom-in,
.assets-map-wrap .leaflet-container.leaflet-touch .leaflet-control-zoom-out {
  font-size: var(--leaflet-cyber-zoom-font) !important;
  line-height: var(--leaflet-cyber-ctrl) !important;
}

/* Кнопка «слои» (справа): те же размеры и стиль, что у +/− и полноэкрана */
.assets-map-wrap .leaflet-container .leaflet-control-layers:not(.leaflet-control-layers-expanded) {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
}
.assets-map-wrap .leaflet-container .leaflet-control-layers-toggle {
  width: var(--leaflet-cyber-ctrl) !important;
  height: var(--leaflet-cyber-ctrl) !important;
  min-width: var(--leaflet-cyber-ctrl) !important;
  min-height: var(--leaflet-cyber-ctrl) !important;
  line-height: var(--leaflet-cyber-ctrl) !important;
  border-radius: 5px !important;
  border: 1px solid rgba(0, 229, 255, 0.42) !important;
  background-color: rgba(6, 10, 22, 0.94) !important;
  background-image: var(--leaflet-cyber-layers-icon) !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: 12px 12px !important;
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.35),
    0 0 14px rgba(0, 229, 255, 0.12) !important;
  filter: none !important;
  text-indent: -9999px !important;
  overflow: hidden !important;
  box-sizing: border-box !important;
}
.assets-map-wrap .leaflet-container .leaflet-control-layers-toggle:hover,
.assets-map-wrap .leaflet-container .leaflet-control-layers-toggle:focus-visible {
  filter: none !important;
  background-color: rgba(224, 247, 255, 0.94) !important;
  background-image: var(--leaflet-cyber-layers-icon-hover) !important;
}

.assets-map-wrap .leaflet-container .leaflet-control-layers-toggle:focus:not(:focus-visible) {
  outline: none;
}
.assets-map-wrap .leaflet-container.leaflet-touch .leaflet-control-layers-toggle {
  width: var(--leaflet-cyber-ctrl) !important;
  height: var(--leaflet-cyber-ctrl) !important;
  line-height: var(--leaflet-cyber-ctrl) !important;
}

/* Линейка под кнопкой слоёв: колонка справа, зазор 3px снизу от первой */
.assets-map-wrap .leaflet-container .map-distance-measure-control {
  float: right !important;
  clear: right !important;
  margin-top: 3px !important;
}
.assets-map-wrap .leaflet-container .map-distance-measure-toggle {
  display: block !important;
  width: var(--leaflet-cyber-ctrl) !important;
  height: var(--leaflet-cyber-ctrl) !important;
  min-width: var(--leaflet-cyber-ctrl) !important;
  min-height: var(--leaflet-cyber-ctrl) !important;
  line-height: var(--leaflet-cyber-ctrl) !important;
  border-bottom: none !important;
  background-image: var(--leaflet-cyber-ruler-icon) !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: 12px 12px !important;
  text-indent: -9999px !important;
  overflow: hidden !important;
}
.assets-map-wrap .leaflet-container .map-distance-measure-toggle.map-distance-measure-toggle--active {
  background-color: rgba(0, 229, 255, 0.18) !important;
  box-shadow: inset 0 0 0 1px rgba(0, 229, 255, 0.35) !important;
}

.assets-map-wrap .leaflet-container .map-distance-measure-toggle:hover,
.assets-map-wrap .leaflet-container .map-distance-measure-toggle:focus-visible {
  background-color: rgba(224, 247, 255, 0.94) !important;
  background-image: var(--leaflet-cyber-ruler-icon-hover) !important;
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.35),
    0 0 14px rgba(0, 229, 255, 0.12) !important;
}

.assets-map-wrap .leaflet-container .map-distance-measure-toggle.map-distance-measure-toggle--active:hover,
.assets-map-wrap .leaflet-container .map-distance-measure-toggle.map-distance-measure-toggle--active:focus-visible {
  box-shadow: inset 0 0 0 1px rgba(12, 74, 110, 0.45) !important;
}

.assets-map-wrap .leaflet-container .map-distance-measure-toggle:focus:not(:focus-visible) {
  outline: none;
}

/* Подпись длины на середине отрезка (размер иконки Leaflet = область подписи, без обрезки текста) */
.assets-map-wrap .leaflet-container .map-distance-measure-label {
  background: transparent !important;
  border: none !important;
}
.assets-map-wrap .leaflet-container .map-distance-measure-label.leaflet-div-icon {
  border: none !important;
}
.assets-map-wrap .leaflet-container .map-distance-measure-label__box {
  display: flex;
  align-items: flex-end;
  justify-content: center;
  box-sizing: border-box;
  pointer-events: none;
  /* нижний центр совпадает с anchor (середина сегмента) */
  padding-bottom: 2px;
}
.assets-map-wrap .leaflet-container .map-distance-measure-label__inner {
  box-sizing: border-box;
  max-width: 100%;
  padding: 4px 10px;
  border-radius: 4px;
  font-family: 'Share Tech Mono', ui-monospace, 'Cascadia Code', 'Consolas', monospace;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.02em;
  line-height: 1.35;
  color: #e0fbff;
  text-align: center;
  white-space: normal;
  word-break: break-word;
  hyphens: auto;
  background: linear-gradient(145deg, rgba(6, 12, 24, 0.96) 0%, rgba(12, 24, 48, 0.94) 100%);
  border: 1px solid rgba(0, 229, 255, 0.5);
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.35),
    0 2px 10px rgba(0, 0, 0, 0.45),
    0 0 14px rgba(0, 229, 255, 0.12);
  pointer-events: none;
}

.assets-map-wrap .leaflet-container .map-distance-measure-arrow {
  background: transparent !important;
  border: none !important;
}
.assets-map-wrap .leaflet-container .map-distance-measure-arrow-rot {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 14px;
  height: 14px;
}

/* Раскрытый список подложек — в той же кибер-теме, что кнопки слева */
.assets-map-wrap .leaflet-container .leaflet-control-layers-expanded {
  padding: 8px 10px 8px 11px !important;
  background: linear-gradient(145deg, rgba(6, 12, 24, 0.98) 0%, rgba(10, 20, 40, 0.96) 100%) !important;
  border: 1px solid rgba(0, 229, 255, 0.42) !important;
  border-radius: 5px !important;
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.35),
    0 0 14px rgba(0, 229, 255, 0.12) !important;
  color: #dff8ff !important;
  font-family: 'Share Tech Mono', ui-monospace, 'Cascadia Code', 'Consolas', monospace !important;
  font-size: 11px !important;
  line-height: 1.35 !important;
}
.assets-map-wrap .leaflet-container .leaflet-control-layers-expanded .leaflet-control-layers-list {
  padding: 0 !important;
}
.assets-map-wrap .leaflet-container .leaflet-control-layers-expanded label,
.assets-map-wrap .leaflet-container .leaflet-control-layers-expanded span {
  color: #e8fbff !important;
}
.assets-map-wrap .leaflet-container .leaflet-control-layers-base label,
.assets-map-wrap .leaflet-container .leaflet-control-layers-overlays label {
  color: #e8fbff !important;
}
.assets-map-wrap .leaflet-container .leaflet-control-layers-separator {
  border-top-color: rgba(0, 229, 255, 0.28) !important;
}
.assets-map-wrap .leaflet-container .leaflet-control-layers-expanded .leaflet-control-layers-selector {
  accent-color: #22d3ee;
}
.assets-map-wrap .leaflet-container .leaflet-control-layers-expanded .leaflet-control-layers-toggle {
  margin-bottom: 6px !important;
  box-shadow: none !important;
}

/* Dead reckoning overlay (live): dashed vector + chevron */
.assets-map-wrap .leaflet-container .dead-reckoning-overlay {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 450; /* above tiles/markers, below tooltips/popups */
}
.assets-map-wrap .leaflet-container .dead-reckoning-overlay__line {
  stroke: rgba(255, 107, 0, 0.95);
  stroke-width: 2.25;
  stroke-dasharray: 8 7;
  filter: drop-shadow(0 0 6px rgba(255, 107, 0, 0.32)) drop-shadow(0 0 12px rgba(255, 45, 149, 0.18));
}
.assets-map-wrap .leaflet-container .dead-reckoning-overlay__chev {
  stroke: rgba(255, 107, 0, 0.95);
  stroke-width: 2.25;
  stroke-linecap: round;
  filter: drop-shadow(0 0 6px rgba(255, 107, 0, 0.32));
}

/* Нижняя левая HUD: уровень масштаба + линейка (киберпанк, компактный) */
.map-left-hud__strip {
  /* Родитель .map-left-hud с pointer-events: none — иначе title/ hover не доходят до полосок */
  pointer-events: auto;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: 0.4rem;
  padding: 0 7px;
  box-sizing: border-box;
  min-width: 112px;
  font-size: 10px;
  line-height: 1.15;
  color: #d8f4ff;
  background: linear-gradient(135deg, rgba(6, 12, 24, 0.94) 0%, rgba(12, 22, 42, 0.92) 50%, rgba(8, 16, 32, 0.94) 100%);
  border: 1px solid rgba(0, 229, 255, 0.38);
  border-radius: 3px;
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.45),
    0 0 10px rgba(0, 229, 255, 0.1),
    inset 0 1px 0 rgba(255, 255, 255, 0.06);
  letter-spacing: 0.02em;
}
.map-left-hud__strip--scale {
  justify-content: flex-start;
  gap: 6px;
  min-width: 0;
}
.map-left-hud__strip--zoom {
  flex-direction: column;
  align-items: stretch;
  justify-content: center;
  gap: 5px;
  height: auto;
  min-height: 0;
  min-width: 132px;
  max-width: 220px;
  padding-top: 6px;
  padding-bottom: 6px;
  cursor: help;
}
.map-left-hud__zoom-desc {
  display: block;
  font-size: 9px;
  font-weight: 600;
  line-height: 1.25;
  color: rgba(186, 230, 253, 0.88);
  text-shadow: 0 0 6px rgba(0, 229, 255, 0.12);
  letter-spacing: 0.01em;
}
.map-left-hud__zoom-row {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: 0.4rem;
}
.map-left-hud__label {
  font-size: 9px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.09em;
  color: rgba(103, 232, 249, 0.75);
}
.map-left-hud__value {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
  font-size: 12px;
  font-weight: 700;
  color: #f0fdff;
  text-shadow: 0 0 8px rgba(0, 229, 255, 0.32);
}
.map-left-hud__scale-track {
  flex-shrink: 0;
  height: 4px;
  border-radius: 2px;
  background: rgba(0, 0, 0, 0.45);
  border: 1px solid rgba(0, 229, 255, 0.22);
  overflow: hidden;
  align-self: center;
}
.map-left-hud__scale-fill {
  height: 100%;
  border-radius: 1px;
  background: linear-gradient(90deg, rgba(0, 229, 255, 0.35) 0%, rgba(34, 211, 238, 0.95) 50%, rgba(0, 229, 255, 0.55) 100%);
  box-shadow: 0 0 6px rgba(34, 211, 238, 0.4);
}
.map-left-hud__scale-caption {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
  font-size: 9px;
  font-weight: 600;
  color: #e0f8ff;
  white-space: nowrap;
}

/* Панель над блоком карты (соседний flex-элемент), иначе Leaflet и колонка карты перекрывают выпадающие списки */
.map-toolbar.card {
  position: relative;
  z-index: 2000;
}

.map-searchable-select__trigger {
  border: 1px solid var(--border);
  border-radius: 6px;
  background-color: var(--panel);
  color: var(--text);
  opacity: 1;
}
.map-searchable-select__trigger:hover:not(:disabled) {
  filter: brightness(1.06);
}
.map-searchable-select__trigger:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}
.map-searchable-select__dropdown {
  background-color: var(--panel) !important;
  background: var(--panel) !important;
  opacity: 1;
  /* без размытия подложки карты */
  backdrop-filter: none;
}
.map-searchable-select__search {
  background-color: var(--bg) !important;
  color: inherit;
  opacity: 1;
}
.map-searchable-select__option:hover {
  background: rgba(88, 166, 255, 0.08) !important;
}

/* Карта: левая панель техники — сворачивание и ресайз */
.map-page-sidebar-strip {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 0.45rem 0.15rem;
  border: 1px solid var(--border);
  border-radius: 8px 0 0 8px;
  border-right: none;
  background: var(--card);
}
.map-page-sidebar-strip__btn {
  padding: 0.25rem !important;
  min-height: auto !important;
  margin: 0 !important;
}
.map-page-sidebar-collapse-btn {
  padding: 0.2rem !important;
  min-height: auto !important;
  margin: 0 !important;
  flex-shrink: 0;
}
/* Правая граница только у обёртки .map-page-sidebar-panel-with-resizer — иначе контур «съедается» под полосой. */
.map-page-sidebar-resizer {
  flex-shrink: 0;
  width: 6px;
  cursor: col-resize;
  touch-action: none;
  user-select: none;
  align-self: stretch;
  background: transparent;
  border: none;
  border-left: 1px solid var(--border);
  border-right: none;
  margin: 0;
  padding: 0;
  position: relative;
  z-index: 0;
}
.map-page-sidebar-resizer:hover {
  background: rgba(88, 166, 255, 0.1);
}

.map-toolbar-clock {
  display: inline-flex;
  align-items: center;
  font-variant-numeric: tabular-nums;
  font-family: ui-monospace, 'Cascadia Code', 'Consolas', monospace;
  font-size: 0.95rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  padding: 0.2rem 0.55rem;
  border-radius: 0.35rem;
  border: 1px solid rgba(88, 166, 255, 0.28);
  background: rgba(88, 166, 255, 0.08);
  color: #a9c9ff;
  flex-shrink: 0;
  user-select: none;
}

.map-toolbar-clock__value {
  display: inline-block;
}

@keyframes map-toolbar-clock-value-updated {
  0% {
    color: #fff176;
    text-shadow:
      0 0 8px rgba(255, 237, 74, 0.95),
      0 0 16px rgba(250, 204, 21, 0.65),
      0 0 26px rgba(234, 179, 8, 0.35);
  }
  45% {
    color: #ffee58;
    text-shadow:
      0 0 6px rgba(255, 237, 74, 0.75),
      0 0 12px rgba(250, 204, 21, 0.4);
  }
  100% {
    color: inherit;
    text-shadow: none;
  }
}

.map-toolbar-clock__value--updated {
  animation: map-toolbar-clock-value-updated 1.05s ease-out forwards;
}

.map-toolbar-tooltip-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: auto;
  padding: 0.18rem 0.55rem;
  border-radius: 999px;
  border: 1px solid rgba(148, 163, 184, 0.35);
  background: rgba(15, 23, 42, 0.38);
  color: #cbd5e1;
  font-size: 0.72rem;
  line-height: 1.2;
  letter-spacing: 0.02em;
  font-weight: 600;
  white-space: nowrap;
  user-select: none;
  cursor: pointer;
  transition: transform 120ms ease, box-shadow 120ms ease, border-color 120ms ease;
}

.map-toolbar-tooltip-badge:hover {
  transform: translateY(-1px);
}

.map-toolbar-tooltip-badge:focus-visible {
  outline: 2px solid rgba(56, 189, 248, 0.65);
  outline-offset: 1px;
}

.map-toolbar-tooltip-badge--full {
  border-color: rgba(56, 189, 248, 0.5);
  color: #bae6fd;
}

.map-toolbar-tooltip-badge--compact {
  border-color: rgba(52, 211, 153, 0.5);
  color: #bbf7d0;
}

/* Карта и мониторинг: киберпанк-оболочка */
.map-page--cyber {
  --map-cyan: #00e5ff;
  --map-magenta: #ff2d95;
  --map-ink: #070b16;
  --map-panel: rgba(8, 12, 24, 0.95);
  --map-border: rgba(0, 229, 255, 0.34);
  --map-text: #dff8ff;
  --map-muted: #88a3c7;
  --map-control-h: 24px;
  --map-control-radius: 5px;
  background:
    radial-gradient(ellipse 72% 55% at 100% 0%, rgba(255, 45, 149, 0.14), transparent 62%),
    radial-gradient(ellipse 85% 62% at 0% 100%, rgba(0, 229, 255, 0.12), transparent 60%),
    linear-gradient(166deg, #05070f 0%, #090f1f 44%, #060a13 100%);
}

/* Мониторинг: модалка «Настройки» — киберпанк (самодостаточна, не зависит от родителя) */
.monitoring-settings-modal.modal-backdrop {
  z-index: 10050;
  padding: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  background:
    radial-gradient(ellipse 75% 55% at 50% 0%, rgba(255, 45, 149, 0.1), transparent 58%),
    radial-gradient(ellipse 65% 50% at 100% 100%, rgba(0, 229, 255, 0.12), transparent 52%),
    rgba(2, 4, 14, 0.88) !important;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

.monitoring-settings-modal__panel {
  --ms-cyan: #00e5ff;
  --ms-magenta: #ff2d95;
  --ms-text: #dff8ff;
  --ms-muted: #88a3c7;
  --ms-border: rgba(0, 229, 255, 0.42);
  --ms-radius: 6px;
  position: relative;
  max-width: 720px;
  width: 100%;
  height: var(--app-modal-fixed-height);
  min-height: var(--app-modal-fixed-height);
  max-height: var(--app-modal-fixed-height);
  display: flex;
  flex-direction: column;
  color: var(--ms-text);
  background: linear-gradient(152deg, rgba(10, 16, 34, 0.98) 0%, rgba(4, 8, 20, 0.99) 55%, rgba(6, 10, 22, 0.98) 100%);
  border: 1px solid var(--ms-border);
  border-radius: var(--ms-radius);
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.55),
    0 0 32px rgba(0, 229, 255, 0.14),
    0 0 64px rgba(255, 45, 149, 0.07),
    inset 0 1px 0 rgba(255, 255, 255, 0.06);
  overflow: hidden;
}

.monitoring-settings-modal__panel::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 3px;
  background: linear-gradient(90deg, rgba(255, 45, 149, 0.95), rgba(0, 229, 255, 0.85), rgba(255, 45, 149, 0.65));
  pointer-events: none;
  z-index: 1;
}

.monitoring-settings-modal__header {
  flex-shrink: 0;
  padding: 1.1rem 1.25rem 0.85rem;
  border-bottom: 1px solid rgba(0, 229, 255, 0.2);
  background: linear-gradient(180deg, rgba(0, 229, 255, 0.06) 0%, transparent 100%);
}

.monitoring-settings-modal__kicker {
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.58rem;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgba(255, 45, 149, 0.85);
  margin-bottom: 0.35rem;
}

.monitoring-settings-modal__title {
  margin: 0;
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.95rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #a5f3fc;
  text-shadow: 0 0 18px rgba(0, 229, 255, 0.35);
}

.monitoring-settings-modal__body {
  display: flex;
  gap: 0;
  min-height: 0;
  flex: 1 1 auto;
  overflow: hidden;
}

.monitoring-settings-modal__nav {
  flex: 0 0 158px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 12px 10px 12px 12px;
  border-right: 1px solid rgba(0, 229, 255, 0.18);
  background: rgba(0, 0, 0, 0.22);
}

.monitoring-settings-modal__nav-btn {
  width: 100%;
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  min-height: 2.25rem;
  padding: 0.45rem 0.65rem;
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.58rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  border: 1px solid rgba(0, 229, 255, 0.28);
  border-radius: 4px;
  background: rgba(0, 0, 0, 0.35);
  color: var(--ms-muted);
  cursor: pointer;
  transition: color 0.15s, border-color 0.15s, background 0.15s, box-shadow 0.15s;
}

.monitoring-settings-modal__nav-btn:hover:not(:disabled) {
  color: #e0f2fe;
  border-color: rgba(0, 229, 255, 0.55);
  background: rgba(0, 229, 255, 0.08);
}

.monitoring-settings-modal__nav-btn--active {
  color: #67e8f9;
  border-color: rgba(0, 229, 255, 0.75);
  background: rgba(0, 229, 255, 0.11);
  box-shadow:
    0 0 14px rgba(0, 229, 255, 0.12),
    inset 0 1px 0 rgba(255, 255, 255, 0.06);
}

.monitoring-settings-modal__content {
  flex: 1 1 auto;
  min-width: 0;
  overflow: auto;
  padding: 12px 14px 14px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.monitoring-settings-modal__section {
  padding: 0.75rem 0.85rem;
  border-radius: 4px;
  border: 1px solid rgba(0, 229, 255, 0.22);
  background: linear-gradient(145deg, rgba(0, 229, 255, 0.04) 0%, rgba(0, 0, 0, 0.28) 100%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03);
}

.monitoring-settings-modal__section-title {
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(103, 232, 249, 0.92);
  margin: 0 0 0.55rem;
}

.monitoring-settings-modal__row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 14px;
  align-items: center;
}

.monitoring-settings-modal__field {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 0.875rem;
  color: var(--ms-muted);
}

.monitoring-settings-modal__panel select,
.monitoring-settings-modal__panel input[type="number"] {
  min-height: 28px;
  padding: 0.2rem 0.45rem;
  font-size: 0.82rem;
  color: var(--ms-text);
  background: rgba(0, 0, 0, 0.45);
  border: 1px solid rgba(0, 229, 255, 0.35);
  border-radius: 4px;
}

.monitoring-settings-modal__panel select:focus,
.monitoring-settings-modal__panel input[type="number"]:focus {
  outline: none;
  border-color: rgba(0, 229, 255, 0.75);
  box-shadow: 0 0 0 1px rgba(0, 229, 255, 0.35), 0 0 12px rgba(0, 229, 255, 0.15);
}

.monitoring-settings-modal__panel select:disabled,
.monitoring-settings-modal__panel input:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.monitoring-settings-modal__check {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  color: var(--ms-text);
  font-size: 0.875rem;
}

.monitoring-settings-modal__check input[type="checkbox"] {
  width: 1rem;
  height: 1rem;
  accent-color: #00e5ff;
  cursor: pointer;
}

.monitoring-settings-modal__hint {
  color: var(--ms-muted);
  font-size: 0.8rem;
  line-height: 1.45;
  margin: 0;
}

.monitoring-settings-modal__hint--after-check {
  margin-top: 10px;
}

.monitoring-settings-modal__sensor-card {
  padding: 0.6rem 0.7rem;
  border-radius: 4px;
  border: 1px solid rgba(255, 45, 149, 0.18);
  background: rgba(0, 0, 0, 0.25);
}

.monitoring-settings-modal__sensor-card .monitoring-settings-modal__sensor-name {
  font-weight: 600;
  font-size: 0.88rem;
  color: #f0f9ff;
  margin-bottom: 6px;
}

.monitoring-settings-modal__footer {
  flex-shrink: 0;
  padding: 0.85rem 1.1rem 1rem;
  border-top: 1px solid rgba(0, 229, 255, 0.2);
  display: flex;
  justify-content: flex-end;
  background: rgba(0, 0, 0, 0.2);
}

/* Кнопки в нижней панели модалок — единый стиль с «Закрыть» в настройках мониторинга */
.monitoring-settings-modal__btn-close,
.map-settings-modal__footer button,
footer.monitoring-settings-modal__footer button,
.modal__footer button,
.profile-modal__actions button,
.modal-backdrop form.admin-cyber-card button {
  min-height: 2rem;
  padding: 0.4rem 1.15rem;
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.58rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #0a1628 !important;
  background: linear-gradient(180deg, rgba(103, 232, 249, 0.95) 0%, rgba(34, 211, 238, 0.88) 100%) !important;
  border: 1px solid rgba(0, 229, 255, 0.65) !important;
  border-radius: 4px;
  cursor: pointer;
  box-shadow:
    0 0 16px rgba(0, 229, 255, 0.25),
    inset 0 1px 0 rgba(255, 255, 255, 0.35);
  transition: filter 0.15s, box-shadow 0.15s, opacity 0.15s;
}

.monitoring-settings-modal__btn-close:hover,
.map-settings-modal__footer button:hover:not(:disabled),
footer.monitoring-settings-modal__footer button:hover:not(:disabled),
.modal__footer button:hover:not(:disabled),
.profile-modal__actions button:hover:not(:disabled),
.modal-backdrop form.admin-cyber-card button:hover:not(:disabled) {
  filter: brightness(1.08);
  box-shadow:
    0 0 22px rgba(0, 229, 255, 0.35),
    inset 0 1px 0 rgba(255, 255, 255, 0.4);
}

.monitoring-settings-modal__btn-close:focus-visible,
.map-settings-modal__footer button:focus-visible,
footer.monitoring-settings-modal__footer button:focus-visible,
.modal__footer button:focus-visible,
.profile-modal__actions button:focus-visible,
.modal-backdrop form.admin-cyber-card button:focus-visible {
  outline: 2px solid rgba(255, 45, 149, 0.7);
  outline-offset: 2px;
}

.monitoring-settings-modal__btn-close:disabled,
.map-settings-modal__footer button:disabled,
footer.monitoring-settings-modal__footer button:disabled,
.modal__footer button:disabled,
.profile-modal__actions button:disabled,
.modal-backdrop form.admin-cyber-card button:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  filter: grayscale(0.2);
  box-shadow: 0 0 8px rgba(0, 229, 255, 0.12);
}

.monitoring-settings-modal__empty {
  margin: 0;
  color: var(--ms-muted);
  font-size: 0.9rem;
  line-height: 1.5;
}

.monitoring-settings-modal__palette {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 8px;
}

.monitoring-settings-modal__palette-swatch {
  width: 1.35rem;
  height: 1.35rem;
  padding: 0;
  border: 2px solid rgba(255, 255, 255, 0.2);
  border-radius: 4px;
  cursor: pointer;
  box-sizing: border-box;
  transition: transform 0.12s, box-shadow 0.12s, border-color 0.12s;
}

.monitoring-settings-modal__palette-swatch:hover {
  transform: scale(1.08);
  border-color: rgba(0, 229, 255, 0.65);
  box-shadow: 0 0 8px rgba(0, 229, 255, 0.35);
}

.monitoring-settings-modal__palette-swatch--active {
  border-color: rgba(255, 45, 149, 0.9);
  box-shadow: 0 0 0 2px rgba(255, 45, 149, 0.35);
}

.monitoring-settings-modal__color {
  width: 2.25rem;
  height: 1.75rem;
  padding: 0;
  border: 1px solid rgba(0, 229, 255, 0.4);
  border-radius: 4px;
  cursor: pointer;
  background: transparent;
}

.monitoring-settings-modal__color::-webkit-color-swatch-wrapper {
  padding: 2px;
}

.monitoring-settings-modal__color::-webkit-color-swatch {
  border-radius: 2px;
  border: none;
}

/* Мониторинг: модалка полного JSON UnifiedTelemetry (киберпанк) */
.monitoring-unified-json-modal.modal-backdrop {
  z-index: 10060;
  padding: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  background:
    radial-gradient(ellipse 70% 50% at 50% 0%, rgba(255, 45, 149, 0.12), transparent 55%),
    radial-gradient(ellipse 60% 45% at 100% 100%, rgba(0, 229, 255, 0.14), transparent 50%),
    rgba(2, 4, 14, 0.9) !important;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.monitoring-unified-json-modal__panel {
  --uj-cyan: #00e5ff;
  --uj-magenta: #ff2d95;
  --uj-text: #dff8ff;
  --uj-muted: #88a3c7;
  --uj-border: rgba(0, 229, 255, 0.45);
  position: relative;
  width: min(920px, 96vw);
  height: var(--app-modal-fixed-height);
  min-height: var(--app-modal-fixed-height);
  max-height: var(--app-modal-fixed-height);
  display: flex;
  flex-direction: column;
  color: var(--uj-text);
  background: linear-gradient(152deg, rgba(10, 16, 34, 0.98) 0%, rgba(4, 8, 20, 0.99) 55%, rgba(6, 10, 22, 0.98) 100%);
  border: 1px solid var(--uj-border);
  border-radius: 6px;
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.55),
    0 0 36px rgba(0, 229, 255, 0.16),
    0 0 72px rgba(255, 45, 149, 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.06);
  overflow: hidden;
}

.monitoring-unified-json-modal__panel::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 3px;
  background: linear-gradient(90deg, rgba(255, 45, 149, 0.95), rgba(0, 229, 255, 0.85), rgba(255, 45, 149, 0.65));
  pointer-events: none;
  z-index: 1;
}

.monitoring-unified-json-modal__header {
  flex-shrink: 0;
  padding: 1rem 1.15rem 0.75rem;
  border-bottom: 1px solid rgba(0, 229, 255, 0.22);
  background: linear-gradient(180deg, rgba(0, 229, 255, 0.07) 0%, transparent 100%);
}

.monitoring-unified-json-modal__kicker {
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.55rem;
  font-weight: 600;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: rgba(255, 45, 149, 0.88);
  margin-bottom: 0.3rem;
}

.monitoring-unified-json-modal__title {
  margin: 0 0 0.35rem;
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.92rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #a5f3fc;
  text-shadow: 0 0 18px rgba(0, 229, 255, 0.35);
}

.monitoring-unified-json-modal__meta {
  margin: 0;
  font-family: "Share Tech Mono", ui-monospace, monospace;
  font-size: 0.72rem;
  color: var(--uj-muted);
  line-height: 1.4;
  word-break: break-all;
}

.monitoring-unified-json-modal__body {
  flex: 1 1 auto;
  min-height: 0;
  padding: 0.65rem 0.85rem;
  overflow: hidden;
}

.monitoring-unified-json-modal__pre {
  margin: 0;
  height: 100%;
  max-height: 100%;
  overflow: auto;
  padding: 0.65rem 0.75rem;
  font-family: "Share Tech Mono", ui-monospace, monospace;
  font-size: 0.74rem;
  line-height: 1.45;
  color: #c8f6ff;
  background: rgba(0, 8, 18, 0.65);
  border: 1px solid rgba(0, 229, 255, 0.2);
  border-radius: 4px;
  box-shadow: inset 0 0 24px rgba(0, 229, 255, 0.04);
  white-space: pre-wrap;
  word-break: break-word;
}

.monitoring-unified-json-modal__footer {
  flex-shrink: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  justify-content: flex-end;
  padding: 0.75rem 1rem;
  border-top: 1px solid rgba(0, 229, 255, 0.2);
  background: rgba(0, 0, 0, 0.2);
}

.monitoring-unified-json-modal__btn {
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 0.45rem 0.85rem;
  border-radius: 4px;
  border: 1px solid rgba(0, 229, 255, 0.55);
  background: linear-gradient(180deg, rgba(0, 229, 255, 0.18), rgba(0, 80, 120, 0.25));
  color: #dff8ff;
  cursor: pointer;
  box-shadow: 0 0 12px rgba(0, 229, 255, 0.12);
}

.monitoring-unified-json-modal__btn:hover:not(:disabled) {
  border-color: rgba(255, 45, 149, 0.65);
  box-shadow: 0 0 14px rgba(255, 45, 149, 0.18);
}

.monitoring-unified-json-modal__btn:focus-visible {
  outline: 2px solid rgba(0, 229, 255, 0.65);
  outline-offset: 2px;
}

.monitoring-unified-json-modal__btn--ghost {
  border-color: rgba(136, 163, 199, 0.45);
  background: transparent;
  box-shadow: none;
}

.map-page--cyber .card,
.map-page--cyber .map-toolbar.card {
  background: linear-gradient(150deg, rgba(12, 18, 36, 0.97) 0%, rgba(6, 10, 22, 0.98) 100%);
  border: 1px solid var(--map-border);
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.42),
    0 0 20px rgba(0, 229, 255, 0.09),
    inset 0 1px 0 rgba(255, 255, 255, 0.04);
}

.map-page--cyber .map-toolbar.card {
  border-color: rgba(0, 229, 255, 0.44);
}

/* Карта: верхняя и нижняя секции без видимого контура (рамки), с более крупными контролами */
.map-page--cyber .map-toolbar.card.map-toolbar--workspace {
  border: none;
  box-shadow: none;
  background: transparent !important;
  /* освобождаем 1px рамки и делаем контент крупнее */
  --map-control-h: 28px;
}

.map-page--cyber .map-toolbar.card.map-toolbar--workspace .map-toolbar-label {
  font-size: 0.62rem;
}

.map-page--cyber .map-toolbar.card.map-toolbar--workspace .map-toolbar-btn {
  font-size: 0.62rem;
}

.map-page--cyber .map-page-time-dock.card.map-page-time-dock--frameless {
  border: none;
  box-shadow: none;
  background: transparent !important;
  margin: 0;
  padding: 0.45rem 0.6rem;
  --map-control-h: 28px;
}

.map-page--cyber .map-page-time-dock.card.map-page-time-dock--frameless .map-toolbar-label {
  font-size: 0.62rem;
}

.map-page--cyber .map-page-time-dock.card.map-page-time-dock--frameless .map-time-slider__label,
.map-page--cyber .map-page-time-dock.card.map-page-time-dock--frameless .map-time-slider__value {
  font-size: 0.88rem;
}

.map-page--cyber .map-page-sidebar-strip,
.map-page--cyber .map-page-sidebar-panel,
.map-page--cyber .map-page-sidebar-panel-with-resizer,
.map-page--cyber .map-page-sidebar-layout > section,
.map-page--cyber .monitoring-unified-dock.card,
.map-page--cyber .map-page-map-column > .card {
  background: var(--map-panel) !important;
  border-color: var(--map-border) !important;
}

.map-page--cyber .map-page-sidebar-panel-with-resizer .map-page-sidebar-panel {
  background: transparent !important;
  border: none !important;
}

.map-page--cyber .map-page-sidebar-resizer {
  background: rgba(0, 229, 255, 0.2);
  border-left: 1px solid rgba(0, 229, 255, 0.35);
  border-right: none;
}

.map-page--cyber .map-page-sidebar-resizer:hover {
  background: rgba(0, 229, 255, 0.35);
}

/* Иконки сайдбара карты — тот же контур/свечение, что у map-toolbar-btn--icon */
.map-page--cyber .map-sidebar-icon-btn {
  --map-sidebar-icon-size: 21px;
  box-sizing: border-box;
  width: var(--map-sidebar-icon-size);
  height: var(--map-sidebar-icon-size);
  min-width: var(--map-sidebar-icon-size) !important;
  min-height: var(--map-sidebar-icon-size) !important;
  max-height: var(--map-sidebar-icon-size) !important;
  padding: 0 !important;
  margin: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  border: 1px solid rgba(0, 229, 255, 0.44) !important;
  border-radius: var(--map-control-radius) !important;
  background: rgba(0, 229, 255, 0.07) !important;
  color: #9dd6ff !important;
  flex-shrink: 0;
  cursor: pointer;
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.35),
    0 0 12px rgba(0, 229, 255, 0.1);
  transition:
    background 120ms ease,
    border-color 120ms ease,
    box-shadow 120ms ease;
  font-family: 'Share Tech Mono', ui-monospace, 'Cascadia Code', 'Consolas', monospace;
}

.map-page--cyber .map-sidebar-icon-btn:hover:not(:disabled) {
  background: rgba(0, 229, 255, 0.14) !important;
  border-color: rgba(0, 229, 255, 0.62) !important;
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.35),
    0 0 16px rgba(0, 229, 255, 0.16);
}

.map-page--cyber .map-sidebar-icon-btn:focus-visible {
  outline: 2px solid rgba(0, 229, 255, 0.55);
  outline-offset: 1px;
}

.map-page--cyber .map-sidebar-icon-btn:disabled {
  opacity: 0.38;
  cursor: default;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.35);
}

/* Как кнопка шестерёнки в тулбаре (24×24) */
.map-page--cyber .map-sidebar-icon-btn--toolbar {
  --map-sidebar-icon-size: var(--map-control-h);
}

.map-page--cyber .map-page-sidebar-strip__btn,
.map-page--cyber .map-page-sidebar-collapse-btn {
  /* классы map-sidebar-icon-btn задают вид; здесь только совместимость, если забыли модификатор */
  border-color: rgba(0, 229, 255, 0.44) !important;
  background: rgba(0, 229, 255, 0.07) !important;
  color: #9dd6ff !important;
}

.map-page--cyber .map-page-sidebar-strip__btn:hover:not(:disabled),
.map-page--cyber .map-page-sidebar-collapse-btn:hover:not(:disabled) {
  background: rgba(0, 229, 255, 0.14) !important;
  border-color: rgba(0, 229, 255, 0.62) !important;
}

.map-page--cyber .map-asset-accordion__bulk-actions {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 4px;
  padding: 0 6px 5px;
}

.map-page--cyber .map-page-sidebar-header-bulk {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
}

/* Явно бьём глобальный `button { min-height: 2.4rem }` и отступы */
.map-page--cyber .map-asset-accordion__bulk-actions > button.map-sidebar-icon-btn,
.map-page--cyber .map-page-sidebar-header-bulk > button.map-sidebar-icon-btn {
  min-height: var(--map-sidebar-icon-size) !important;
  max-height: var(--map-sidebar-icon-size) !important;
  height: var(--map-sidebar-icon-size) !important;
  padding: 0 !important;
  line-height: 1 !important;
}

.map-page--cyber .map-asset-accordion__group-row {
  display: flex;
  align-items: center;
  min-height: 22px;
}

/* Иначе `.map-page--cyber button` заливает все кнопки боковой панели */
.map-page--cyber .map-asset-accordion__asset-row {
  background: transparent !important;
  border: none !important;
}
.map-page--cyber .map-asset-accordion__asset-row:hover {
  background: rgba(0, 229, 255, 0.09) !important;
}
.map-page--cyber .map-asset-accordion__asset-row--selected {
  background: rgba(37, 99, 235, 0.2) !important;
}
.map-page--cyber .map-asset-accordion__asset-row--selected:hover {
  background: rgba(37, 99, 235, 0.26) !important;
}

.map-page--cyber .map-toolbar span:not(.map-toolbar-label),
.map-page--cyber .map-page-sidebar-layout span {
  color: var(--map-text);
}

.map-page--cyber .map-toolbar {
  font-family: 'Share Tech Mono', ui-monospace, 'Cascadia Code', 'Consolas', monospace;
  letter-spacing: 0.02em;
}

/* Одна строка тулбара карты: все поля компактные */
.map-toolbar-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;
}

.map-page--cyber .map-toolbar.map-toolbar--workspace {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.28rem;
  padding: 0.28rem 0.38rem;
  margin-bottom: 0;
}

.map-page--cyber .map-toolbar .map-toolbar-field {
  display: inline-flex;
  align-items: center;
  gap: 0.26rem;
  margin: 0;
}

.map-page--cyber .map-toolbar .map-toolbar-field--cluster {
  gap: 0.32rem;
  user-select: none;
  white-space: nowrap;
}

.map-page--cyber .map-toolbar .map-toolbar-cluster-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.32rem;
}

.map-page--cyber .map-toolbar .map-toolbar-cluster-toggle__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  color: rgba(226, 232, 240, 0.92);
}

.map-page--cyber .map-toolbar .map-toolbar-cluster-toggle__glyph {
  display: block;
}

.map-page--cyber .map-toolbar .map-toolbar-cluster-toggle__text {
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.58rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.map-page--cyber .map-toolbar .map-toolbar-cluster-toggle--on .map-toolbar-cluster-toggle__icon {
  color: #a5f3fc;
}

.map-page--cyber .map-toolbar .map-toolbar-tooltip-badge {
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.58rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  box-shadow: inset 0 0 0 1px rgba(0, 229, 255, 0.08);
}

.map-page--cyber .map-toolbar .map-toolbar-actions {
  margin-left: auto;
  display: flex;
  flex-wrap: wrap;
  gap: 0.28rem;
  align-items: center;
}

/* Подписи полей — Orbitron uppercase (как кнопки ANALYZE / subtabs) */
.map-page--cyber .map-toolbar .map-toolbar-label {
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.56rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--map-muted) !important;
  opacity: 0.9;
  white-space: nowrap;
  flex-shrink: 0;
}

.map-page--cyber .map-page-time-dock .map-toolbar-field {
  display: inline-flex;
  align-items: center;
  gap: 0.26rem;
  margin: 0;
}

.map-page--cyber .map-page-time-dock .map-toolbar-label {
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.56rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--map-muted) !important;
  opacity: 0.9;
  white-space: nowrap;
  flex-shrink: 0;
}

.map-page--cyber .map-toolbar.map-toolbar--workspace .map-toolbar-btn {
  font-size: 0.58rem;
  padding: 0 0.36rem !important;
}

.map-page--cyber .map-toolbar button,
.map-page--cyber .map-toolbar select,
.map-page--cyber .map-toolbar input:not([type="checkbox"]),
.map-page--cyber .map-toolbar .map-searchable-select__trigger,
.map-page--cyber .map-toolbar .map-toolbar-clock {
  min-height: var(--map-control-h) !important;
  max-height: var(--map-control-h);
  height: var(--map-control-h);
  box-sizing: border-box;
  border-radius: var(--map-control-radius);
}

/* Глобальный `button { min-height: 2.4rem }` иначе раздувает тулбар */
.map-page--cyber .map-toolbar button {
  padding: 0 0.42rem;
  line-height: 1.05;
  font-weight: 600;
}

.map-page--cyber .map-toolbar .map-toolbar-btn {
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.58rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

/* «Пуск/Стоп» в нижней доке — те же размеры/шрифт, что у кнопок тулбара */
.map-page--cyber .map-page-time-dock button.map-toolbar-btn {
  min-height: var(--map-control-h) !important;
  max-height: var(--map-control-h);
  height: var(--map-control-h);
  box-sizing: border-box;
  border-radius: var(--map-control-radius);
  padding: 0 0.42rem;
  line-height: 1.05;
  font-weight: 600;
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.58rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.map-page--cyber .map-page-time-dock select {
  min-height: var(--map-control-h) !important;
  max-height: var(--map-control-h);
  height: var(--map-control-h);
  box-sizing: border-box;
  border-radius: var(--map-control-radius);
  padding: 0 0.32rem;
}

.map-page--cyber .map-toolbar .map-toolbar-btn--icon {
  width: var(--map-control-h);
  min-width: var(--map-control-h) !important;
  padding: 0 !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(0, 229, 255, 0.44) !important;
  border-radius: var(--map-control-radius) !important;
  background: rgba(0, 229, 255, 0.07) !important;
  color: #9dd6ff !important;
}

.map-page--cyber .map-toolbar .map-toolbar-btn--icon:hover {
  background: rgba(0, 229, 255, 0.14) !important;
}

.map-page--cyber .map-toolbar select,
.map-page--cyber .map-toolbar input:not([type="checkbox"]) {
  padding: 0 0.32rem;
  line-height: calc(var(--map-control-h) - 2px);
  font-size: 0.68rem;
  font-family: 'Share Tech Mono', ui-monospace, 'Cascadia Code', 'Consolas', monospace;
}

.map-page--cyber .map-toolbar input[type="checkbox"] {
  height: 14px;
  width: 14px;
  min-height: 0 !important;
  max-height: none !important;
}

.map-page--cyber .map-toolbar .map-searchable-select__trigger {
  padding: 0 0.38rem !important;
  font-size: 0.68rem !important;
  line-height: 1.1 !important;
  border: 1px solid rgba(0, 229, 255, 0.44) !important;
  border-radius: var(--map-control-radius) !important;
  background: rgba(0, 229, 255, 0.07) !important;
  background-color: rgba(0, 229, 255, 0.07) !important;
  color: var(--map-text) !important;
  box-shadow: none;
}
.map-page--cyber .map-toolbar .map-searchable-select__trigger:hover:not(:disabled) {
  background: rgba(0, 229, 255, 0.14) !important;
  background-color: rgba(0, 229, 255, 0.14) !important;
  filter: none;
}

.map-page--cyber .map-toolbar .map-searchable-select--map-toolbar {
  max-width: min(46vw, 17.5rem);
}

.map-page--cyber .map-toolbar .map-searchable-select__dropdown {
  font-family: 'Share Tech Mono', ui-monospace, 'Cascadia Code', 'Consolas', monospace;
  font-size: 0.72rem;
  border: 1px solid rgba(0, 229, 255, 0.42) !important;
  box-shadow: 0 8px 22px rgba(0, 0, 0, 0.45);
  z-index: 2500;
}

.map-page--cyber .map-toolbar .map-searchable-select__search {
  font-family: inherit !important;
  font-size: 0.72rem !important;
}

.map-page--cyber .map-toolbar input[type="datetime-local"] {
  min-width: 0;
  width: 9.65rem;
  max-width: 11rem;
  font-size: 0.64rem;
  font-variant-numeric: tabular-nums;
}

.map-page--cyber .map-toolbar-clock {
  padding: 0 0.4rem;
  font-size: 0.66rem;
  font-family: 'Share Tech Mono', ui-monospace, 'Cascadia Code', 'Consolas', monospace;
  font-weight: 600;
}

.map-toolbar-seg {
  display: inline-flex;
  align-items: stretch;
  border-radius: 5px;
  border: 1px solid rgba(0, 229, 255, 0.42);
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.35),
    0 0 14px rgba(0, 229, 255, 0.12);
  overflow: hidden;
  background: rgba(6, 10, 22, 0.65);
  flex-shrink: 0;
}

.map-toolbar-seg__btn {
  border: none !important;
  border-radius: 0 !important;
  background: transparent !important;
  padding: 0 0.38rem !important;
  color: var(--map-text) !important;
  opacity: 0.85;
}

.map-toolbar-seg__btn:hover {
  background: rgba(0, 229, 255, 0.12) !important;
  opacity: 1;
}

.map-toolbar-seg__btn--active {
  background: linear-gradient(135deg, rgba(255, 45, 149, 0.38), rgba(0, 229, 255, 0.22)) !important;
  opacity: 1;
}

/* Раскладка «2 карты»: по ширине контейнера (окно/карточка/страница), не по viewport */
.map-workspace-dual-cq {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
  width: 100%;
  height: 100%;
  container-type: inline-size;
  container-name: map-dual;
}

/* По умолчанию (узкие контейнеры): две карты вертикально */
.map-workspace-dual-row {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  flex: 1;
  min-height: 0;
  width: 100%;
}

.map-workspace-dual-pane {
  min-height: 0;
  min-width: 0;
  width: 100%;
}

.map-workspace-dual-resizer {
  display: none;
}

/* Широкий контейнер: две карты горизонтально + центральный ресайзер */
@container map-dual (min-width: 720px) {
  .map-workspace-dual-row {
    flex-direction: row;
    gap: 0.5rem;
    align-items: stretch;
  }
  .map-workspace-dual-pane {
    height: 100%;
  }
  .map-workspace-dual-resizer {
    display: block;
    flex: 0 0 6px;
    width: 6px;
    cursor: col-resize;
    touch-action: none;
    user-select: none;
    border-radius: 6px;
    background: rgba(0, 229, 255, 0.2);
    border: 1px solid rgba(0, 229, 255, 0.35);
    box-shadow: 0 0 14px rgba(0, 229, 255, 0.12);
  }
  .map-workspace-dual-resizer:hover {
    background: rgba(0, 229, 255, 0.35);
  }
}

.map-page--cyber .map-toolbar .map-toolbar-clock {
  border-color: rgba(0, 229, 255, 0.44);
  background: rgba(0, 229, 255, 0.11);
  color: #aef8ff;
  box-shadow: 0 0 14px rgba(0, 229, 255, 0.15);
}

.map-page--cyber input,
.map-page--cyber select,
.map-page--cyber textarea {
  border-color: rgba(0, 229, 255, 0.38);
  background: rgba(0, 0, 0, 0.45);
  color: var(--map-text);
}

.map-page--cyber button {
  border-color: rgba(0, 229, 255, 0.44);
  background: rgba(0, 229, 255, 0.07);
  color: var(--map-text);
}

.map-page--cyber button:hover {
  background: rgba(0, 229, 255, 0.14);
}

.map-page--cyber button.map-mode-live-active {
  background: #c2410c;
  border-color: #9a3412;
  box-shadow: none;
  color: #fff;
  animation: none;
}

.map-page--cyber button.map-mode-history-active {
  background: #15803d;
  border-color: #166534;
  box-shadow: none;
  color: #fff;
  animation: none;
}

.map-page--cyber button.map-mode-live-active:hover,
.map-page--cyber button.map-mode-live-active:focus-visible,
.map-page--cyber button.map-mode-history-active:hover,
.map-page--cyber button.map-mode-history-active:focus-visible {
  background: #1e3a8a !important;
  border-color: #172554 !important;
  box-shadow: none !important;
  color: #e8eeff !important;
}

.map-page--cyber .map-toolbar-settings-gear {
  color: #9dd6ff !important;
}

.map-page--cyber .map-toolbar.card {
  position: relative;
  /* В MonitoringToolbar селекты "Организация/Техника" используют абсолютный dropdown.
     overflow:hidden обрезает его внутри карточки тулбара. */
  overflow: visible;
}

.map-page--cyber .map-toolbar.card::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(
    120deg,
    transparent 0%,
    rgba(0, 229, 255, 0.04) 35%,
    rgba(255, 45, 149, 0.05) 55%,
    transparent 100%
  );
  transform: translateX(-100%);
  animation: cyber-scanline 4.8s linear infinite;
}

/* /refs/virtual-sensors: list styled like /map controls */
.map-page--cyber .vs-map-list__head {
  display: grid;
  grid-template-columns: 96px 1fr 44px;
  gap: 6px;
  padding: 0 2px;
  color: var(--map-muted);
  font-size: 0.72rem;
  font-family: "Orbitron", system-ui, sans-serif;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  user-select: none;
}

.map-page--cyber .vs-map-list__rows {
  display: grid;
  gap: 6px;
  margin-top: 6px;
}

.map-page--cyber .vs-map-row {
  display: grid;
  grid-template-columns: 96px 1fr 44px;
  gap: 6px;
  align-items: center;
  padding: 6px 8px;
  cursor: pointer;
  border-radius: 6px;
  border: 1px solid rgba(0, 229, 255, 0.22);
  background: rgba(6, 10, 22, 0.55);
  color: var(--map-text);
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.25);
  transition: background 0.15s ease, border-color 0.15s ease;
}

.map-page--cyber .vs-map-row:hover {
  background: rgba(0, 229, 255, 0.08);
  border-color: rgba(0, 229, 255, 0.34);
}

.map-page--cyber .vs-map-row--active {
  background: linear-gradient(135deg, rgba(255, 45, 149, 0.22), rgba(0, 229, 255, 0.10));
  border-color: rgba(0, 229, 255, 0.44);
}

.map-page--cyber .vs-map-row__proto {
  font-size: 0.72rem;
  color: rgba(191, 248, 255, 0.72);
  font-family: "Share Tech Mono", ui-monospace, "Cascadia Code", "Consolas", monospace;
}

.map-page--cyber .vs-map-row__main {
  min-width: 0;
}

.map-page--cyber .vs-map-row__title {
  font-weight: 800;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.map-page--cyber .vs-map-row__sub {
  color: rgba(136, 163, 199, 0.95);
  font-size: 0.76rem;
  font-family: "Share Tech Mono", ui-monospace, "Cascadia Code", "Consolas", monospace;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.map-page--cyber .vs-map-row__actions {
  display: flex;
  justify-content: center;
}

.map-page--cyber .map-toolbar .map-toolbar-clock {
  animation: cyber-clock-glow 2.6s ease-in-out infinite;
}

/* Модалка «Настройки карты» (киберпанк) */
.map-settings-modal__overlay {
  position: fixed;
  inset: 0;
  z-index: 10100;
  background:
    radial-gradient(ellipse 70% 55% at 50% 15%, rgba(255, 45, 149, 0.16), transparent 55%),
    radial-gradient(ellipse 55% 45% at 100% 100%, rgba(0, 229, 255, 0.14), transparent 48%),
    rgba(0, 0, 0, 0.72);
  display: grid;
  place-items: center;
  padding: 1rem;
}

.map-settings-modal__dialog {
  width: min(520px, 96vw);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  box-sizing: border-box;
  border-radius: 10px;
  border: 1px solid rgba(0, 229, 255, 0.44);
  background: linear-gradient(150deg, rgba(12, 18, 36, 0.97) 0%, rgba(6, 10, 22, 0.98) 100%);
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.42),
    0 0 26px rgba(0, 229, 255, 0.12),
    inset 0 1px 0 rgba(255, 255, 255, 0.04);
  color: #dff8ff;
  font-family: "Share Tech Mono", ui-monospace, monospace;
}

/* Фиксированная высота: настройки карты, мониторинг-стиль диалоги, редакторы (не confirm) */
.map-settings-modal__dialog:not(.map-settings-modal__dialog--confirm) {
  height: var(--app-modal-fixed-height);
  min-height: var(--app-modal-fixed-height);
  max-height: var(--app-modal-fixed-height);
}

/* Компактные подтверждения: высота по содержимому, с потолком */
.map-settings-modal__dialog--confirm {
  height: auto;
  min-height: 0;
  max-height: min(90vh, 720px);
}

/**
 * Простая карточка в overlay без шапка/тело/футер (например трассировка графика, малые формы).
 * Та же высота, что у --app-modal-fixed-height; прокрутка на самой панели.
 */
.app-modal-fixed-card {
  height: var(--app-modal-fixed-height);
  min-height: var(--app-modal-fixed-height);
  max-height: var(--app-modal-fixed-height);
  overflow-y: auto;
  overflow-x: hidden;
  box-sizing: border-box;
}

.map-settings-modal__head {
  flex-shrink: 0;
  padding: 0.75rem 0.85rem 0.6rem;
  border-bottom: 1px solid rgba(0, 229, 255, 0.22);
  position: relative;
  overflow: hidden;
}
.map-settings-modal__head-row {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.5rem;
}
.map-settings-modal__head-text {
  flex: 1;
  min-width: 0;
}
.map-settings-modal__close {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  margin: -0.2rem -0.35rem -0.2rem 0;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  color: rgba(191, 248, 255, 0.88);
  cursor: pointer;
  line-height: 0;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.map-settings-modal__close:hover {
  background: rgba(0, 229, 255, 0.12);
  border-color: rgba(0, 229, 255, 0.28);
  color: #dff8ff;
}
.map-settings-modal__close:focus-visible {
  outline: 2px solid rgba(0, 229, 255, 0.55);
  outline-offset: 2px;
}
.map-settings-modal__head::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(
    120deg,
    transparent 0%,
    rgba(0, 229, 255, 0.04) 35%,
    rgba(255, 45, 149, 0.05) 55%,
    transparent 100%
  );
  transform: translateX(-100%);
  animation: cyber-scanline 5.2s linear infinite;
}
.map-settings-modal__title {
  font-family: "Orbitron", system-ui, sans-serif;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #aef8ff;
  font-weight: 800;
  font-size: 0.92rem;
}

/* Редактор правила ВД (контроллер / шаблон): заголовок в духе киберпанка */
.refs-vs-rule-editor__title {
  text-transform: none;
  letter-spacing: 0.04em;
  font-size: 0.88rem;
  line-height: 1.35;
  padding: 0.2rem 0 0.25rem 0.75rem;
  border-left: 3px solid rgba(255, 45, 149, 0.95);
  box-shadow: inset 3px 0 18px rgba(255, 45, 149, 0.12);
  background: linear-gradient(110deg, #f0ffff 0%, #7ee8ff 38%, #ff9de2 68%, #c9fff9 100%);
  background-size: 220% 100%;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  animation: refs-vs-rule-editor-title-shift 5s ease-in-out infinite;
}
@keyframes refs-vs-rule-editor-title-shift {
  0%,
  100% {
    background-position: 0% 50%;
  }
  50% {
    background-position: 100% 50%;
  }
}

/* Таблица X→Y тарировки: ограниченная высота, липкий thead */
.refs-vs-cal-table-scroll {
  max-height: min(11.5rem, 32vh);
  overflow: auto;
  border-radius: 8px;
  border: 1px solid rgba(0, 229, 255, 0.22);
  background: rgba(0, 0, 0, 0.28);
  -webkit-overflow-scrolling: touch;
}
.refs-vs-cal-table-scroll__table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
}
.refs-vs-cal-table-scroll thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: linear-gradient(180deg, rgba(14, 22, 42, 0.98) 0%, rgba(10, 16, 32, 0.96) 100%);
  box-shadow: 0 1px 0 rgba(0, 229, 255, 0.35);
}
.map-settings-modal__sub {
  margin-top: 0.25rem;
  color: rgba(191, 248, 255, 0.72);
  font-size: 0.82rem;
}
.map-settings-modal__body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 0.75rem 0.85rem;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  -webkit-overflow-scrolling: touch;
}
.map-settings-modal__section {
  border: 1px solid rgba(0, 229, 255, 0.18);
  background: rgba(0, 0, 0, 0.25);
  border-radius: 8px;
  padding: 0.65rem 0.7rem;
}
.map-settings-modal__section-title {
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.62rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(191, 248, 255, 0.82);
  margin-bottom: 0.45rem;
}
.map-settings-modal__row {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.88rem;
}
.map-settings-modal__field {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}
.map-settings-modal__label {
  color: #dff8ff;
  font-size: 0.88rem;
}
.map-settings-modal__hint {
  color: rgba(191, 248, 255, 0.62);
  font-size: 0.78rem;
}
.map-settings-modal__color-row {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
}
.map-settings-modal__color {
  width: 44px;
  height: 30px;
  padding: 0;
  border-radius: 6px;
  border: 1px solid rgba(0, 229, 255, 0.3);
  background: rgba(0, 0, 0, 0.35);
  cursor: pointer;
}
.map-settings-modal__hex {
  flex: 1 1 180px;
  min-width: 0;
  padding: 0.35rem 0.5rem;
  border-radius: 6px;
  border: 1px solid rgba(0, 229, 255, 0.35);
  background: rgba(0, 0, 0, 0.45);
  color: #dff8ff;
  font-family: inherit;
  font-size: 0.88rem;
}
.map-settings-modal__footer {
  flex-shrink: 0;
  padding: 0.7rem 0.85rem;
  border-top: 1px solid rgba(0, 229, 255, 0.22);
  display: flex;
  justify-content: flex-end;
  background: linear-gradient(180deg, rgba(6, 10, 22, 0.55) 0%, rgba(6, 10, 22, 0.92) 100%);
}
.map-settings-modal__btn {
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.58rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

/* Параметры карточки дашборда (MetricCard): те же классы шапки/тела/футера, что у «Настройки карты» */
.map-settings-modal__card-size-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0.5rem;
}
.map-settings-modal__card-size-btn {
  padding: 0.5rem 0.45rem;
  border-radius: 8px;
  border: 1px solid rgba(0, 229, 255, 0.28);
  background: rgba(0, 0, 0, 0.35);
  cursor: pointer;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.35rem;
  color: inherit;
  font: inherit;
  min-width: 0;
  box-sizing: border-box;
  transition: border-color 0.15s ease, background 0.15s ease, box-shadow 0.15s ease;
}
.map-settings-modal__card-size-btn:hover {
  border-color: rgba(0, 229, 255, 0.5);
  background: rgba(0, 229, 255, 0.07);
}
.map-settings-modal__card-size-btn--selected {
  border: 2px solid rgba(0, 229, 255, 0.62);
  background: rgba(0, 229, 255, 0.1);
  box-shadow: 0 0 14px rgba(0, 229, 255, 0.12);
}
.map-settings-modal__card-size-btn--full {
  grid-column: span 2;
}
.map-settings-modal__card-size-preview {
  width: 100%;
  height: 22px;
  background: rgba(0, 0, 0, 0.45);
  border-radius: 4px;
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(0, 229, 255, 0.15);
}
.map-settings-modal__card-size-bar {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  border-radius: 4px;
  transition: width 0.2s ease, background 0.15s ease;
}
.map-settings-modal__card-size-bar--on {
  background: linear-gradient(90deg, rgba(0, 229, 255, 0.78), rgba(56, 189, 248, 0.55));
}
.map-settings-modal__card-size-bar--off {
  background: rgba(0, 229, 255, 0.22);
}
.map-settings-modal__card-size-label {
  font-size: 0.68rem;
  line-height: 1.25;
  text-align: center;
  color: rgba(191, 248, 255, 0.78);
}
.map-settings-modal__card-size-btn--selected .map-settings-modal__card-size-label {
  color: #aef8ff;
}
.map-settings-modal__card-size-sublabel {
  display: block;
  font-size: 0.62rem;
  color: rgba(191, 248, 255, 0.55);
  margin-top: 0.1rem;
}
.map-settings-modal__card-size-btn--selected .map-settings-modal__card-size-sublabel {
  color: rgba(174, 248, 255, 0.85);
}
.map-settings-modal__card-actions {
  display: flex;
  gap: 0.35rem;
  flex-wrap: wrap;
}
.map-settings-modal__action-btn {
  padding: 0.4rem 0.65rem;
  border-radius: 6px;
  border: 1px solid rgba(0, 229, 255, 0.32);
  background: rgba(0, 0, 0, 0.35);
  color: #dff8ff;
  font-size: 0.82rem;
  cursor: pointer;
  font-family: inherit;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.map-settings-modal__action-btn:hover:not(:disabled) {
  background: rgba(0, 229, 255, 0.1);
  border-color: rgba(0, 229, 255, 0.52);
}
.map-settings-modal__action-btn:disabled {
  opacity: 0.42;
  cursor: not-allowed;
}
.map-settings-modal__input-narrow {
  width: 5.5rem;
  flex: none;
  padding: 0.35rem 0.5rem;
  border-radius: 6px;
  border: 1px solid rgba(0, 229, 255, 0.35);
  background: rgba(0, 0, 0, 0.45);
  color: #dff8ff;
  font-family: inherit;
  font-size: 0.88rem;
  box-sizing: border-box;
}

@media (prefers-reduced-motion: reduce) {
  .map-settings-modal__head::after {
    animation: none !important;
  }
}

@keyframes cyber-scanline {
  0% { transform: translateX(-100%); opacity: 0.45; }
  50% { opacity: 0.7; }
  100% { transform: translateX(100%); opacity: 0.45; }
}

@keyframes cyber-clock-glow {
  0%, 100% { box-shadow: 0 0 8px rgba(0, 229, 255, 0.14); }
  50% { box-shadow: 0 0 16px rgba(0, 229, 255, 0.32); }
}

@media (prefers-reduced-motion: reduce) {
  .map-page--cyber .map-toolbar .map-toolbar-clock,
  .map-page--cyber .map-toolbar.card::after {
    animation: none !important;
  }

  .map-page--cyber .map-toolbar-clock__value--updated {
    animation: none !important;
    color: #fff176 !important;
    text-shadow:
      0 0 6px rgba(255, 237, 74, 0.9),
      0 0 12px rgba(250, 204, 21, 0.45) !important;
  }
}

/* Профиль пользователя: киберпанк-оболочка */
.profile-page {
  display: grid;
  gap: 0.8rem;
}

.profile-page--cyber {
  --cy-cyan: #00e5ff;
  --cy-magenta: #ff2d95;
  --cy-border: rgba(0, 229, 255, 0.34);
  --cy-text: #dff8ff;
}

.profile-page--cyber .card {
  background:
    radial-gradient(120% 90% at 100% 0%, rgba(255, 45, 149, 0.10) 0%, transparent 58%),
    radial-gradient(130% 95% at 0% 100%, rgba(0, 229, 255, 0.10) 0%, transparent 60%),
    linear-gradient(150deg, rgba(12, 18, 36, 0.97) 0%, rgba(6, 10, 22, 0.98) 100%);
  border: 1px solid var(--cy-border);
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.42),
    0 0 20px rgba(0, 229, 255, 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.04);
}

.profile-page__header {
  position: relative;
  overflow: hidden;
}
.profile-page__header::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(
    120deg,
    transparent 0%,
    rgba(0, 229, 255, 0.04) 35%,
    rgba(255, 45, 149, 0.05) 55%,
    transparent 100%
  );
  transform: translateX(-100%);
  animation: cyber-scanline 5.2s linear infinite;
}

.profile-page__title-row {
  display: flex;
  gap: 0.75rem;
  align-items: flex-start;
  justify-content: space-between;
  flex-wrap: wrap;
}

.profile-page__kicker {
  color: #86f9ff;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-size: 0.78rem;
  text-shadow: 0 0 12px rgba(0, 229, 255, 0.28);
  margin-bottom: 0.15rem;
}

.profile-page__actions {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.profile-page__identity {
  margin-top: 0.65rem;
  display: grid;
  grid-template-columns: 52px 1fr;
  gap: 0.75rem;
  align-items: center;
}

.profile-page__avatar {
  width: 52px;
  height: 52px;
  border-radius: 12px;
  display: grid;
  place-items: center;
  font-weight: 800;
  color: #031022;
  background: linear-gradient(135deg, var(--cy-cyan), #0076ff 52%, var(--cy-magenta));
  box-shadow:
    0 0 0 1px rgba(0, 229, 255, 0.45),
    0 0 16px rgba(0, 229, 255, 0.25),
    0 12px 24px rgba(0, 0, 0, 0.35);
}

.profile-page__name-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: baseline;
}
.profile-page__name {
  font-size: 1.25rem;
  font-weight: 800;
  color: var(--cy-text);
}
.profile-page__username {
  color: rgba(191, 248, 255, 0.75);
  font-weight: 600;
}

.profile-page__meta {
  margin-top: 0.45rem;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.5rem;
}
@media (max-width: 820px) {
  .profile-page__meta { grid-template-columns: 1fr; }
}
.profile-page__meta-item {
  border: 1px solid rgba(0, 229, 255, 0.22);
  border-radius: 10px;
  padding: 0.5rem 0.6rem;
  background: rgba(0, 0, 0, 0.28);
}
.profile-page__meta-label {
  display: block;
  font-size: 0.78rem;
  color: rgba(191, 248, 255, 0.7);
  margin-bottom: 0.2rem;
}
.profile-page__meta-value {
  color: var(--cy-text);
  overflow: hidden;
  text-overflow: ellipsis;
}

.profile-page__mono {
  font-family: ui-monospace, 'Cascadia Code', 'Consolas', monospace;
  font-variant-numeric: tabular-nums;
}

.profile-page__status {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.12rem 0.5rem;
  border-radius: 999px;
  border: 1px solid rgba(0, 229, 255, 0.25);
  background: rgba(0, 229, 255, 0.06);
  color: #bff8ff;
  width: fit-content;
}
.profile-page__status--ok {
  border-color: rgba(63, 185, 80, 0.4);
  background: rgba(63, 185, 80, 0.12);
  color: #c7f9d6;
}
.profile-page__status--off {
  border-color: rgba(248, 81, 73, 0.5);
  background: rgba(248, 81, 73, 0.12);
  color: #ffd2cf;
}

.profile-page__roles {
  margin-top: 0.65rem;
  display: grid;
  gap: 0.35rem;
}
.profile-page__section-title {
  font-weight: 700;
  color: var(--cy-text);
}
.profile-page__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}

.profile-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.18rem 0.55rem;
  border-radius: 999px;
  border: 1px solid rgba(0, 229, 255, 0.32);
  background: rgba(0, 229, 255, 0.08);
  color: var(--cy-text);
  font-size: 0.85rem;
  white-space: nowrap;
}
.profile-chip--role {
  border-color: rgba(255, 45, 149, 0.42);
  background: rgba(255, 45, 149, 0.12);
}
.profile-chip--ok {
  border-color: rgba(63, 185, 80, 0.45);
  background: rgba(63, 185, 80, 0.12);
}
.profile-chip--danger {
  border-color: rgba(248, 81, 73, 0.55);
  background: rgba(248, 81, 73, 0.14);
}
.profile-chip--muted {
  border-color: rgba(148, 163, 184, 0.35);
  background: rgba(148, 163, 184, 0.12);
  color: rgba(223, 248, 255, 0.85);
}

.profile-page__grid {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
  gap: 0.8rem;
  align-items: start;
}
@media (max-width: 1040px) {
  .profile-page__grid { grid-template-columns: 1fr; }
}

.profile-page__panel-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0.55rem;
}
.profile-page__panel-hint {
  color: rgba(191, 248, 255, 0.7);
  font-size: 0.85rem;
}

.profile-page__perm-groups {
  display: grid;
  gap: 0.45rem;
}
.profile-page__perm-group {
  border: 1px solid rgba(0, 229, 255, 0.2);
  border-radius: 10px;
  background: rgba(0, 0, 0, 0.22);
  overflow: hidden;
}
.profile-page__perm-summary {
  cursor: pointer;
  padding: 0.5rem 0.6rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem;
  user-select: none;
}
.profile-page__perm-scope {
  font-weight: 800;
  letter-spacing: 0.02em;
  color: #bff8ff;
}
.profile-page__perm-count {
  font-size: 0.82rem;
  padding: 0.1rem 0.45rem;
  border-radius: 999px;
  border: 1px solid rgba(0, 229, 255, 0.3);
  background: rgba(0, 229, 255, 0.08);
  color: rgba(223, 248, 255, 0.9);
}
.profile-page__perm-list {
  border-top: 1px solid rgba(0, 229, 255, 0.14);
  padding: 0.45rem 0.6rem;
  display: grid;
  gap: 0.35rem;
  max-height: 320px;
  overflow: auto;
}
.profile-page__perm-item {
  display: grid;
  grid-template-columns: 1rem 1fr;
  gap: 0.45rem;
  align-items: start;
  color: rgba(223, 248, 255, 0.92);
}
.profile-page__perm-ok {
  color: rgba(63, 185, 80, 0.95);
  font-weight: 900;
  line-height: 1.2;
  margin-top: 0.05rem;
}

.profile-page__table-wrap {
  overflow: auto;
  border: 1px solid rgba(0, 229, 255, 0.14);
  border-radius: 10px;
  background: rgba(0, 0, 0, 0.22);
}
.profile-page__table {
  width: 100%;
  border-collapse: collapse;
  min-width: 38rem;
}
.profile-page__table th,
.profile-page__table td {
  padding: 0.45rem 0.55rem;
  border-bottom: 1px solid rgba(0, 229, 255, 0.12);
  text-align: left;
  vertical-align: top;
}
.profile-page__table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: rgba(8, 12, 24, 0.98);
  color: rgba(191, 248, 255, 0.8);
}

.profile-page__muted {
  color: rgba(191, 248, 255, 0.68);
}

.profile-modal {
  width: min(520px, calc(100vw - 2rem));
  max-height: calc(100vh - 2rem);
  display: grid;
  gap: 0.6rem;
  overflow: auto;
}
.profile-modal__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
}
.profile-modal__close {
  min-height: auto !important;
  width: 2.1rem;
  height: 2.1rem;
  padding: 0 !important;
}
.profile-modal__body {
  display: grid;
  gap: 0.55rem;
}
.profile-modal__field {
  display: grid;
  gap: 0.25rem;
}
.profile-modal__label {
  font-size: 0.88rem;
  color: rgba(191, 248, 255, 0.78);
}
.profile-modal__error {
  border: 1px solid rgba(248, 81, 73, 0.55);
  background: rgba(248, 81, 73, 0.14);
  color: #ffd2cf;
  border-radius: 10px;
  padding: 0.45rem 0.6rem;
}
.profile-modal__actions {
  display: flex;
  justify-content: flex-end;
  gap: 0.5rem;
  flex-wrap: wrap;
}

@media (prefers-reduced-motion: reduce) {
  .profile-page__header::after {
    animation: none !important;
  }
}

/* Карта техники: режимы — оранжевый (оперативный) / зелёный (история); hover — глубокий синий */
button.map-mode-live-active {
  background: #c2410c;
  border-color: #9a3412;
  color: #fff;
}
button.map-mode-live-active:hover,
button.map-mode-live-active:focus-visible {
  background: #1e3a8a;
  border-color: #172554;
  color: #e8eeff;
}
button.map-mode-history-active {
  background: #15803d;
  border-color: #166534;
  color: #fff;
}
button.map-mode-history-active:hover,
button.map-mode-history-active:focus-visible {
  background: #1e3a8a;
  border-color: #172554;
  color: #e8eeff;
}
button.danger {
  background: var(--danger);
  border-color: var(--danger);
  color: #fff;
}
/** Вторичное действие (тулбар, «Обновить»): явный класс, стиль как у базовой кнопки */
button.secondary {
  background: var(--panel);
  border: 1px solid var(--border);
  color: var(--e6edf3, #e6edf3);
}
button.secondary:hover {
  background: #21262d;
}
input, select, textarea {
  font: inherit;
  padding: 0.2rem 0.4rem;
  border-radius: 0.3rem;
  border: 1px solid var(--border);
  background: var(--panel);
  color: inherit;
  min-height: 2.2rem;
}

/* Статус «Генерация идёт»: плавное пульсирование фона */
.generation-status {
  display: inline-flex;
  align-items: center;
  color: var(--muted);
  position: relative;
  padding: 0.35rem 0.6rem;
  border-radius: 6px;
}
.generation-status.running {
  color: var(--text);
}
.generation-status.running::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 6px;
  background: rgba(88, 166, 255, 0.12);
  animation: generation-pulse 2.5s ease-in-out infinite;
  pointer-events: none;
}
.generation-status-text {
  position: relative;
  z-index: 1;
}
@keyframes generation-pulse {
  0%, 100% { opacity: 0.4; }
  50% { opacity: 1; }
}

/* Бейджи тегов (коды тегов протокола и т.п.) */
.tag-chip {
  display: inline-block;
  font-size: 0.9rem;
  padding: 0.1rem 0.4rem;
  border-radius: 0.2rem;
  background: var(--border);
  color: inherit;
}

/* Страница «История»: выравнивание высоты «Окно» (select) с полями дат (datetime-local) */
.history-window-row,
.history-datetime-row {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}
.history-window-label {
  color: var(--muted);
  font-size: 0.9rem;
}
.history-window-select,
.history-datetime-row input {
  min-height: 2.25rem;
  box-sizing: border-box;
}

.app-layout {
  display: flex;
  min-height: 100vh;
}

.sidebar {
  position: fixed;
  left: 0;
  top: 0;
  bottom: 0;
  width: 32px;
  height: 100vh;
  background: var(--panel);
  border-right: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  transition: width 0.2s ease;
  overflow: hidden;
  z-index: 50;
}
.sidebar-top {
  display: flex;
  align-items: center;
  border-bottom: 1px solid var(--border);
}
.sidebar-body {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
}
.sidebar-footer {
  flex-shrink: 0;
  border-top: 1px solid var(--border);
  padding: 0.2rem 0;
  background: var(--panel);
}
.sidebar-logout {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0;
  width: 100%;
  padding: 0;
  border: none;
  border-radius: 0;
  background: transparent;
  text-align: left;
  min-height: 2.4rem;
  font-size: 0.95rem;
  color: var(--muted);
  cursor: pointer;
}
.app-layout.sidebar-open .sidebar-logout {
  justify-content: flex-start;
  gap: 0.4rem;
  padding: 0.2rem 0.6rem;
}
.sidebar-logout:hover {
  background: #21262d;
  color: var(--fg);
}
.sidebar-logout .nav-icon {
  flex-shrink: 0;
  opacity: 0.85;
}
.app-layout.sidebar-open .sidebar {
  width: 176px;
}
.page {
  margin-left: 32px;
  transition: margin-left 0.2s ease;
}
.app-layout.sidebar-open .page {
  margin-left: 176px;
}

/* Кнопка гамбургер-меню: высота как у заголовка, прямые углы (без закругления) */
.sidebar-toggle {
  flex-shrink: 0;
  width: 32px;
  min-height: 32px;
  height: 32px;
  border: none;
  border-radius: 0;
  background: transparent;
  font-size: 1.0rem;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
.sidebar-version-inline {
  opacity: 0;
  width: 0;
  overflow: hidden;
  white-space: nowrap;
  font-size: 0.72rem;
  color: #7dd3fc;
  letter-spacing: 0.02em;
  transition: opacity 0.2s ease, width 0.2s ease;
}
.app-layout.sidebar-open .sidebar-version-inline {
  opacity: 0.95;
  width: auto;
  margin-left: 0.4rem;
}
.sidebar-toggle:hover {
  background: #21262d;
}
.hamburger-icon {
  line-height: 1;
}

.sidebar-nav {
  display: flex;
  flex-direction: column;
  padding: 0.3rem 0;
  flex: 1;
  min-height: 0;
  overflow-y: auto;
}
.sidebar-nav button {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0;
  width: 100%;
  padding: 0;
  border: none;
  border-radius: 0;
  background: transparent;
  text-align: left;
  min-height: 2.4rem;
  font-size: 0.95rem;
}
.app-layout.sidebar-open .sidebar-nav button {
  justify-content: flex-start;
  gap: 0.4rem;
  padding: 0.2rem 0.6rem;
}
.sidebar-nav button:hover {
  background: #21262d;
}
.sidebar-nav button.active {
  background: rgba(88, 166, 255, 0.15);
  color: var(--accent);
  border-left: 2px solid var(--accent);
}
.sidebar-nav button.sidebar-nav__assistant {
  color: #86f9ff;
  border-left: 2px solid transparent;
  background:
    linear-gradient(90deg, rgba(0, 229, 255, 0.12), rgba(255, 45, 149, 0.1)),
    transparent;
}
.sidebar-nav button.sidebar-nav__assistant:hover {
  background:
    linear-gradient(90deg, rgba(0, 229, 255, 0.2), rgba(255, 45, 149, 0.15)),
    transparent;
}
.sidebar-nav button.sidebar-nav__assistant.active {
  color: #00e5ff;
  border-left-color: #00e5ff;
  box-shadow: inset 0 0 0 1px rgba(0, 229, 255, 0.28);
  text-shadow: 0 0 10px rgba(0, 229, 255, 0.45);
}
.nav-icon {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  display: block;
}
.sidebar .icon {
  color: inherit;
}
.sidebar-toggle .icon-hamburger {
  width: 18px;
  height: 18px;
}
.nav-label {
  white-space: nowrap;
  opacity: 0;
  width: 0;
  overflow: hidden;
  transition: opacity 0.2s, width 0.2s;
}
.app-layout.sidebar-open .nav-label {
  opacity: 1;
  width: auto;
}

.page {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  width: 100%;
  min-width: 0;
}
.page-header {
  flex-shrink: 0;
  min-height: 32px;
  padding: 0 0.6rem;
  display: flex;
  align-items: center;
  border-bottom: 1px solid var(--border);
  background: var(--panel);
  font-size: 1.05rem;
  font-weight: 600;
  position: sticky;
  top: 0;
  z-index: 10;
}
.page-header--with-actions {
  justify-content: space-between;
  gap: 0.75rem;
}
.page-header__title {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}
.page-header__action-group {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
  justify-content: flex-end;
  margin-left: auto;
}
.page-header__user {
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--muted);
  max-width: 14rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  padding: 0 0.25rem;
}
.page-header__profile-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.page-header__profile-btn--active {
  color: #00e5ff;
  background:
    linear-gradient(90deg, rgba(0, 229, 255, 0.18), rgba(255, 45, 149, 0.14)),
    transparent;
  text-shadow: 0 0 8px rgba(0, 229, 255, 0.45);
}
.page-header__profile-icon {
  flex-shrink: 0;
  display: block;
}
.page-header__map-float {
  flex-shrink: 0;
  font-size: 0.95rem;
  font-weight: 500;
}
.page-header__icon-btn {
  width: 2.1rem;
  min-width: 2.1rem;
  height: 2.1rem;
  min-height: 2.1rem;
  padding: 0;
  border: none !important;
  border-radius: 0;
  background: transparent !important;
  color: var(--muted);
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.page-header__icon-btn--cyber:hover {
  color: #bff8ff;
  background:
    linear-gradient(90deg, rgba(0, 229, 255, 0.2), rgba(255, 45, 149, 0.16)),
    transparent !important;
}
.page-header__icon-only {
  width: 18px;
  height: 18px;
  display: block;
}
.page-header__icon-label {
  display: none;
}

/* Полоса вкладок «Пользователи» / «Справочники»: см. styles/admin-cyber.css */

.page-content {
  flex: 1;
  min-height: 0;
  overflow: auto;
  padding: 0.6rem;
  width: 100%;
}

.cyber-fallback {
  --cf-bg0: #04050a;
  --cf-bg1: #0b1020;
  --cf-cyan: #00e5ff;
  --cf-magenta: #ff2d95;
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 1rem;
  background:
    radial-gradient(ellipse 120% 80% at 50% -10%, rgba(255, 45, 149, 0.2), transparent 50%),
    radial-gradient(ellipse 70% 50% at 100% 100%, rgba(0, 229, 255, 0.2), transparent 45%),
    linear-gradient(160deg, var(--cf-bg0) 0%, var(--cf-bg1) 100%);
  color: #d9eeff;
  position: relative;
  overflow: hidden;
}
.cyber-fallback__grid {
  position: absolute;
  inset: 0;
  opacity: 0.25;
  pointer-events: none;
  background-image:
    linear-gradient(rgba(0, 229, 255, 0.25) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0, 229, 255, 0.25) 1px, transparent 1px);
  background-size: 40px 40px;
}
.cyber-fallback__card {
  width: min(680px, 100%);
  border: 1px solid rgba(0, 229, 255, 0.45);
  background: rgba(8, 12, 24, 0.92);
  box-shadow: 0 0 48px rgba(0, 229, 255, 0.14), 0 0 80px rgba(255, 45, 149, 0.08);
  padding: 1.2rem;
  position: relative;
}
.cyber-fallback__title {
  font-size: 1.05rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  color: var(--cf-cyan);
}
.cyber-fallback__subtitle {
  margin-top: 0.35rem;
  color: #9ec2de;
}
.cyber-fallback__reason {
  margin-top: 0.9rem;
  padding: 0.65rem 0.75rem;
  border: 1px solid rgba(255, 45, 149, 0.35);
  background: rgba(255, 45, 149, 0.09);
  color: #ffd4eb;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.86rem;
  word-break: break-word;
}
.cyber-fallback__meta {
  margin-top: 0.7rem;
  color: #85f3ff;
  font-size: 0.8rem;
}
.cyber-fallback__actions {
  margin-top: 1rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
}
.cyber-fallback__btn {
  border: 1px solid rgba(0, 229, 255, 0.55);
  color: #c9f7ff;
  background: rgba(0, 229, 255, 0.1);
  padding: 0.5rem 0.75rem;
  cursor: pointer;
}
.cyber-fallback__btn:hover {
  background: rgba(0, 229, 255, 0.2);
}

/* Карта/Мониторинг: рабочая область на всю высоту, без внешнего скролла страницы. */
.page-content.page-content--workspace {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

/*
 * Справочники → Шаблоны виртуальных датчиков: занять «остаток вьюпорта» и
 * держать скролл внутри панелей (как refs-dashboard__devices-layout).
 */
.page:has(.refs-dashboard__virtual-sensors-layout) {
  height: 100vh;
  max-height: 100vh;
  min-height: 0;
  /* Не режем верхние кромки вкладок (они внутри своих панелей скроллятся отдельно). */
  overflow: visible;
  box-sizing: border-box;
}

@supports (height: 100dvh) {
  .page:has(.refs-dashboard__virtual-sensors-layout) {
    height: 100dvh;
    max-height: 100dvh;
  }
}

.page:has(.refs-dashboard__virtual-sensors-layout) .page-content {
  flex: 1 1 0;
  min-height: 0;
}

.page-content:has(.refs-dashboard__virtual-sensors-layout) {
  display: flex;
  flex-direction: column;
  min-height: 0;
  /* Скролл остаётся внутри панелей, но вкладки/бордюры не должны резаться. */
  overflow: visible;
}

.page-content:has(.refs-dashboard__virtual-sensors-layout) > .refs-dashboard {
  flex: 1 1 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: visible;
  gap: 0;
}

.refs-virtual-sensors-card {
  flex: 1 1 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  /* Не режем верхние кромки вкладок/свечения внутри правой панели. */
  overflow: visible;
}

.refs-virtual-sensors-card__chrome {
  flex-shrink: 0;
  margin-bottom: 0.75rem;
}

.refs-dashboard__virtual-sensors-layout {
  flex: 1 1 0;
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(360px, 560px) 1fr;
  gap: 0.75rem;
  align-items: stretch;
  /* Важно: dropdown фильтра протоколов должен перекрывать правую панель. */
  overflow: visible;
}

@media (max-width: 980px) {
  .refs-dashboard__virtual-sensors-layout {
    grid-template-columns: 1fr;
  }
}

.refs-dashboard__virtual-sensors-layout > .map-page--cyber,
.refs-dashboard__virtual-sensors-layout > .card {
  min-height: 0;
}

/* Левая колонка обёрнута в .map-page--cyber — ей тоже нужно растягиваться по высоте ячейки grid */
.refs-dashboard__virtual-sensors-layout > .map-page--cyber {
  height: 100%;
  min-height: 0;
  display: flex;
  flex-direction: column;
  position: relative;
  z-index: 100;
}

/* /refs/virtual-sensors: dropdown протоколов должен быть поверх правой панели */
.refs-dashboard__virtual-sensors-layout .map-searchable-select__dropdown {
  z-index: 6000 !important;
}

.refs-dashboard__virtual-sensors-layout .refs-virtual-sensors-panel {
  position: relative;
  z-index: 10;
}

.refs-virtual-sensors-panel {
  min-height: 0;
  display: flex;
  flex-direction: column;
  /* Не обрезаем dropdown протоколов (SearchableSelect). Скролл только в __scroll. */
  overflow: visible;
  padding: 0.75rem;
}

.refs-dashboard__virtual-sensors-layout .refs-virtual-sensors-panel {
  flex: 1 1 0;
}

.refs-dashboard__virtual-sensors-layout .map-page--cyber > .refs-virtual-sensors-panel {
  flex: 1 1 0;
}

.refs-virtual-sensors-panel__scroll {
  flex: 1 1 0;
  min-height: 0;
  overflow: auto;
}

/* Поднимаем строку тулбара над скролл-контентом и соседней колонкой */
.refs-dashboard__virtual-sensors-layout .map-toolbar {
  position: relative;
  z-index: 50;
}

/*
 * Справочники → Контроллеры: колонки на высоту *видимой* области под шапкой.
 * Без фиксации высоты main.page оставалась min-height:100vh и росла с контентом —
 * flex:1 у page-content не давал «остаток вьюпорта минус заголовок».
 */
.page:has(.refs-dashboard__devices-layout) {
  height: 100vh;
  max-height: 100vh;
  min-height: 0;
  overflow: hidden;
  box-sizing: border-box;
}

@supports (height: 100dvh) {
  .page:has(.refs-dashboard__devices-layout) {
    height: 100dvh;
    max-height: 100dvh;
  }
}

.page:has(.refs-dashboard__devices-layout) .page-content {
  flex: 1 1 0;
  min-height: 0;
}

/* Справочники → Контроллеры: скролл только внутри карточек */
.page-content:has(.refs-dashboard__devices-layout) {
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
}

.page-content:has(.refs-dashboard__devices-layout) > .refs-dashboard {
  flex: 1 1 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  /* отступ от полосы вкладок — у .refs-dashboard__tabs уже есть margin-bottom в admin-cyber.css */
  gap: 0;
}

.refs-dashboard__devices-layout {
  flex: 1 1 0;
  min-height: 0;
  display: grid;
  gap: 1rem;
  align-items: stretch;
  overflow: hidden;
}

.refs-dashboard__devices-layout > .card {
  min-height: 0;
  margin-bottom: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.refs-devices-left-card__chrome {
  flex-shrink: 0;
}

.refs-devices-left-card__scroll {
  flex: 1;
  min-height: 0;
  overflow: auto;
  margin-top: 0.75rem;
}

.refs-devices-left-card__table-wrap {
  overflow-x: auto;
}

.refs-devices-left-card__footer {
  flex-shrink: 0;
}

.refs-device-panel {
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
}

.refs-device-panel__body {
  flex: 1;
  min-height: 0;
  overflow: hidden;
}

/* Справочники → контроллер → нативные теги: аккордеон по категории */
.refs-native-tags-accordion {
  display: flex;
  flex-direction: column;
  margin-top: 12px;
  border: 1px solid var(--border);
  border-radius: 6px;
  overflow: hidden;
  background: var(--panel);
}
.refs-native-tags-accordion__item {
  border-bottom: 1px solid var(--border);
}
.refs-native-tags-accordion__item:last-child {
  border-bottom: none;
}
.refs-native-tags-accordion__summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  padding: 0.5rem 0.65rem;
  cursor: pointer;
  font-weight: 700;
  background: var(--surface);
  list-style: none;
  user-select: none;
}
.refs-native-tags-accordion__summary::-webkit-details-marker {
  display: none;
}
.refs-native-tags-accordion__body {
  padding: 0 0.65rem 0.65rem;
}

/* Мониторинг → боковая панель «Датчики» / «События»: аккордеон и строка загрузки */
.monitoring-sidebar__sensor-search-wrap {
  position: sticky;
  top: 0;
  z-index: 3;
  margin-bottom: 6px;
  background: transparent;
}
.map-page--cyber .monitoring-sidebar__sensor-search {
  -webkit-appearance: none;
  appearance: none;
  background: rgba(0, 229, 255, 0.06) !important;
  border: 1px solid rgba(0, 229, 255, 0.32) !important;
  border-radius: var(--map-control-radius, 4px);
  min-height: 1.85rem !important;
  font-size: 0.78rem;
  line-height: 1.25;
  box-shadow: none;
}
.map-page--cyber .monitoring-sidebar__sensor-search:focus-visible {
  outline: 1px solid rgba(0, 229, 255, 0.55);
  outline-offset: 1px;
}
.map-page--cyber .monitoring-sidebar__sensor-search::-webkit-search-decoration,
.map-page--cyber .monitoring-sidebar__sensor-search::-webkit-search-cancel-button {
  -webkit-appearance: none;
  appearance: none;
  display: none;
}

/* Мониторинг: вкладки «Датчики / События» и справа — полное имя техники, одна строка */
.monitoring-workspace__panel-tabs-row {
  display: flex;
  flex-direction: row;
  align-items: stretch;
  flex-shrink: 0;
  min-width: 0;
  border-bottom: 1px solid var(--border);
  box-sizing: border-box;
}
.monitoring-workspace__panel-tabs-row__tabs.map-sidebar-tabs {
  flex: 0 0 auto;
  flex-wrap: nowrap;
  border-bottom: none;
}

.map-page--cyber .monitoring-workspace__selected-asset-cyber {
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  padding: 0.35rem 0.55rem 0.35rem 0.45rem;
  border-bottom: none;
  background: linear-gradient(105deg, rgba(0, 229, 255, 0.08) 0%, rgba(8, 12, 28, 0.94) 42%, rgba(255, 45, 149, 0.06) 100%);
  overflow: hidden;
}
.map-page--cyber .monitoring-workspace__selected-asset-cyber__text {
  display: block;
  min-width: 0;
  max-width: 100%;
  text-align: right;
  font-family: Orbitron, system-ui, sans-serif;
  font-size: 0.84rem;
  line-height: 1.35;
  letter-spacing: 0.03em;
  color: #dff8ff;
  text-shadow: 0 0 12px rgba(0, 229, 255, 0.18);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.map-page--cyber .monitoring-workspace__selected-asset-cyber__placeholder {
  display: block;
  min-width: 0;
  max-width: 100%;
  text-align: right;
  font-family: 'Share Tech Mono', ui-monospace, monospace;
  font-size: 0.8rem;
  line-height: 1.35;
  letter-spacing: 0.04em;
  color: rgba(157, 214, 255, 0.48);
  font-style: italic;
}

.monitoring-sidebar-accordion {
  margin-top: 0;
  margin-bottom: 10px;
}
.monitoring-sidebar-check-row {
  margin-bottom: 6px;
}
.monitoring-sidebar-check-row__main label {
  width: 100%;
}
.monitoring-sidebar-check-row__progress {
  height: 3px;
  margin-top: 5px;
  border-radius: 2px;
  overflow: hidden;
  background: var(--border);
  position: relative;
}
.monitoring-sidebar-check-row__progress::after {
  content: '';
  position: absolute;
  inset: 0;
  width: 40%;
  border-radius: inherit;
  background: var(--accent);
  animation: monitoring-sidebar-progress-slide 1s ease-in-out infinite;
}
@keyframes monitoring-sidebar-progress-slide {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(350%);
  }
}
.monitoring-sidebar-check-row__hint {
  font-size: 0.72rem;
  color: var(--muted);
  margin-top: 3px;
}

.card {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 0.6rem;
  margin-bottom: 0.6rem;
}

/* Модалка «Создать/Изменить технику»: превью SVG справа от select */
.ref-asset-modal-icon-preview {
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: visible;
  line-height: 0;
}
.ref-asset-modal-icon-preview > span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  max-width: 100%;
  max-height: 100%;
}
.ref-asset-modal-icon-preview svg {
  display: block;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
}

/* Дашборд метрик TEL: иначе глобальный .card (в т.ч. overflow-x на узком экране) режет кнопку-шестерёнку справа */
.card.metric-dashboard-card {
  overflow: visible !important;
  overflow-x: visible !important;
}

/* Таблица на всю высоту карточки (TCP ingest): без этого контент вылезает вниз из‑за !important выше */
.card.metric-dashboard-card.metric-dashboard-card-fill {
  overflow: hidden !important;
}

/* Липкий thead (напр. «На связи»): overflow:hidden на fill-карточке отрезает position:sticky у потомков при скролле страницы */
.card.metric-dashboard-card.metric-dashboard-card-fill.metric-dashboard-card-sticky-page {
  overflow-x: hidden !important;
  overflow-y: visible !important;
  /* При overflow-y:visible скругление углов может "теряться" визуально — клипуем карточку по радиусу. */
  clip-path: inset(0 round 6px);
  /* Более надёжный клип углов при sticky/overflow (Chrome/WebKit). */
  -webkit-mask-image: -webkit-radial-gradient(white, black);
  mask-image: radial-gradient(#fff, #fff);
  /* Фон и рамка рисуются псевдо-элементами (см. ::before/::after), чтобы углы не "квадратились" при overflow-y:visible */
  background: transparent !important;
  isolation: isolate;
}

/* Фикс: при sticky thead + overflow-y:visible иногда "обрубается" правый нижний угол рамки.
   Рисуем рамку отдельным оверлеем по радиусу, независимо от overflow потомков. */
.card.metric-dashboard-card.metric-dashboard-card-fill.metric-dashboard-card-sticky-page {
  position: relative;
}
.card.metric-dashboard-card.metric-dashboard-card-fill.metric-dashboard-card-sticky-page::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 6px;
  pointer-events: none;
  background: var(--panel);
  z-index: 0;
}

/* Телеметрия → На связи → СПИСОК ТЕХНИКИ НА СВЯЗИ: фон как у "Самые давние контакты" (обычный panel). */
.card.metric-dashboard-card.metric-dashboard-card-fill.metric-dashboard-card-sticky-page.tel-online-equipment-list-card::before {
  background: var(--panel) !important;
}
.card.metric-dashboard-card.metric-dashboard-card-fill.metric-dashboard-card-sticky-page::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 6px;
  pointer-events: none;
  /* Дублируем рамку .card */
  box-shadow: inset 0 0 0 1px var(--border);
  z-index: 2;
}

/* Контент карточки — поверх подложки */
.card.metric-dashboard-card.metric-dashboard-card-fill.metric-dashboard-card-sticky-page > * {
  position: relative;
  z-index: 1;
}

/* Футер метрик: фикс. высота, центрирование, без раздувания */
.card.metric-dashboard-card .metric-card-footer {
  height: 32px !important;
  min-height: 32px !important;
  max-height: 32px !important;
  display: flex;
  align-items: center;
  overflow: hidden;
  white-space: nowrap;
}
.card.metric-dashboard-card .metric-card-footer > * {
  margin: 0 !important;
}

/* Шапка: кнопка с шестерёнкой — абсолютное позиционирование, не в flex-ряду (не сжимается сеткой) */
.card.metric-dashboard-card .metric-card-header {
  overflow: visible;
}
.card.metric-dashboard-card button.metric-card-gear {
  overflow: visible !important;
}

/* Футер карточек на вкладке «На связи»: фиксированная высота и вертикальное центрирование */
.card.metric-dashboard-card .metric-card-footer {
  box-sizing: border-box;
}
.map-toolbar.card button.map-toolbar-settings-gear {
  overflow: visible !important;
}

/* Страница «Настройки»: вкладки, закреплённый футер сохранения */
.settings-page {
  /* Выключка по левому краю: без центрирования. */
  max-width: none;
  margin: 0;
  padding-bottom: 0;
  /* Внутренний скролл у main, футер всегда виден. */
  display: flex;
  flex-direction: column;
  height: 100%;
}

/* Вкладки как на «Справочники» (admin-section-tabs/admin-section-tab) */
.settings-tabs {
  position: sticky;
  top: 0;
  z-index: 4;
  background: linear-gradient(to bottom, var(--bg) 70%, transparent);
  padding-top: 0;
  margin-bottom: 0.65rem;
}

/* Подтянуть вкладки к строке заголовка как в «Справочники» */
.settings-page > .settings-tabs {
  margin-top: -0.6rem;
  margin-left: -0.6rem;
  margin-right: -0.6rem;
  width: calc(100% + 1.2rem);
  max-width: none;
  box-sizing: border-box;
}

@media (max-width: 1023px) {
  .settings-page > .settings-tabs {
    margin-top: -1rem;
    margin-left: -1rem;
    margin-right: -1rem;
    width: calc(100% + 2rem);
  }
}

@media (max-width: 767px) {
  .settings-page > .settings-tabs {
    margin-top: -0.75rem;
    margin-left: -0.75rem;
    margin-right: -0.75rem;
    width: calc(100% + 1.5rem);
  }
}

.settings-main {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
}
.settings-page-header {
  margin-bottom: 1rem;
}
.settings-page-title {
  margin: 0 0 0.35rem 0;
  font-size: 1.35rem;
  font-weight: 600;
}
.settings-page-lead {
  margin: 0;
  color: var(--muted);
  font-size: 0.95rem;
  line-height: 1.45;
  max-width: 48rem;
}

/* Карта: вкладки списка (Техника / Геозоны) — в стиле «Справочники», но на UI-переменных карты. */
.map-sidebar-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  padding: 0.35rem 0.5rem 0.5rem;
  margin: 0;
  border-bottom: 1px solid var(--border);
  background: linear-gradient(180deg, rgba(2, 6, 23, 0.35) 0%, rgba(2, 6, 23, 0.08) 100%);
  box-sizing: border-box;
}

/* /refs/virtual-sensors: верхняя кромка вкладок не должна "резаться" */
.refs-dashboard__virtual-sensors-layout .map-sidebar-tabs {
  overflow: visible;
  padding-top: calc(0.35rem + 2px);
}

/* /refs/virtual-sensors: лейблы полей справа — как заголовки таблицы слева */
.refs-dashboard__virtual-sensors-layout .refs-vs-attr-label {
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgba(103, 232, 249, 0.85);
  user-select: none;
}

.map-sidebar-tab {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2rem;
  padding: 0.35rem 0.65rem;
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.62rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  border: 1px solid rgba(34, 211, 238, 0.38);
  border-bottom: none;
  border-radius: 6px 6px 0 0;
  background: rgba(0, 0, 0, 0.35);
  color: var(--muted);
  cursor: pointer;
  transition: color 0.15s, border-color 0.15s, background 0.15s, box-shadow 0.15s;
}

.map-sidebar-tab:hover {
  color: #e0f2fe;
  border-color: rgba(34, 211, 238, 0.6);
  background: rgba(34, 211, 238, 0.08);
}

.map-sidebar-tab.active {
  color: #67e8f9;
  border-color: rgba(34, 211, 238, 0.9);
  background: rgba(34, 211, 238, 0.12);
  box-shadow: 0 0 16px rgba(34, 211, 238, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.06);
  margin-bottom: -1px;
  padding-bottom: calc(0.35rem + 1px);
}

/* Мониторинг: скрытый ряд для измерения max ширины подписей вкладок графика */
.monitoring-workspace__chart-tab-measure-host {
  position: absolute;
  left: -9999px;
  top: 0;
  display: flex;
  flex-direction: row;
  gap: 2px;
  pointer-events: none;
  visibility: hidden;
  white-space: nowrap;
}

/* Мониторинг: «График / Данные датчиков… / Данные событий» — одинаковая ширина, текст в одну строку */
.monitoring-workspace__chart-tabs {
  display: flex;
  flex-wrap: nowrap;
  gap: 2px;
  overflow-x: auto;
  scrollbar-width: thin;
}

.monitoring-workspace__chart-tabs .map-sidebar-tab {
  box-sizing: border-box;
  white-space: nowrap;
  justify-content: center;
  text-align: center;
}

.monitoring-workspace__chart-tabs[data-chart-tab-equal="1"] .map-sidebar-tab {
  flex: 0 0 var(--monitoring-chart-tab-equal-px);
  width: var(--monitoring-chart-tab-equal-px);
  min-width: var(--monitoring-chart-tab-equal-px);
}

/* Карта: подписи/подсказки геозон */
.assets-map-geozone-tip-root--permanent.leaflet-tooltip {
  background: transparent;
  border: none;
  box-shadow: none;
  padding: 0;
  border-radius: 0;
  pointer-events: none;
}

.assets-map-geozone-tip-root--permanent.leaflet-tooltip:before {
  display: none;
}

.assets-map-geozone-tip-root--permanent .assets-map-geozone-tip,
.assets-map-geozone-tip-root--permanent .assets-map-geozone-tip * {
  color: var(--geozone-center-label-color, rgba(120, 134, 154, 0.92)) !important;
  font-size: var(--geozone-center-label-font-size, 12px) !important;
}

.assets-map-geozone-tip-root--permanent .assets-map-geozone-tip__title {
  font-weight: 500;
}

.assets-map-geozone-tip-root--hover.leaflet-popup .leaflet-popup-content-wrapper {
  background: rgba(2, 6, 23, 0.9);
  border: 1px solid rgba(148, 163, 184, 0.25);
  box-shadow: 0 14px 30px rgba(0, 0, 0, 0.35);
}

.assets-map-geozone-tip-root--hover.leaflet-popup .leaflet-popup-tip {
  background: rgba(2, 6, 23, 0.9);
}
.settings-layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
  align-items: start;
  flex: 1 1 auto;
  min-height: 0;
}
@media (min-width: 901px) {
  .settings-layout {
    grid-template-columns: 220px minmax(0, 1fr);
    gap: 1.25rem 1.5rem;
  }
}
.settings-nav {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  gap: 0.4rem;
  overflow-x: auto;
  overflow-y: hidden;
  padding: 0.25rem 0 0.6rem;
  scrollbar-width: thin;
  -webkit-overflow-scrolling: touch;
  border-bottom: 1px solid var(--border);
  position: sticky;
  top: 0;
  z-index: 3;
  background: linear-gradient(to bottom, var(--bg) 70%, transparent);
}
@media (min-width: 901px) {
  .settings-nav {
    flex-direction: column;
    flex-wrap: nowrap;
    overflow-x: visible;
    overflow-y: auto;
    border-bottom: none;
    padding: 0.65rem 0.5rem;
    position: sticky;
    top: 0.5rem;
    align-self: start;
    max-height: calc(100vh - 7rem);
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--panel);
  }
}
.settings-nav-link {
  display: block;
  flex: 0 0 auto;
  padding: 0.4rem 0.65rem;
  border-radius: 6px;
  color: var(--text, inherit);
  text-decoration: none;
  font-size: 0.9rem;
  line-height: 1.25;
  border: 1px solid transparent;
  white-space: nowrap;
  text-align: left;
  background: transparent;
}
@media (min-width: 901px) {
  .settings-nav-link {
    white-space: normal;
  }
}
.settings-nav-link:hover {
  background: rgba(255, 255, 255, 0.06);
  border-color: var(--border);
}
.settings-nav-link.settings-nav-link--active {
  background:
    linear-gradient(90deg, rgba(0, 229, 255, 0.18), rgba(255, 45, 149, 0.14)),
    rgba(255, 255, 255, 0.02);
  border-color: rgba(0, 229, 255, 0.45);
  color: #bff8ff;
  box-shadow: inset 0 0 0 1px rgba(0, 229, 255, 0.12);
  text-shadow: 0 0 10px rgba(0, 229, 255, 0.25);
}
.settings-nav-link:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}
.settings-nav-link__short {
  display: inline;
}
.settings-nav-link__full {
  display: none;
}
@media (min-width: 901px) {
  .settings-nav-link__short {
    display: none;
  }
  .settings-nav-link__full {
    display: inline;
  }
}
.settings-main {
  min-width: 0;
  overflow: auto;
  min-height: 0;
}
.settings-section {
  margin-bottom: 0.75rem;
}
.settings-section:last-child {
  margin-bottom: 0;
}
.settings-section-title {
  margin: 0 0 0.5rem 0;
  font-size: 1.1rem;
  font-weight: 600;
}
.settings-section-intro {
  margin: 0 0 0.65rem 0;
  color: var(--muted);
  font-size: 0.9rem;
  line-height: 1.45;
}
.settings-section-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.5rem 1rem;
  margin-top: 0.35rem;
  align-items: start;
}
@media (min-width: 900px) {
  .settings-section-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
/* Одна колонка: длинные подсказки в детекторах событий читаются сверху вниз */
.settings-section-grid.settings-section-grid--single-col,
.settings-section-grid--single-col {
  grid-template-columns: 1fr;
  max-width: 42rem;
}

/* Экран версии детектора событий: четыре явные вертикальные секции (не сливаются с фоном .card) */
.detector-version-edit-root.card {
  padding: 0.85rem 1rem 1.15rem;
}
.detector-version-edit-stack {
  display: flex;
  flex-direction: column;
  gap: 1.75rem;
  max-width: 56rem;
}
.detector-version-edit-stack--after-back {
  margin-top: 0.85rem;
}
/* Две колонки: подпись | значение; узкие строки */
.detector-version-meta-table {
  table-layout: fixed;
}
.detector-version-meta-table th[scope='row'] {
  width: 11.5rem;
  max-width: 38%;
  padding: 0.28rem 0.65rem 0.28rem 0;
  font-weight: 500;
  font-size: 0.8rem;
  color: var(--muted);
  text-align: left;
  vertical-align: top;
  border-bottom: 1px solid var(--border);
}
.detector-version-meta-table td {
  padding: 0.28rem 0 0.28rem 0.5rem;
  vertical-align: top;
  border-bottom: 1px solid var(--border);
  word-break: break-word;
}
.detector-version-meta-table tr:last-child th,
.detector-version-meta-table tr:last-child td {
  border-bottom: none;
}

/* Секция «Параметры» версии детектора: 4 колонки */
.detector-version-params-table {
  min-width: 46rem;
  table-layout: fixed;
}
.detector-version-params-table thead th {
  text-align: left;
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--muted);
  padding: 0.5rem 0.55rem;
  vertical-align: bottom;
  border-bottom: 1px solid var(--border);
}
.detector-version-params-table tbody td {
  padding: 0.45rem 0.55rem;
  vertical-align: top;
  border-top: 1px solid var(--border);
}
.detector-version-params-table tbody tr:first-child td {
  border-top: none;
}
.detector-version-params-table__name {
  width: 18%;
  min-width: 10rem;
}
.detector-version-params-table__hint {
  width: 44%;
  min-width: 12rem;
  font-size: 0.8125rem;
  line-height: 1.38;
  word-break: break-word;
}
.detector-version-params-table__default {
  width: 14%;
  min-width: 6rem;
  font-variant-numeric: tabular-nums;
  font-family: ui-monospace, monospace;
  font-size: 0.8125rem;
  color: var(--muted);
}
.detector-version-params-table__value {
  width: 24%;
  min-width: 7rem;
}
.detector-version-params-table__number-input {
  width: 6.75rem;
  max-width: 100%;
}

/* Форма «Новое назначение» над таблицей назначений версии детектора */
.detector-assignments-add-panel {
  border-radius: 10px;
  border: 1px solid var(--border);
  background: var(--panel);
  padding: 0.85rem 1rem 1rem;
  box-shadow: 0 1px 8px rgba(15, 23, 42, 0.05);
}
.detector-assignments-add-panel__head {
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--muted);
  margin-bottom: 0.65rem;
}
.detector-assignments-add-panel__row {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.75rem 1.1rem;
}
.detector-assignments-field {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.28rem;
  min-width: 0;
}
.detector-assignments-field__lbl {
  font-size: 0.72rem;
  font-weight: 500;
  color: var(--muted);
  line-height: 1.2;
}
.detector-assignments-field input,
.detector-assignments-field select {
  font-size: 0.875rem;
  padding: 0.35rem 0.45rem;
  border-radius: 6px;
  border: 1px solid var(--border);
  background: var(--panel-2);
  color: var(--fg);
  min-height: 2.1rem;
}
.detector-assignments-field--scope select {
  min-width: 12.5rem;
  max-width: 100%;
}
.detector-assignments-field--id input {
  width: 6.75rem;
  max-width: 100%;
}
.detector-assignments-field--prio input {
  width: 5.25rem;
  max-width: 100%;
}
.detector-assignments-add-panel__submit {
  flex: 0 0 auto;
  margin-left: auto;
  padding-bottom: 1px;
}
.detector-assignments-add-panel__submit .primary {
  white-space: nowrap;
}
@media (max-width: 640px) {
  .detector-assignments-add-panel__submit {
    margin-left: 0;
    width: 100%;
  }
  .detector-assignments-add-panel__submit .primary {
    width: 100%;
  }
}
.detector-version-edit-section {
  border-radius: 10px;
  border: 1px solid var(--border);
  border-left: 4px solid var(--link-color, #2563eb);
  background: var(--panel-2);
  box-shadow: 0 2px 12px rgba(15, 23, 42, 0.08);
  padding: 1rem 1.2rem 1.2rem;
}
.detector-version-edit-section__heading {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  margin: 0 0 0.85rem 0;
  padding-bottom: 0.55rem;
  border-bottom: 1px solid var(--border);
  font-size: 1rem;
  font-weight: 600;
  color: var(--fg);
  line-height: 1.3;
}
.detector-version-edit-section__index {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  min-width: 1.85rem;
  height: 1.85rem;
  padding: 0 0.35rem;
  border-radius: 8px;
  background: color-mix(in srgb, var(--link-color, #2563eb) 16%, transparent);
  color: var(--link-color, #2563eb);
  font-size: 0.82rem;
  font-weight: 700;
  line-height: 1;
}
@supports not (color: color-mix(in srgb, red, blue)) {
  .detector-version-edit-section__index {
    background: rgba(37, 99, 235, 0.14);
  }
}
.settings-section-grid .form-row {
  flex-direction: column;
  align-items: flex-start;
  margin-bottom: 0;
  gap: 0.25rem;
}
.settings-section-grid .form-row label {
  min-width: 0;
}
.settings-form-field--full {
  grid-column: 1 / -1;
}

/* Настройки: компактные числовые поля (не на всю ширину) */
.settings-section-grid input[type="number"] {
  width: 9rem;
  max-width: 100%;
}
.settings-section-grid .settings-form-field--full input[type="number"] {
  width: min(28rem, 100%);
}
.settings-field-hint {
  display: block;
  color: var(--muted);
  font-size: 0.85rem;
  line-height: 1.35;
}
.settings-retention-checks {
  display: grid;
  gap: 0.5rem;
  margin-top: 0.35rem;
}
.settings-retention-zone {
  margin-top: 1.35rem;
  padding-top: 0.85rem;
  border-top: 1px solid var(--border);
}
.settings-retention-zone-title {
  font-size: 1.05rem;
  margin: 0 0 0.55rem;
  color: var(--text);
  font-weight: 600;
}
.settings-retention-zone-error {
  color: var(--danger, #f87171);
  font-size: 0.9rem;
  margin: 0 0 0.5rem;
}
.settings-retention-policy-list {
  margin-top: 0.35rem;
}
.settings-retention-policy-item {
  display: flex;
  gap: 0.65rem;
  align-items: flex-start;
  padding: 0.5rem 0;
  border-bottom: 1px solid var(--border);
  cursor: pointer;
}
.settings-retention-policy-item:last-child {
  border-bottom: none;
}
.settings-retention-policy-body {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  min-width: 0;
}
.settings-retention-policy-title {
  font-weight: 600;
  color: var(--text);
}
.settings-retention-policy-meta {
  font-size: 0.82rem;
  color: var(--muted);
}
.settings-retention-policy-rule {
  font-size: 0.88rem;
  color: var(--text);
  line-height: 1.4;
}
.settings-table-wrap {
  margin-top: 0.9rem;
  overflow-x: auto;
  width: 100%;
}
.settings-sticky-actions {
  position: sticky;
  bottom: 0;
  z-index: 4;
  display: flex;
  align-items: center;
  gap: 0.75rem 1rem;
  flex-wrap: wrap;
  margin-top: 0.75rem;
  padding: 0.65rem 0.85rem;
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 6px;
  box-shadow: 0 -6px 20px rgba(0, 0, 0, 0.2);
}
.settings-sticky-hint {
  color: var(--muted);
  font-size: 0.85rem;
  flex: 1;
  min-width: 8rem;
}

/* Карта техники: список по моделям (Radix Accordion) */
.map-asset-accordion {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.map-asset-accordion-item {
  border-bottom: 1px solid var(--border);
}
.map-asset-accordion-item:last-child {
  border-bottom: none;
}
.map-asset-accordion-header {
  margin: 0;
}
.map-asset-accordion-trigger {
  padding: 0.22rem 0.45rem !important;
  min-height: 1.75rem;
  box-sizing: border-box;
}
.map-asset-accordion-trigger--with-lucide-chevron {
  display: flex;
  align-items: center;
  gap: 0.35rem;
}
.map-asset-accordion-item > summary.map-asset-accordion-trigger::-webkit-details-marker {
  display: none;
}
.map-asset-accordion-item > summary.map-asset-accordion-trigger::marker {
  content: '';
  display: none;
}
.map-asset-accordion__summary-chevron {
  display: inline-flex;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  width: 13px;
  height: 13px;
}
.map-asset-accordion-item[open] > summary .map-asset-accordion__summary-chev-closed {
  display: none !important;
}
.map-asset-accordion-item:not([open]) > summary .map-asset-accordion__summary-chev-open {
  display: none !important;
}
.map-asset-accordion-content {
  padding: 0 0.2rem 0.22rem 0.45rem;
  overflow: hidden;
}
.map-asset-accordion-content[data-state="open"] {
  padding-top: 0.06rem;
}

/* Строка техники: компактнее глобального `button { min-height: 2.4rem }` */
.map-asset-accordion__asset-row {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  width: 100%;
  text-align: left;
  padding: 0.14rem 0.28rem 0.14rem 0.4rem;
  min-height: 0 !important;
  max-height: none !important;
  height: auto !important;
  border: none !important;
  border-radius: 0.2rem;
  background: transparent;
  cursor: pointer;
  font-size: 0.82rem;
  line-height: 1.22;
  box-sizing: border-box;
}
.map-asset-accordion__asset-row--selected {
  background: rgba(37, 99, 235, 0.15);
}
.map-asset-accordion__status-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  flex-shrink: 0;
}
.map-asset-accordion-trigger[data-state="open"] .chevron-closed {
  display: none;
}
.map-asset-accordion-trigger[data-state="open"] .chevron-open {
  display: inline;
}
.map-asset-accordion-trigger[data-state="closed"] .chevron-open {
  display: none;
}
.map-asset-accordion-trigger[data-state="closed"] .chevron-closed {
  display: inline;
}
.map-asset-accordion-content[data-state="open"] {
  animation: map-asset-accordion-down 0.2s ease-out;
}
.map-asset-accordion-content[data-state="closed"] {
  animation: map-asset-accordion-up 0.2s ease-out;
}
@keyframes map-asset-accordion-down {
  from {
    height: 0;
  }
  to {
    height: var(--radix-accordion-content-height);
  }
}
@keyframes map-asset-accordion-up {
  from {
    height: var(--radix-accordion-content-height);
  }
  to {
    height: 0;
  }
}

.form-row {
  display: flex;
  gap: 0.4rem;
  align-items: center;
  margin-bottom: 0.4rem;
}
.form-row label {
  min-width: 180px;
  color: var(--muted);
}

.data-table {
  width: 100%;
  border-collapse: collapse;
  background: transparent;
}
.data-table th,
.data-table td {
  padding: 0.2rem 0.4rem;
  border-bottom: 1px solid var(--border);
  text-align: left;
  background: transparent;
}
.data-table th {
  color: var(--muted);
  font-weight: 600;
  font-size: 1.0rem;
}
.data-table td {
  font-size: 0.95rem;
}
.data-table button {
  margin-right: 0.3rem;
}
.data-table tbody tr.selected td,
.data-table tbody tr.focused td {
  background: rgba(255, 255, 255, 0.06);
}
.data-table tbody tr:hover td {
  background: rgba(255, 255, 255, 0.06);
}

/* Таблица «На связи»: фиксированные ширины столбцов, высота строки как в «Активные TCP‑подключения» */
.data-table-online {
  table-layout: fixed;
  width: 100%;
  min-width: 56.75rem;
  background: transparent;
}
.data-table-online tbody td {
  padding: 0.2rem 0.4rem;
  line-height: 1.2;
  vertical-align: middle;
}
.data-table-online th:nth-child(1),
.data-table-online td:nth-child(1) { width: 2.75rem; min-width: 2.75rem; max-width: 2.75rem; }  /* Статус */
.data-table-online th:nth-child(2),
.data-table-online td:nth-child(2) { width: 14rem; min-width: 14rem; max-width: 14rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }  /* Техника */
.data-table-online th:nth-child(3),
.data-table-online td:nth-child(3) { width: 14rem; min-width: 14rem; max-width: 14rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }  /* Контроллер */
.data-table-online th:nth-child(4),
.data-table-online td:nth-child(4) { width: 10rem; min-width: 10rem; max-width: 10rem; white-space: nowrap; }  /* Последний контакт */
.data-table-online th:nth-child(5),
.data-table-online td:nth-child(5) { width: 6rem; min-width: 6rem; max-width: 6rem; white-space: nowrap; }  /* км/ч */
.data-table-online th:nth-child(6),
.data-table-online td:nth-child(6) { width: 6rem; min-width: 6rem; max-width: 6rem; white-space: nowrap; }  /* На связи */
.data-table-online th:nth-child(7),
.data-table-online td:nth-child(7) { width: 8.5rem; min-width: 8.5rem; max-width: 8.5rem; text-align: center; vertical-align: middle; padding-left: 0.15rem; padding-right: 0.15rem; }
.data-table-online__map-th-icon {
  display: inline-block;
  vertical-align: middle;
  color: var(--muted);
}
.data-table-online__map-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0;
  padding: 0.05rem 0.2rem !important;
  min-height: 1.5rem !important;
  margin-right: 0 !important;
  font-size: 0.72rem;
  font-weight: 600;
  line-height: 1;
  white-space: nowrap;
}
.data-table-online__actions {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
}
.data-table-online__map-icon {
  flex-shrink: 0;
}
.data-table-online__speed-cell {
  display: inline-flex;
  align-items: center;
  gap: 0.32rem;
}
.data-table-online__park-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.05rem;
  height: 1.05rem;
  padding: 0 0.2rem;
  border-radius: 0.2rem;
  border: 1px solid #ffffff;
  background: #1f5fbf;
  color: #ffffff;
  font-size: 0.68rem;
  line-height: 1;
  font-weight: 700;
}
.data-table-online thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  /* Как в refs/assets: заголовок без отдельной заливки, виден фон карточки */
  background: transparent;
  box-shadow: 0 1px 0 var(--border);
}

/* Шапка над виртуализированным телом: слой выше строк таблицы при горизонтальном скролле */
.data-table-online-wrap-head {
  position: relative;
  z-index: 2;
}

/* TCP ingest: фиксированные ширины и единая сетка для header + виртуализированных строк (сумма col в TelDashboard TcpIngestTableColGroup) */
.data-table-tcp-ingest {
  table-layout: fixed;
  width: 100%;
  min-width: 121.5rem;
  /* Для sticky-left у ячеек в Chromium/WebKit надёжнее separate вместо collapse. */
  border-collapse: separate;
  border-spacing: 0;
}
.data-table-tcp-ingest thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: var(--panel);
  box-shadow: 0 1px 0 var(--border);
}
.data-table-tcp-ingest th,
.data-table-tcp-ingest td {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  vertical-align: middle;
}
.data-table-tcp-ingest td:nth-child(6),
.data-table-tcp-ingest td:nth-child(9),
.data-table-tcp-ingest td:nth-child(10),
.data-table-tcp-ingest td:nth-child(11),
.data-table-tcp-ingest td:nth-child(12),
.data-table-tcp-ingest td:nth-child(13) {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

/* TCP ingest: frozen-колонки слева (Клиент, Порт, Протокол, IMEI). */
.data-table-tcp-ingest.tcp-ingest-freeze-on thead th.tcp-ingest-col-freeze-1,
.data-table-tcp-ingest.tcp-ingest-freeze-on thead th.tcp-ingest-col-freeze-2,
.data-table-tcp-ingest.tcp-ingest-freeze-on thead th.tcp-ingest-col-freeze-3,
.data-table-tcp-ingest.tcp-ingest-freeze-on thead th.tcp-ingest-col-freeze-4 {
  position: sticky;
  background: var(--panel);
  z-index: 4;
}
.data-table-tcp-ingest.tcp-ingest-freeze-on tbody td.tcp-ingest-col-freeze-1,
.data-table-tcp-ingest.tcp-ingest-freeze-on tbody td.tcp-ingest-col-freeze-2,
.data-table-tcp-ingest.tcp-ingest-freeze-on tbody td.tcp-ingest-col-freeze-3,
.data-table-tcp-ingest.tcp-ingest-freeze-on tbody td.tcp-ingest-col-freeze-4 {
  position: sticky;
  background: var(--panel);
  z-index: 6;
}
.data-table-tcp-ingest.tcp-ingest-freeze-on .tcp-ingest-col-freeze-1 { left: 0; }
.data-table-tcp-ingest.tcp-ingest-freeze-on .tcp-ingest-col-freeze-2 { left: 10rem; }
.data-table-tcp-ingest.tcp-ingest-freeze-on .tcp-ingest-col-freeze-3 { left: 16.5rem; }
.data-table-tcp-ingest.tcp-ingest-freeze-on .tcp-ingest-col-freeze-4 {
  left: 23.5rem;
  box-shadow: 1px 0 0 var(--border);
}
.data-table-tcp-ingest.tcp-ingest-freeze-on thead th.tcp-ingest-col-freeze-4 { z-index: 5; }
.data-table-tcp-ingest.tcp-ingest-freeze-on tbody td.tcp-ingest-col-freeze-4 { z-index: 7; }
.data-table-tcp-ingest.tcp-ingest-freeze-on.tcp-ingest-frozen-shadow-on .tcp-ingest-col-freeze-4 {
  box-shadow: 1px 0 0 var(--border), 8px 0 10px -10px rgba(0, 0, 0, 0.6);
}

.tcp-ingest-freeze-toggle {
  position: sticky;
  top: 4px;
  right: 6px;
  margin-left: auto;
  width: 24px;
  height: 24px;
  min-height: 24px;
  padding: 0 !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  z-index: 10;
}

/* Freeze-mode: hide scrollbars on right side (keep scroll) and allow drag-to-scroll UX. */
.tcp-ingest-freeze-scroll {
  scrollbar-width: none; /* Firefox */
  -ms-overflow-style: none; /* old Edge */
}
.tcp-ingest-freeze-scroll::-webkit-scrollbar {
  width: 0;
  height: 0;
  display: none; /* Chromium/WebKit */
}
.tcp-ingest-freeze-scroll.tcp-ingest-freeze-scroll--dragging {
  user-select: none;
}

/* TCP ingest: "В УП" values must be right-aligned regardless of optional columns. */
.data-table-tcp-ingest td.tcp-ingest-cell-up {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.data-table-tcp-ingest td.tcp-ingest-cell-rawdb {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

/* Freeze-mode layout: separate left/right tables must look seamless. */
.data-table-tcp-ingest {
  background: var(--panel);
}

/* Телеметрия → На связи: строка "Организации + Поиск" должна иметь тот же кибер-контур, что контролы карты. */
.tel-online-controls .tel-online-controls__control {
  box-sizing: border-box;
  min-height: 28px;
  height: 28px;
  line-height: 26px;
  padding: 0 0.5rem;
  border-radius: 5px;
  border: 1px solid rgba(0, 229, 255, 0.44);
  background: rgba(0, 229, 255, 0.07);
  color: inherit;
  font-size: 0.9rem;
  font-family: 'Share Tech Mono', ui-monospace, 'Cascadia Code', 'Consolas', monospace;
  outline: none;
}
.tel-online-controls .tel-online-controls__control:hover:not(:disabled) {
  background: rgba(0, 229, 255, 0.12);
  border-color: rgba(0, 229, 255, 0.72);
}
.tel-online-controls .tel-online-controls__control:focus-visible {
  border-color: rgba(0, 229, 255, 0.82);
  box-shadow: 0 0 0 2px rgba(0, 229, 255, 0.14);
}

/* Шаблоны: неподвижный заголовок, скролл только у tbody */
.data-table-templates thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: var(--panel);
  box-shadow: 0 1px 0 var(--border);
}

/* Таблица рейсов (Симуляция «Найденные рейсы» и История «История рейсов»): фиксированные ширины, Шаблон не наезжает */
.data-table-trips {
  width: 100%;
  table-layout: fixed;
  min-width: 51rem; /* 10+10+8+6.5+6.5+10 — при узком экране горизонтальный скролл вместо сжатия */
}
.data-table-trips th:nth-child(1),
.data-table-trips td:nth-child(1) { width: 10rem; min-width: 10rem; white-space: nowrap; }  /* Начало */
.data-table-trips th:nth-child(2),
.data-table-trips td:nth-child(2) { width: 10rem; min-width: 10rem; white-space: nowrap; }  /* Конец */
.data-table-trips th:nth-child(3),
.data-table-trips td:nth-child(3) { width: 8rem; min-width: 8rem; white-space: nowrap; }    /* Интервал */
.data-table-trips th:nth-child(4),
.data-table-trips td:nth-child(4),
.data-table-trips th:nth-child(5),
.data-table-trips td:nth-child(5) { width: 6.5rem; min-width: 6.5rem; white-space: nowrap; } /* Порог, % и Совпадение, % — одинаковая ширина */
.data-table-trips th.col-template,
.data-table-trips td.col-template,
.data-table-trips th:nth-child(6),
.data-table-trips td:nth-child(6) {
  min-width: 12rem;
  width: auto; /* свободный столбец: забирает оставшееся место (История рейсов и Найденные рейсы) */
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.data-table-trips td.col-template .cell-clip,
.data-table-trips td:nth-child(6) .cell-clip {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
}
.data-table-trips th:nth-child(7),
.data-table-trips td:nth-child(7) { width: 8rem; min-width: 8rem; white-space: nowrap; }   /* Действия (только История) */

/* Страница «Лог» */
.data-table-logs th:nth-child(1),
.data-table-logs td:nth-child(1) { width: 11rem; white-space: nowrap; }
.data-table-logs th:nth-child(2),
.data-table-logs td:nth-child(2) { width: 7rem; white-space: nowrap; }
.data-table-logs th:nth-child(3),
.data-table-logs td:nth-child(3) { width: 6rem; white-space: nowrap; }
.log-level { font-size: 0.85rem; }
.log-level-info { color: var(--muted); }
.log-level-warn { color: #d4a72c; }
.log-level-error { color: var(--danger); }

/* История → «История рейсов»: фиксированные ширины столбцов в rem, как на Симуляции (без наезжания заголовков) */
.history-trips-table-wrap {
  overflow-x: auto;
  overflow-y: auto;
  max-height: 320px;
  min-height: 300px; /* минимум ~5 строк + заголовок */
}
.data-table-trips-history {
  width: 100%;
  table-layout: fixed;
  min-width: 68rem;
}
.data-table-trips-history thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: var(--panel);
  box-shadow: 0 1px 0 var(--border);
}
.data-table-trips-history th,
.data-table-trips-history td {
  padding: 0.35rem 0.5rem;
  vertical-align: middle;
}
.data-table-trips-history th:nth-child(1),
.data-table-trips-history td:nth-child(1) { width: 9.5rem; min-width: 9.5rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.data-table-trips-history th:nth-child(2),
.data-table-trips-history td:nth-child(2) { width: 9.5rem; min-width: 9.5rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.data-table-trips-history th:nth-child(3),
.data-table-trips-history td:nth-child(3) { width: 7.5rem; min-width: 7.5rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.data-table-trips-history th:nth-child(4),
.data-table-trips-history td:nth-child(4) { width: 7rem; min-width: 7rem; white-space: nowrap; }
.data-table-trips-history th:nth-child(5),
.data-table-trips-history td:nth-child(5) { width: 8rem; min-width: 8rem; white-space: nowrap; }
.data-table-trips-history th:nth-child(6),
.data-table-trips-history td:nth-child(6) { width: 6rem; min-width: 6rem; white-space: nowrap; }
.data-table-trips-history th:nth-child(7),
.data-table-trips-history td:nth-child(7) { width: 8rem; min-width: 8rem; white-space: nowrap; }
.data-table-trips-history th:nth-child(8),
.data-table-trips-history td:nth-child(8) {
  min-width: 12rem;
  width: auto;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.data-table-trips-history td:nth-child(8) .cell-clip {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
}
.data-table-trips-history th:nth-child(9),
.data-table-trips-history td:nth-child(9) { width: 8.5rem; min-width: 8.5rem; white-space: nowrap; }
.data-table-trips-history tbody tr.selected td {
  background: rgba(59, 130, 246, 0.15);
}

/* Симуляция → «Найденные рейсы»: столбец «Шаблон» максимально широкий, остальные фиксированные */
.data-table-trips-found {
  min-width: 55rem; /* чтобы «Шаблон» не схлопывался: при узком экране будет горизонтальный скролл */
}
.data-table-trips-found thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: var(--panel);
  box-shadow: 0 1px 0 var(--border);
}
.data-table-trips-found tbody tr.selected td {
  background: rgba(59, 130, 246, 0.15);
}

/* Симуляция → таблица фаз справа: цветная полоса по высоте строки */
.operational-phases-table {
  width: 100%;
  table-layout: fixed;
}
.operational-phases-table .phase-cell-with-bar {
  overflow: visible;
  vertical-align: middle;
}
.operational-phases-table .phase-row-bar {
  display: block;
}

/* Симуляция → «Фазы рейса»: тонкий индикатор загрузки под заголовком */
.phases-loading-bar {
  width: 100%;
  height: 100%;
  min-height: 3px;
  background: linear-gradient(
    90deg,
    transparent 0%,
    transparent 35%,
    rgba(88, 166, 255, 0.9) 50%,
    transparent 65%,
    transparent 100%
  );
  background-size: 200% 100%;
  animation: phases-loading-shimmer 1.4s ease-in-out infinite;
}
@keyframes phases-loading-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

.operational-phases-table th:nth-child(1),
.operational-phases-table td:nth-child(1) { width: 10rem; }
.operational-phases-table th:nth-child(2),
.operational-phases-table td:nth-child(2),
.operational-phases-table th:nth-child(3),
.operational-phases-table td:nth-child(3) { width: 9rem; white-space: nowrap; }
.operational-phases-table th:nth-child(4),
.operational-phases-table td:nth-child(4) { width: 6rem; white-space: nowrap; }
.operational-phases-table th:nth-child(5),
.operational-phases-table td:nth-child(5),
.operational-phases-table th:nth-child(6),
.operational-phases-table td:nth-child(6) { width: 6.5rem; white-space: nowrap; }
.data-table-trips-found th:nth-child(1),
.data-table-trips-found td:nth-child(1) { width: 9.5rem; min-width: 9.5rem; white-space: nowrap; }  /* Начало */
.data-table-trips-found th:nth-child(2),
.data-table-trips-found td:nth-child(2) { width: 9.5rem; min-width: 9.5rem; white-space: nowrap; }  /* Конец */
.data-table-trips-found th:nth-child(3),
.data-table-trips-found td:nth-child(3) { width: 7.5rem; min-width: 7.5rem; white-space: nowrap; }  /* Интервал */
.data-table-trips-found th:nth-child(4),
.data-table-trips-found td:nth-child(4) { width: 7rem; min-width: 7rem; white-space: nowrap; }      /* Порог, % */
.data-table-trips-found th:nth-child(5),
.data-table-trips-found td:nth-child(5) { width: 8rem; min-width: 8rem; white-space: nowrap; }      /* Совпадение, % */
.data-table-trips-found th.col-template,
.data-table-trips-found td.col-template,
.data-table-trips-found th:nth-child(6),
.data-table-trips-found td:nth-child(6) {
  width: auto;
  min-width: 12rem;
}
.data-table-trips-found th:nth-child(7),
.data-table-trips-found td:nth-child(7) { width: 8rem; min-width: 8rem; white-space: nowrap; }  /* Ср. вес (трансп.) */

.modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.6);
  display: flex;
  align-items: center;
  justify-content: center;
  /* Leaflet controls/popups use z-index up to ~1000+; keep modals above the map. */
  z-index: 5000;
}
.modal {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 1.5rem;
  max-width: 90vw;
  max-height: 90vh;
  overflow: auto;
}

/*
 * Слои глобальных оверлеев (см. также порталы в Notifications / TelInAppNotificationsBell):
 * toasts — самый верхний слой; панель TEL-уведомлений ниже тостов, но выше плавающих окон (~10040) и модалок (~10100).
 */
.toast-container {
  position: fixed;
  top: 1rem;
  right: 1rem;
  z-index: 20000;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  max-width: 24rem;
}
.toast {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.75rem 1rem;
  border-radius: 8px;
  border: 1px solid var(--border);
  background: var(--panel);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
  animation: toast-in 0.2s ease-out;
}
@keyframes toast-in {
  from { opacity: 0; transform: translateX(1rem); }
  to { opacity: 1; transform: translateX(0); }
}
.toast-message { flex: 1; font-size: 0.9rem; }
.toast-success { border-left: 4px solid var(--success); }
.toast-error { border-left: 4px solid var(--danger); }
.toast-info { border-left: 4px solid var(--accent); }
.toast-dismiss {
  padding: 0.25rem;
  min-width: 1.5rem;
  font-size: 1.25rem;
  line-height: 1;
  color: var(--muted);
  background: transparent;
  border: none;
}
.toast-dismiss:hover { color: inherit; }

/* Documentation page: Markdown content */
.doc-content h1 { font-size: 1.75rem; margin: 0 0 1rem; padding-bottom: 0.5rem; border-bottom: 1px solid var(--border); }
.doc-content h2 { font-size: 1.35rem; margin: 1.5rem 0 0.75rem; }
.doc-content h3 { font-size: 1.15rem; margin: 1.25rem 0 0.5rem; }
.doc-content h4, .doc-content h5, .doc-content h6 { font-size: 1rem; margin: 1rem 0 0.5rem; }
.doc-content p { margin: 0 0 0.75rem; line-height: 1.6; }
.doc-content ul, .doc-content ol { margin: 0 0 0.75rem; padding-left: 1.5rem; }
.doc-content li { margin: 0.25rem 0; line-height: 1.5; }
.doc-content code { background: rgba(110, 118, 129, 0.2); padding: 0.15rem 0.4rem; border-radius: 4px; font-size: 0.9em; }
.doc-content pre { background: rgba(110, 118, 129, 0.15); padding: 1rem; border-radius: 6px; overflow-x: auto; margin: 0 0 1rem; }
.doc-content pre code { background: none; padding: 0; }
.doc-content table { border-collapse: collapse; width: 100%; margin: 0 0 1rem; }
.doc-content th, .doc-content td { border: 1px solid var(--border); padding: 0.5rem 0.75rem; text-align: left; }
.doc-content th { background: rgba(110, 118, 129, 0.15); font-weight: 600; }
.doc-content a { color: var(--accent); text-decoration: none; }
.doc-content a:hover { text-decoration: underline; }
.doc-content blockquote { margin: 0 0 1rem; padding-left: 1rem; border-left: 4px solid var(--border); color: var(--muted); }
.doc-content hr { border: none; border-top: 1px solid var(--border); margin: 1.5rem 0; }

/* ---------- Responsive layout ---------- */

/* Tablet: stack wide cards and soften paddings */
@media (max-width: 1023px) {
  .page-header {
    padding: 0 1rem;
  }

  .page-content {
    padding: 1rem;
  }

  /* Top-level cards inside page content take full width */
  .page-content > div > .card,
  .page-content > .card {
    width: 100%;
    max-width: 100%;
  }
}

/* Mobile layout & typography */
@media (max-width: 767px) {
  html {
    font-size: 12px;
  }

  /* Off-canvas sidebar for mobile */
  .sidebar {
    width: 176px;
    transform: translateX(-100%);
    transition: transform 0.2s ease;
  }
  .app-layout.sidebar-open .sidebar {
    transform: translateX(0);
  }
  .page {
    margin-left: 0;
  }
  .app-layout.sidebar-open .page {
    margin-left: 0;
  }

  .sidebar-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.5);
    z-index: 40;
  }

  .page-header {
    font-size: 1.1rem;
    padding: 0 0.75rem;
  }
  .page-header__action-group {
    gap: 0.25rem;
  }
  .page-header__icon-btn {
    width: auto;
    min-width: 2.1rem;
    padding: 0 0.3rem;
    gap: 0.25rem;
    border-radius: 0.25rem;
  }
  .page-header__icon-label {
    display: inline-block;
    font-size: 0.72rem;
    color: inherit;
    letter-spacing: 0.02em;
    white-space: nowrap;
  }

  .page-content {
    padding: 0.75rem;
  }

  .card {
    padding: 0.75rem;
    overflow-x: auto;
  }

  /* Forms: single-column, full-width inputs */
  .form-row {
    flex-direction: column;
    align-items: stretch;
  }
  .form-row label {
    min-width: 0;
  }
  .form-row input,
  .form-row select,
  .form-row textarea {
    width: 100%;
  }

  /* Tables: horizontal scroll instead of squeezing */
  .card table.data-table {
    min-width: 32rem;
    font-size: 0.85rem;
  }

  /* Docs tables: allow horizontal scroll */
  .doc-content table {
    display: block;
    width: 100%;
    overflow-x: auto;
  }

  /* Modals: fullscreen on mobile */
  .modal-overlay {
    align-items: stretch;
    justify-content: stretch;
  }
  .modal {
    width: 100vw;
    max-width: 100vw;
    height: 100vh;
    max-height: 100vh;
    border-radius: 0;
    padding: 1rem;
  }

  /* Charts: ensure full-width container */
  .echarts-for-react,
  .echarts-for-react > div {
    width: 100% !important;
  }
}

/* Панель слоёв карты (подложки / спутник) */
.leaflet-control-layers {
  border-radius: 8px !important;
  border: 1px solid var(--border, rgba(0, 0, 0, 0.15)) !important;
}
.leaflet-control-layers-expanded {
  padding: 8px 10px 8px 12px !important;
  background: var(--card) !important;
  color: var(--text) !important;
  font-size: 13px;
  line-height: 1.35;
  max-height: 70vh;
  overflow-y: auto;
}
.leaflet-control-layers-expanded label,
.leaflet-control-layers-expanded span {
  color: inherit !important;
}
.leaflet-control-layers-base label,
.leaflet-control-layers-overlays label {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 4px 0;
  cursor: pointer;
  white-space: normal;
  color: var(--text) !important;
}
/* Leaflet по умолчанию сдвигает input вниз (margin-top/top) — ломает выравнивание с текстом */
.leaflet-control-layers-base .leaflet-control-layers-selector,
.leaflet-control-layers-overlays .leaflet-control-layers-selector {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
  top: 0 !important;
  position: relative !important;
  flex-shrink: 0;
  align-self: center;
  vertical-align: middle;
}
.leaflet-control-layers-base label > span,
.leaflet-control-layers-overlays label > span {
  display: inline-block;
  line-height: 1.35;
  align-self: center;
}
.leaflet-control-layers-separator {
  margin: 8px 0 4px !important;
  border-top: 1px solid var(--border, #e2e8f0);
  padding-top: 6px !important;
}

/* Карта техники: маркеры без стандартного фона Leaflet + ярлычок с именем */
.assets-map-marker {
  background: none !important;
  border: none !important;
}
.assets-map-marker--mini .assets-map-marker-mini {
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--map-marker-mini-w, 28px);
  height: var(--map-marker-mini-h, 32px);
  pointer-events: auto;
  position: relative;
}
.assets-map-marker--labeled .assets-map-marker-stack {
  display: flex;
  flex-direction: column;
  align-items: center;
  pointer-events: auto;
}
.assets-map-marker-tag {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1px;
  max-width: 168px;
  font-size: 11px;
  line-height: 1.2;
  font-weight: 600;
  text-align: center;
  color: #0f172a !important;
  background: rgba(255, 255, 255, 0.96);
  border-radius: 4px;
  padding: 3px 8px;
  margin-bottom: 2px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
}
.assets-map-marker-tag * {
  color: inherit !important;
}
.assets-map-marker-tag__name {
  max-width: 100%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.assets-map-marker-tag__icon {
  position: absolute;
  right: 6px;
  top: 4px;
  width: calc(var(--map-asset-icon-px, 14px) + 6px);
  height: calc(var(--map-asset-icon-px, 14px) + 4px);
  max-width: calc(100% - 12px);
  max-height: 52px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 4px;
  border: 1px solid rgba(37, 99, 235, 0.35);
  background: rgba(37, 99, 235, 0.12);
  color: #1d4ed8 !important;
  line-height: 1;
}
.assets-map-marker-tag__icon svg {
  width: var(--map-asset-icon-px, 14px);
  height: var(--map-asset-icon-px, 14px);
  max-width: 100%;
  max-height: 100%;
  display: block;
}
.assets-map-marker-mini__icon {
  position: absolute;
  right: -8px;
  top: -2px;
  width: calc(var(--map-asset-icon-px, 12px) + 6px);
  height: calc(var(--map-asset-icon-px, 12px) + 4px);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 4px;
  border: 1px solid rgba(37, 99, 235, 0.35);
  background: rgba(37, 99, 235, 0.16);
  color: #1d4ed8 !important;
  line-height: 1;
}
.assets-map-marker-mini__icon svg {
  width: var(--map-asset-icon-px, 12px);
  height: var(--map-asset-icon-px, 12px);
  max-width: 100%;
  max-height: 100%;
  display: block;
}
.assets-map-marker-icon-fallback {
  font-size: 8px;
  font-weight: 800;
  letter-spacing: 0.02em;
  line-height: 1;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.assets-map-marker-tag__meta {
  max-width: 100%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 9px;
  font-weight: 600;
  line-height: 1.15;
  color: #1f2937 !important;
  opacity: 0.92;
}
.assets-map-marker-tag__time {
  font-size: 9px;
  font-weight: 600;
  line-height: 1.15;
  color: #334155 !important;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.assets-map-marker-tag__coord,
.assets-map-marker-tag__course {
  font-size: 9px;
  font-weight: 600;
  line-height: 1.15;
  color: #334155 !important;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.assets-map-marker-tag__course {
  color: #1e3a8a !important;
}

.map-left-hud__strip--coords {
  flex-direction: column;
  align-items: stretch;
  justify-content: center;
  gap: 3px;
  height: auto;
  min-height: 0;
  min-width: 112px;
  max-width: 208px;
  padding-top: 5px;
  padding-bottom: 5px;
}
.map-left-hud__coords-value {
  font-family: 'Share Tech Mono', ui-monospace, 'Cascadia Code', 'Consolas', monospace;
  font-size: 9px;
  font-weight: 600;
  line-height: 1.25;
  color: #f0fdff;
  text-shadow: 0 0 8px rgba(0, 229, 255, 0.28);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
  word-break: break-all;
}

/* Tooltip под маркером техники */
.assets-map-tooltip-root {
  background: rgba(255, 255, 255, 0.96) !important;
  border: 1px solid rgba(15, 23, 42, 0.18) !important;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.25) !important;
  color: #0f172a !important;
  font-family: 'Share Tech Mono', ui-monospace, 'Cascadia Code', 'Consolas', monospace;
  /* critical: do not block clicks on marker beneath */
  pointer-events: none !important;
}
.assets-map-tooltip {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.assets-map-tooltip__group,
.assets-map-tooltip__identity {
  font-weight: 700;
  font-size: 11px;
  line-height: 1.2;
  color: #0f172a;
}
.assets-map-tooltip__group {
  color: #1f2937;
}
.assets-map-tooltip__imei-protocol,
.assets-map-tooltip__time,
.assets-map-tooltip__coord,
.assets-map-tooltip__speed,
.assets-map-tooltip__heading {
  font-weight: 600;
  font-size: 10px;
  line-height: 1.2;
  color: #334155;
  font-variant-numeric: tabular-nums;
}
.assets-map-tooltip__heading {
  color: #1e3a8a;
}
.assets-map-tooltip__model {
  margin-top: 1px;
  font-weight: 600;
  font-size: 10px;
  color: #334155;
}

/* Выбранная техника: HUD внизу справа (киберпанк, как map-left-hud) */
.map-selected-asset-panel {
  position: absolute;
  right: 0.65rem;
  bottom: 0.65rem;
  z-index: 1100;
  max-width: min(400px, calc(100% - 1.3rem));
  max-height: min(42vh, 340px);
  padding: 0;
  overflow: hidden;
  pointer-events: none;
  font-family: 'Share Tech Mono', ui-monospace, 'Cascadia Code', 'Consolas', monospace;
  border-radius: 4px;
  border: 1px solid rgba(0, 229, 255, 0.42);
  background: linear-gradient(145deg, rgba(6, 12, 24, 0.96) 0%, rgba(10, 20, 40, 0.94) 45%, rgba(8, 14, 28, 0.96) 100%);
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.5),
    0 0 18px rgba(0, 229, 255, 0.14),
    0 0 32px rgba(236, 72, 153, 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.05);
}
.map-selected-asset-panel__shell {
  display: flex;
  flex-direction: column;
  min-height: 0;
  max-height: min(42vh, 340px);
  height: 100%;
}
.map-selected-asset-panel__header {
  flex-shrink: 0;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  padding: 0.45rem 0.55rem 0.35rem 0.65rem;
  border-bottom: 1px solid rgba(0, 229, 255, 0.2);
  background: linear-gradient(180deg, rgba(0, 229, 255, 0.06) 0%, transparent 100%);
}
.map-selected-asset-panel__kicker {
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: rgba(103, 232, 249, 0.88);
  text-shadow: 0 0 12px rgba(34, 211, 238, 0.35);
}
.map-selected-asset-panel__icon {
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 4px;
  border: 1px solid rgba(0, 229, 255, 0.35);
  background: rgba(0, 0, 0, 0.35);
  box-shadow:
    inset 0 0 12px rgba(0, 229, 255, 0.08),
    0 0 14px rgba(34, 211, 238, 0.15);
}
.map-selected-asset-panel__icon svg {
  display: block;
  max-width: 100%;
  max-height: 100%;
}
.map-selected-asset-panel__body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  padding: 0.45rem 0.65rem 0.55rem;
  scrollbar-width: thin;
  scrollbar-color: rgba(0, 229, 255, 0.35) rgba(0, 0, 0, 0.25);
}
.map-selected-asset-panel__body::-webkit-scrollbar {
  width: 6px;
}
.map-selected-asset-panel__body::-webkit-scrollbar-thumb {
  background: rgba(0, 229, 255, 0.35);
  border-radius: 3px;
}
.map-selected-asset-panel .map-selected-asset-panel__inner {
  word-break: break-word;
  overflow-wrap: anywhere;
  gap: 3px;
}
.map-selected-asset-panel .assets-map-tooltip__group {
  color: rgba(165, 243, 252, 0.92);
  text-shadow: 0 0 8px rgba(34, 211, 238, 0.2);
}
.map-selected-asset-panel .assets-map-tooltip__identity {
  color: #f0fdff;
  text-shadow: 0 0 10px rgba(0, 229, 255, 0.25);
}
.map-selected-asset-panel .assets-map-tooltip__model {
  color: rgba(226, 232, 240, 0.92);
}
.map-selected-asset-panel .assets-map-tooltip__imei-protocol,
.map-selected-asset-panel .assets-map-tooltip__time,
.map-selected-asset-panel .assets-map-tooltip__coord,
.map-selected-asset-panel .assets-map-tooltip__speed {
  color: rgba(186, 230, 253, 0.9);
}
.map-selected-asset-panel .assets-map-tooltip__heading {
  color: rgba(125, 211, 252, 0.98);
  text-shadow: 0 0 8px rgba(56, 189, 248, 0.25);
}
.map-selected-asset-panel .assets-map-tooltip__group,
.map-selected-asset-panel .assets-map-tooltip__identity,
.map-selected-asset-panel .assets-map-tooltip__imei-protocol,
.map-selected-asset-panel .assets-map-tooltip__time,
.map-selected-asset-panel .assets-map-tooltip__coord,
.map-selected-asset-panel .assets-map-tooltip__speed,
.map-selected-asset-panel .assets-map-tooltip__heading {
  white-space: normal;
  overflow: visible;
  text-overflow: unset;
}
/* Курс: треугольник вперёд, основание на 2px от круга техники; rotate = heading_deg */
.assets-map-marker-heading-wrap {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 32px;
  margin: 0 auto 0;
  transform-origin: 50% calc(100% - 7px);
  filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.2));
}
.assets-map-marker-heading-svg {
  display: block;
  overflow: visible;
}
.assets-map-marker-arrow-spacer {
  width: 22px;
  height: 20px;
  margin: 0 auto 1px;
  flex-shrink: 0;
}
.assets-map-marker-dot {
  display: block;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  border: 2px solid #fff;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);
  flex-shrink: 0;
}
/* Настройка «круг маркера» выкл.: место под круг сохраняем для якоря/клика, визуально скрыто */
.assets-map-marker-dot.assets-map-marker-dot--hidden {
  opacity: 0;
  box-shadow: none;
  border-color: transparent;
  pointer-events: none;
}

/* Стрелки курса вдоль трека (мелкие, не перехватывают клики) */
.assets-map-track-heading {
  background: none !important;
  border: none !important;
}
.assets-map-track-heading-rot {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 14px;
  height: 14px;
  pointer-events: none;
  transform-origin: center center;
  /* Лёгкая тень для читаемости на светлом тайле, без белой «обводки» */
  filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.35));
}

/* Кластеры: знак «группа» (три точки), число, пунктирное кольцо; при наведении — пунктирный полигон покрытия (plugin) */
.assets-map-cluster-marker {
  background: none !important;
  border: none !important;
}
.assets-map-cluster {
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: auto;
}
.assets-map-cluster__ring {
  box-sizing: border-box;
  border-radius: 50%;
  border: 2px dashed rgba(37, 99, 235, 0.65);
  background: rgba(255, 255, 255, 0.94);
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, 0.9),
    0 2px 10px rgba(15, 23, 42, 0.14);
  display: flex;
  align-items: center;
  justify-content: center;
}
.assets-map-cluster__body {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1px;
  padding: 2px 4px 4px;
  color: #1e40af;
}
.assets-map-cluster__glyph {
  color: #2563eb;
  flex-shrink: 0;
  opacity: 0.95;
}
.assets-map-cluster__count {
  font-size: 13px;
  font-weight: 800;
  line-height: 1;
  letter-spacing: -0.03em;
  color: #0f172a;
  font-variant-numeric: tabular-nums;
}

/* Метрики TEL: змейка по 12 колонкам, на узком экране — одна колонка */
.metrics-layout-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 1rem;
  align-items: start;
}

.metrics-layout-tile {
  min-width: 0;
}

@media (max-width: 768px) {
  .metrics-layout-tile {
    grid-column: 1 / -1 !important;
  }
}

@keyframes geozones-toolbar-spin {
  to {
    transform: rotate(360deg);
  }
}
.geozones-toolbar-loader {
  animation: geozones-toolbar-spin 0.75s linear infinite;
}
/* Киберпанк-оболочка: «Пользователи», «Справочники» (auth-cyber). */

.page-content--cyber-workspace {
  --ac-cyan: #00e5ff;
  --ac-cyan-dim: rgba(0, 229, 255, 0.35);
  --ac-magenta: #ff2d95;
  --ac-magenta-dim: rgba(255, 45, 149, 0.22);
  --ac-text: #e8f4ff;
  --ac-muted: #7a8ba8;
  --ac-bg0: #05060a;
  --ac-panel: rgba(8, 12, 24, 0.94);
  position: relative;
  isolation: isolate;
  background:
    radial-gradient(ellipse 85% 55% at 50% -15%, var(--ac-magenta-dim), transparent 52%),
    radial-gradient(ellipse 55% 45% at 100% 100%, var(--ac-cyan-dim), transparent 48%),
    linear-gradient(168deg, var(--ac-bg0) 0%, #0c1020 48%, #060810 100%);
  font-family: "Share Tech Mono", ui-monospace, monospace;
  font-size: 0.9rem;
  color: var(--ac-text);
}

.page-content--cyber-workspace::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background-image:
    linear-gradient(var(--ac-cyan-dim) 1px, transparent 1px),
    linear-gradient(90deg, var(--ac-cyan-dim) 1px, transparent 1px);
  background-size: 40px 40px;
  opacity: 0.22;
  pointer-events: none;
  mask-image: radial-gradient(ellipse 95% 75% at 50% 35%, black 18%, transparent 72%);
}

.page-content--cyber-workspace > * {
  position: relative;
  z-index: 1;
}

.page-content--cyber-workspace .muted {
  color: var(--ac-muted) !important;
}

.page-content--cyber-workspace .link-button {
  color: var(--ac-cyan);
}

/* Карточки раздела */
.admin-cyber-card {
  position: relative;
  background: linear-gradient(148deg, rgba(12, 18, 36, 0.96) 0%, rgba(6, 10, 22, 0.98) 100%);
  border: 1px solid var(--ac-cyan-dim);
  border-radius: 4px;
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.45),
    0 0 32px rgba(0, 229, 255, 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.04);
  clip-path: polygon(0 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%);
  padding: 0.65rem 0.75rem;
}

.admin-cyber-card::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: linear-gradient(90deg, var(--ac-cyan), var(--ac-magenta), var(--ac-cyan));
  opacity: 0.75;
  pointer-events: none;
}

/* Телеметрия: карточки метрик в стиле «Пользователи» */
.page-content--cyber-workspace .metric-dashboard-card {
  background: linear-gradient(148deg, rgba(12, 18, 36, 0.96) 0%, rgba(6, 10, 22, 0.98) 100%) !important;
  border: 1px solid var(--ac-cyan-dim) !important;
  border-radius: 4px !important;
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.45),
    0 0 32px rgba(0, 229, 255, 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.04) !important;
  clip-path: polygon(0 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%) !important;
}

.page-content--cyber-workspace .metric-dashboard-card > div:first-child {
  /* верхняя 3px полоса MetricCard — делаем как у admin-cyber-card */
  background: linear-gradient(90deg, var(--ac-cyan), var(--ac-magenta), var(--ac-cyan)) !important;
  opacity: 0.75;
}

.page-content--cyber-workspace .metric-dashboard-card .metric-card-header span:first-child {
  /* заголовок MetricCard */
  font-family: "Orbitron", system-ui, sans-serif;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ac-cyan) !important;
}

.page-content--cyber-workspace .metric-dashboard-card .metric-card-header span[title] {
  /* подпись/сабтайтл */
  color: var(--ac-muted) !important;
}

.page-content--cyber-workspace .metric-dashboard-card .metric-card-gear {
  color: rgba(191, 248, 255, 0.7) !important;
}

.page-content--cyber-workspace .metric-dashboard-card .metric-card-gear:hover {
  color: #bff8ff !important;
}

/* Модалка «Параметры карточки» порталится в document.body — стили совпадают с .map-settings-modal__* в index.css */

/* ——— Настройки: типографика и компактные контролы как в «Справочники» ——— */

.page-content--cyber-workspace .settings-page {
  font-family: "Share Tech Mono", ui-monospace, monospace;
  color: var(--ac-text);
}

.page-content--cyber-workspace .settings-page .settings-section-title {
  font-family: "Orbitron", system-ui, sans-serif;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-size: 0.78rem;
  color: var(--ac-cyan);
  margin-bottom: 0.45rem;
}

.page-content--cyber-workspace .settings-page .settings-section-intro,
.page-content--cyber-workspace .settings-page .settings-field-hint {
  color: var(--ac-muted);
}

/* Вкладки настроек уже на admin-section-tabs, но под кибер-оболочкой должны быть «как refs» */
.page-content--cyber-workspace .settings-page .settings-tabs {
  background: linear-gradient(180deg, rgba(8, 12, 22, 0.98) 0%, rgba(5, 7, 14, 0.96) 100%);
}

/* Уплотнение формы: не растягиваем сетку на всю ширину, держим контролы слева */
.page-content--cyber-workspace .settings-page .settings-section-grid {
  grid-template-columns: repeat(auto-fit, minmax(18rem, 22rem));
  justify-content: start;
  gap: 0.4rem 0.75rem;
}

.page-content--cyber-workspace .settings-page .settings-section-grid .form-row {
  max-width: 22rem;
}

.page-content--cyber-workspace .settings-page .settings-form-field--full {
  max-width: none;
}

/* Числовые поля ещё компактнее */
.page-content--cyber-workspace .settings-page .settings-section-grid input[type="number"] {
  width: 7.5rem;
}

.page-content--cyber-workspace .settings-page .settings-section-grid .settings-form-field--full input[type="number"] {
  width: min(22rem, 100%);
}

.page-content--cyber-workspace .settings-page .settings-section-grid--single-col {
  grid-template-columns: 1fr;
  max-width: 42rem;
}

.page-content--cyber-workspace .settings-page .detector-version-edit-section {
  background: linear-gradient(145deg, rgba(10, 18, 34, 0.97) 0%, rgba(5, 9, 18, 0.99) 100%);
  border-color: rgba(0, 240, 255, 0.22);
  border-left-color: var(--ac-cyan);
  box-shadow:
    0 0 24px rgba(0, 240, 255, 0.07),
    inset 0 1px 0 rgba(255, 255, 255, 0.04);
}
.page-content--cyber-workspace .settings-page .detector-version-edit-section__heading {
  font-family: "Orbitron", system-ui, sans-serif;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  font-size: 0.78rem;
  color: var(--ac-cyan);
  border-bottom-color: rgba(0, 240, 255, 0.22);
}
.page-content--cyber-workspace .settings-page .detector-version-edit-section__index {
  font-family: "Share Tech Mono", ui-monospace, monospace;
  text-transform: none;
  letter-spacing: 0;
  background: rgba(0, 240, 255, 0.1);
  color: var(--ac-cyan);
  border: 1px solid rgba(0, 240, 255, 0.35);
}

.page-content--cyber-workspace .settings-page .detector-version-meta-table th[scope='row'] {
  color: var(--ac-muted);
  border-bottom-color: rgba(0, 240, 255, 0.12);
}
.page-content--cyber-workspace .settings-page .detector-version-meta-table td {
  border-bottom-color: rgba(0, 240, 255, 0.12);
}

.page-content--cyber-workspace .settings-page .detector-version-params-table thead th {
  color: var(--ac-muted);
  border-bottom-color: rgba(0, 240, 255, 0.22);
}
.page-content--cyber-workspace .settings-page .detector-version-params-table tbody td {
  border-top-color: rgba(0, 240, 255, 0.1);
}

.page-content--cyber-workspace .settings-page .detector-assignments-add-panel {
  background: linear-gradient(145deg, rgba(10, 18, 34, 0.95) 0%, rgba(5, 9, 18, 0.98) 100%);
  border-color: rgba(0, 240, 255, 0.2);
  box-shadow: 0 0 18px rgba(0, 240, 255, 0.06);
}
.page-content--cyber-workspace .settings-page .detector-assignments-add-panel__head {
  color: var(--ac-muted);
}
.page-content--cyber-workspace .settings-page .detector-assignments-field input,
.page-content--cyber-workspace .settings-page .detector-assignments-field select {
  border-color: rgba(0, 240, 255, 0.22);
  background: rgba(4, 8, 16, 0.9);
  color: var(--ac-text);
}

.admin-cyber-card h2,
.admin-cyber-card h3 {
  font-family: "Orbitron", system-ui, sans-serif;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-size: 0.78rem;
  color: var(--ac-cyan);
  margin: 0 0 0.5rem;
}

.admin-cyber-kpi {
  gap: 0.5rem;
}

.admin-cyber-kpi .admin-cyber-card {
  min-height: 4rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.25rem;
}

.admin-cyber-kpi .admin-cyber-card strong {
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.62rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ac-muted);
  font-weight: 600;
}

/* Одна карточка KPI: четыре метрики в сетке */
.admin-cyber-kpi-combined {
  padding: 0.75rem 1rem;
}

.admin-cyber-kpi-combined__grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1rem;
  align-items: stretch;
}

@media (max-width: 900px) {
  .admin-cyber-kpi-combined__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 480px) {
  .admin-cyber-kpi-combined__grid {
    grid-template-columns: 1fr;
  }
}

/* Вторая строка в «Сводка активности»: только метрики безопасности (права dashboard.security.view) */
.admin-cyber-kpi-combined__grid--security-row {
  margin-top: 0.75rem;
  padding-top: 0.75rem;
  border-top: 1px solid rgba(0, 229, 255, 0.12);
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

@media (max-width: 900px) {
  .admin-cyber-kpi-combined__grid--security-row {
    grid-template-columns: 1fr;
  }
}

.admin-cyber-kpi-metric {
  min-height: 4rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.25rem;
  padding: 0.35rem 0;
  border-left: 1px solid rgba(0, 229, 255, 0.18);
  padding-left: 0.85rem;
}

.admin-cyber-kpi-combined__grid .admin-cyber-kpi-metric:first-child {
  border-left: none;
  padding-left: 0;
}

@media (max-width: 900px) {
  .admin-cyber-kpi-combined__grid .admin-cyber-kpi-metric {
    border-left: none;
    padding-left: 0;
  }
}

.admin-cyber-kpi-metric strong {
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.62rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ac-muted);
  font-weight: 600;
}

.admin-cyber-kpi-metric__value {
  font-size: 1.15rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--ac-text, #e2e8f0);
  line-height: 1.2;
}

/* Таблицы */
.admin-cyber-table-wrap {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  margin: 0;
  -webkit-overflow-scrolling: touch;
}

table.admin-cyber-table {
  width: 100%;
  max-width: 100%;
  border-collapse: collapse;
  table-layout: auto;
  text-align: left;
  font-size: 0.82rem;
  line-height: 1.35;
}

table.admin-cyber-table th,
table.admin-cyber-table td {
  padding: 0.32rem 0.45rem;
  border-bottom: 1px solid rgba(0, 229, 255, 0.14);
  vertical-align: top;
}

table.admin-cyber-table th {
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.62rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ac-cyan);
  white-space: nowrap;
  text-align: left;
}

table.admin-cyber-table tbody tr:hover td {
  background: rgba(0, 229, 255, 0.06);
}

table.admin-cyber-table .admin-cyber-table__num {
  text-align: right;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

table.admin-cyber-table .admin-cyber-table__actions {
  white-space: nowrap;
}

table.admin-cyber-table .admin-cyber-table__time {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

/* Пагинация */
.admin-cyber-pagination {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-top: 0.5rem;
  padding-top: 0.45rem;
  border-top: 1px solid rgba(0, 229, 255, 0.18);
  font-size: 0.78rem;
  color: var(--ac-muted);
}

.admin-cyber-pagination__meta {
  font-variant-numeric: tabular-nums;
}

.admin-cyber-pagination__controls {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  flex-wrap: wrap;
}

.admin-cyber-pagination__page {
  min-width: 3.5rem;
  text-align: center;
  color: var(--ac-text);
  font-variant-numeric: tabular-nums;
}

.admin-cyber-pagination__size {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin-right: 0.25rem;
}

.admin-cyber-pagination__size-label {
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--ac-muted);
}

.admin-cyber-pagination__size select {
  padding: 0.2rem 0.4rem;
  font-size: 0.78rem;
  font-family: inherit;
  background: rgba(0, 0, 0, 0.45);
  border: 1px solid rgba(0, 229, 255, 0.35);
  border-radius: 2px;
  color: var(--ac-text);
}

/* Вторичная строка вкладок под заголовком */
.admin-section-tabs {
  flex-shrink: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  align-content: flex-start;
  gap: 0.35rem;
  padding: 0.4rem 0.6rem 0;
  margin: 0;
  min-height: 0;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: thin;
  scrollbar-color: rgba(0, 229, 255, 0.35) transparent;
  background: linear-gradient(180deg, rgba(8, 12, 22, 0.98) 0%, rgba(5, 7, 14, 0.96) 100%);
  border-bottom: 1px solid rgba(0, 229, 255, 0.28);
  box-sizing: border-box;
}

.admin-section-tabs::-webkit-scrollbar {
  height: 6px;
}

.admin-section-tabs::-webkit-scrollbar-thumb {
  background: rgba(0, 229, 255, 0.35);
  border-radius: 3px;
}

.admin-section-tab {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.25rem;
  padding: 0.4rem 0.75rem;
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.62rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  border: 1px solid rgba(0, 229, 255, 0.4);
  border-bottom: none;
  border-radius: 4px 4px 0 0;
  margin: 0;
  background: rgba(0, 0, 0, 0.4);
  color: var(--ac-muted);
  cursor: pointer;
  box-sizing: border-box;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
  transition: color 0.15s, border-color 0.15s, background 0.15s, box-shadow 0.15s;
}

.admin-section-tab:hover {
  color: var(--ac-text);
  border-color: rgba(0, 229, 255, 0.65);
  background: rgba(0, 229, 255, 0.08);
}

.admin-section-tab.active {
  color: var(--ac-cyan);
  z-index: 2;
  border-color: var(--ac-cyan);
  background: rgba(0, 229, 255, 0.12);
  box-shadow:
    0 0 16px rgba(0, 229, 255, 0.12),
    inset 0 1px 0 rgba(255, 255, 255, 0.06);
  margin-bottom: -1px;
  padding-bottom: calc(0.4rem + 1px);
}

/* Внутренние вкладки карточки пользователя */
.admin-cyber-subtabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin-bottom: 0.5rem;
}

.admin-cyber-subtabs button {
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.58rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 0.35rem 0.55rem;
  border-radius: 2px;
  border: 1px solid rgba(0, 229, 255, 0.3);
  background: rgba(0, 0, 0, 0.35);
  color: var(--ac-muted);
  cursor: pointer;
}

.admin-cyber-subtabs button.secondary {
  opacity: 0.9;
}

.admin-cyber-subtabs button:not(.secondary) {
  color: var(--ac-cyan);
  border-color: var(--ac-cyan);
  background: rgba(0, 229, 255, 0.1);
}

.page-content--cyber-workspace .badge {
  display: inline-block;
  margin: 0.1rem 0.2rem 0.1rem 0;
  padding: 0.1rem 0.35rem;
  font-size: 0.72rem;
  border: 1px solid rgba(0, 229, 255, 0.4);
  border-radius: 2px;
  background: rgba(0, 229, 255, 0.08);
  color: var(--ac-cyan);
}

.page-content--cyber-workspace input[type="text"],
.page-content--cyber-workspace input[type="password"],
.page-content--cyber-workspace input[type="email"],
.page-content--cyber-workspace input:not([type]) {
  padding: 0.4rem 0.5rem;
  font-family: inherit;
  font-size: 0.85rem;
  background: rgba(0, 0, 0, 0.45);
  border: 1px solid rgba(0, 229, 255, 0.35);
  border-radius: 2px;
  color: var(--ac-text);
}

.page-content--cyber-workspace select {
  padding: 0.35rem 0.45rem;
  font-family: inherit;
  font-size: 0.85rem;
  background: rgba(0, 0, 0, 0.45);
  border: 1px solid rgba(0, 229, 255, 0.35);
  border-radius: 2px;
  color: var(--ac-text);
}

/* Фиксированные ширины для типовых таблиц */
table.admin-cyber-table.admin-cyber-table--users {
  table-layout: fixed;
}
table.admin-cyber-table.admin-cyber-table--users th:nth-child(1),
table.admin-cyber-table.admin-cyber-table--users td:nth-child(1) {
  width: 26%;
}
table.admin-cyber-table.admin-cyber-table--users th:nth-child(2),
table.admin-cyber-table.admin-cyber-table--users td:nth-child(2) {
  width: 22%;
}
table.admin-cyber-table.admin-cyber-table--users th:nth-child(3),
table.admin-cyber-table.admin-cyber-table--users td:nth-child(3) {
  width: 22%;
}
table.admin-cyber-table.admin-cyber-table--users th:nth-child(4),
table.admin-cyber-table.admin-cyber-table--users td:nth-child(4) {
  width: 14%;
}
table.admin-cyber-table.admin-cyber-table--users th:nth-child(5),
table.admin-cyber-table.admin-cyber-table--users td:nth-child(5) {
  width: 16%;
}

table.admin-cyber-table.admin-cyber-table--audit {
  table-layout: fixed;
}
table.admin-cyber-table.admin-cyber-table--audit th:nth-child(1),
table.admin-cyber-table.admin-cyber-table--audit td:nth-child(1) {
  width: 18%;
}
table.admin-cyber-table.admin-cyber-table--audit th:nth-child(2),
table.admin-cyber-table.admin-cyber-table--audit td:nth-child(2) {
  width: 14%;
}
table.admin-cyber-table.admin-cyber-table--audit th:nth-child(3),
table.admin-cyber-table.admin-cyber-table--audit td:nth-child(3) {
  width: 18%;
}
table.admin-cyber-table.admin-cyber-table--audit th:nth-child(4),
table.admin-cyber-table.admin-cyber-table--audit td:nth-child(4) {
  width: 22%;
}
table.admin-cyber-table.admin-cyber-table--audit th:nth-child(5),
table.admin-cyber-table.admin-cyber-table--audit td:nth-child(5) {
  width: 8%;
}

table.admin-cyber-table.admin-cyber-table--perms {
  table-layout: fixed;
}
table.admin-cyber-table.admin-cyber-table--perms th:nth-child(1),
table.admin-cyber-table.admin-cyber-table--perms td:nth-child(1) {
  width: 28%;
}
table.admin-cyber-table.admin-cyber-table--perms th:nth-child(2),
table.admin-cyber-table.admin-cyber-table--perms td:nth-child(2) {
  width: 14%;
}
table.admin-cyber-table.admin-cyber-table--perms th:nth-child(3),
table.admin-cyber-table.admin-cyber-table--perms td:nth-child(3) {
  width: 12%;
}
table.admin-cyber-table.admin-cyber-table--perms th:nth-child(4),
table.admin-cyber-table.admin-cyber-table--perms td:nth-child(4) {
  width: 12%;
}
table.admin-cyber-table.admin-cyber-table--perms th:nth-child(5),
table.admin-cyber-table.admin-cyber-table--perms td:nth-child(5) {
  width: 10%;
}

table.admin-cyber-table.admin-cyber-table--roles {
  table-layout: fixed;
}
table.admin-cyber-table.admin-cyber-table--roles th:nth-child(1),
table.admin-cyber-table.admin-cyber-table--roles td:nth-child(1) {
  width: 18%;
}
table.admin-cyber-table.admin-cyber-table--roles th:nth-child(2),
table.admin-cyber-table.admin-cyber-table--roles td:nth-child(2) {
  width: 10%;
}
table.admin-cyber-table.admin-cyber-table--roles th:nth-child(3),
table.admin-cyber-table.admin-cyber-table--roles td:nth-child(3) {
  width: 52%;
}
table.admin-cyber-table.admin-cyber-table--roles th:nth-child(4),
table.admin-cyber-table.admin-cyber-table--roles td:nth-child(4) {
  width: 12%;
}

table.admin-cyber-table.admin-cyber-table--tokens {
  table-layout: fixed;
}
table.admin-cyber-table.admin-cyber-table--tokens th:nth-child(1),
table.admin-cyber-table.admin-cyber-table--tokens td:nth-child(1) {
  width: 18%;
}
table.admin-cyber-table.admin-cyber-table--tokens th:nth-child(2),
table.admin-cyber-table.admin-cyber-table--tokens td:nth-child(2) {
  width: 44%;
}
table.admin-cyber-table.admin-cyber-table--tokens th:nth-child(3),
table.admin-cyber-table.admin-cyber-table--tokens td:nth-child(3) {
  width: 22%;
}
table.admin-cyber-table.admin-cyber-table--tokens th:nth-child(4),
table.admin-cyber-table.admin-cyber-table--tokens td:nth-child(4) {
  width: 16%;
}

/* Дашборд активности (/admin/dashboard): плотность таблиц и KPI — по аналогии с «На связи» */
.admin-cyber-density-compact table.admin-cyber-table th,
.admin-cyber-density-compact table.admin-cyber-table td {
  padding: 0.4rem 0.55rem;
  font-size: 0.82rem;
}
.admin-cyber-density-dense table.admin-cyber-table th,
.admin-cyber-density-dense table.admin-cyber-table td {
  padding: 0.3rem 0.45rem;
  font-size: 0.8rem;
}
.admin-cyber-density-compact .admin-cyber-kpi-combined__grid {
  gap: 10px;
}
.admin-cyber-density-dense .admin-cyber-kpi-combined__grid {
  gap: 6px;
}

/* ——— Справочники: полоса вкладок на всю ширину контента, карточки и таблицы ——— */

.refs-dashboard__tabs {
  margin-top: -0.6rem;
  margin-left: -0.6rem;
  margin-right: -0.6rem;
  margin-bottom: 0.65rem;
  width: calc(100% + 1.2rem);
  max-width: none;
  box-sizing: border-box;
}

/* /refs/devices: при фиксированной высоте и overflow:hidden 0px сверху режет верхний бордюр.
   Сдвигаем полосу ровно на 1px вниз, не меняя общий ритм как на /refs/geozones. */
.page-content:has(.refs-dashboard__devices-layout) .refs-dashboard__tabs {
  margin-top: calc(-0.6rem + 1px);
}

@media (max-width: 1023px) {
  .refs-dashboard__tabs {
    margin-top: -1rem;
    margin-left: -1rem;
    margin-right: -1rem;
    width: calc(100% + 2rem);
  }

  .page-content:has(.refs-dashboard__devices-layout) .refs-dashboard__tabs {
    margin-top: calc(-1rem + 1px);
  }
}

@media (max-width: 767px) {
  .refs-dashboard__tabs {
    margin-top: -0.75rem;
    margin-left: -0.75rem;
    margin-right: -0.75rem;
    width: calc(100% + 1.5rem);
  }

  .page-content:has(.refs-dashboard__devices-layout) .refs-dashboard__tabs {
    margin-top: calc(-0.75rem + 1px);
  }
}

/* Внутри правой панели контроллера: без отрицательного margin-top (над вкладкой уже внешняя полоса или тулбар). */
.refs-dashboard__tabs.refs-dashboard__tabs--nested {
  margin-top: 0;
}

/* Правая панель контроллера (Справочники → devices): кибер-заголовок контекста */
.page-content--cyber-workspace .refs-device-panel__head {
  position: relative;
  padding: 0.1rem 2.5rem 0.55rem 0;
  margin: 0 0 0.15rem;
}

.page-content--cyber-workspace .refs-device-panel__head::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: min(12rem, 55%);
  height: 2px;
  background: linear-gradient(90deg, var(--ac-cyan), var(--ac-magenta), transparent);
  opacity: 0.9;
  pointer-events: none;
}

.page-content--cyber-workspace .refs-device-panel__title {
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: clamp(0.75rem, 1.2vw, 0.88rem);
  font-weight: 600;
  letter-spacing: 0.04em;
  line-height: 1.35;
  color: var(--ac-cyan);
  margin: 0;
  text-shadow:
    0 0 20px rgba(0, 229, 255, 0.22),
    0 0 42px rgba(255, 45, 149, 0.08);
}

/* ——— Телеметрия: вкладки ближе к заголовку, как в «Справочники» ——— */

.tel-dashboard__tabs {
  margin-top: -0.6rem;
  margin-left: -0.6rem;
  margin-right: -0.6rem;
  margin-bottom: 0.65rem;
  width: calc(100% + 1.2rem);
  max-width: none;
  box-sizing: border-box;
}

@media (max-width: 1023px) {
  .tel-dashboard__tabs {
    margin-top: -1rem;
    margin-left: -1rem;
    margin-right: -1rem;
    width: calc(100% + 2rem);
  }
}

@media (max-width: 767px) {
  .tel-dashboard__tabs {
    margin-top: -0.75rem;
    margin-left: -0.75rem;
    margin-right: -0.75rem;
    width: calc(100% + 1.5rem);
  }
}

.refs-dashboard__error {
  margin: 0 0 0.65rem;
  padding: 0.45rem 0.6rem;
  font-size: 0.82rem;
  border-left: 3px solid var(--ac-magenta);
  background: rgba(255, 45, 149, 0.12);
  color: #ffb8d9;
}

.page-content--cyber-workspace .refs-dashboard .card {
  background: linear-gradient(148deg, rgba(12, 18, 36, 0.96) 0%, rgba(6, 10, 22, 0.98) 100%);
  border: 1px solid var(--ac-cyan-dim);
  border-radius: 4px;
  box-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.45),
    0 0 28px rgba(0, 229, 255, 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.04);
}

.page-content--cyber-workspace .refs-dashboard h2,
.page-content--cyber-workspace .refs-dashboard h3 {
  font-family: "Orbitron", system-ui, sans-serif;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--ac-cyan);
}

.page-content--cyber-workspace .refs-dashboard textarea {
  padding: 0.4rem 0.5rem;
  font-family: inherit;
  font-size: 0.85rem;
  background: rgba(0, 0, 0, 0.45);
  border: 1px solid rgba(0, 229, 255, 0.35);
  border-radius: 2px;
  color: var(--ac-text);
}

.page-content--cyber-workspace .refs-dashboard .data-table th {
  font-family: "Orbitron", system-ui, sans-serif;
  font-size: 0.62rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ac-cyan);
}

.page-content--cyber-workspace .refs-dashboard .data-table tbody tr:hover td {
  background: rgba(0, 229, 255, 0.06);
}

.page-content--cyber-workspace .refs-dashboard input[type="checkbox"],
.page-content--cyber-workspace .refs-dashboard input[type="radio"] {
  accent-color: var(--ac-cyan);
}

/* RGL resize handles: keep inside item bounds to avoid overlap artifacts */
.metrics-page-grid-wrap .react-grid-item {
  overflow: visible;
}

.metrics-page-grid-wrap .react-grid-item > .tel-rgl-resize-handle {
  position: absolute;
  z-index: 6;
  pointer-events: auto !important;
}

.metrics-page-grid-wrap .react-grid-item > .tel-rgl-resize-handle-e,
.metrics-page-grid-wrap .react-grid-item > .tel-rgl-resize-handle-w {
  top: 8px;
  bottom: 8px;
  width: 10px;
}

.metrics-page-grid-wrap .react-grid-item > .tel-rgl-resize-handle-e {
  right: 0;
  cursor: ew-resize;
}

.metrics-page-grid-wrap .react-grid-item > .tel-rgl-resize-handle-w {
  left: 0;
  cursor: ew-resize;
}

.metrics-page-grid-wrap .react-grid-item > .tel-rgl-resize-handle-n,
.metrics-page-grid-wrap .react-grid-item > .tel-rgl-resize-handle-s {
  left: 8px;
  right: 8px;
  height: 10px;
}

.metrics-page-grid-wrap .react-grid-item > .tel-rgl-resize-handle-n {
  top: 0;
  cursor: ns-resize;
}

.metrics-page-grid-wrap .react-grid-item > .tel-rgl-resize-handle-s {
  bottom: 0;
  cursor: ns-resize;
}

.metrics-page-grid-wrap .react-grid-item > .tel-rgl-resize-handle-ne,
.metrics-page-grid-wrap .react-grid-item > .tel-rgl-resize-handle-nw,
.metrics-page-grid-wrap .react-grid-item > .tel-rgl-resize-handle-se,
.metrics-page-grid-wrap .react-grid-item > .tel-rgl-resize-handle-sw {
  width: 12px;
  height: 12px;
  background: color-mix(in srgb, var(--accent) 65%, transparent);
  border-radius: 3px;
}

.metrics-page-grid-wrap .react-grid-item > .tel-rgl-resize-handle-ne {
  top: 0;
  right: 0;
  cursor: nesw-resize;
}

.metrics-page-grid-wrap .react-grid-item > .tel-rgl-resize-handle-nw {
  top: 0;
  left: 0;
  cursor: nwse-resize;
}

.metrics-page-grid-wrap .react-grid-item > .tel-rgl-resize-handle-se {
  right: 0;
  bottom: 0;
  cursor: nwse-resize;
}

.metrics-page-grid-wrap .react-grid-item > .tel-rgl-resize-handle-sw {
  left: 0;
  bottom: 0;
  cursor: nesw-resize;
}

/* Placeholder can become huge during drag in some persisted layouts.
   Make it non-blocking so it can't cover cards/handles. */
.metrics-page-grid-wrap .react-grid-placeholder {
  pointer-events: none !important;
  opacity: 0 !important;
  z-index: 0 !important;
}
