/* 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;
		}
	}
/* ibm-plex-sans-cyrillic-ext-400-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2) format('woff2'), url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.woff) format('woff');
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

/* ibm-plex-sans-cyrillic-400-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/assets/ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2) format('woff2'), url(/assets/ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff) format('woff');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

/* ibm-plex-sans-greek-400-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/assets/ibm-plex-sans-greek-400-normal-_efipK4i.woff2) format('woff2'), url(/assets/ibm-plex-sans-greek-400-normal-D9ESIMu3.woff) format('woff');
  unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
}

/* ibm-plex-sans-vietnamese-400-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/assets/ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2) format('woff2'), url(/assets/ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.woff) format('woff');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* ibm-plex-sans-latin-ext-400-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2) format('woff2'), url(/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff) format('woff');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* ibm-plex-sans-latin-400-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format('woff2'), url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff) format('woff');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}/* ibm-plex-sans-cyrillic-ext-500-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2) format('woff2'), url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.woff) format('woff');
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

/* ibm-plex-sans-cyrillic-500-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(/assets/ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2) format('woff2'), url(/assets/ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff) format('woff');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

/* ibm-plex-sans-greek-500-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(/assets/ibm-plex-sans-greek-500-normal-JMMifIXV.woff2) format('woff2'), url(/assets/ibm-plex-sans-greek-500-normal-CuWXN6rf.woff) format('woff');
  unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
}

/* ibm-plex-sans-vietnamese-500-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(/assets/ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2) format('woff2'), url(/assets/ibm-plex-sans-vietnamese-500-normal-BEb3_waV.woff) format('woff');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* ibm-plex-sans-latin-ext-500-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2) format('woff2'), url(/assets/ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.woff) format('woff');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* ibm-plex-sans-latin-500-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format('woff2'), url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff) format('woff');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}/* ibm-plex-sans-cyrillic-ext-600-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2) format('woff2'), url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.woff) format('woff');
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

/* ibm-plex-sans-cyrillic-600-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(/assets/ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2) format('woff2'), url(/assets/ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff) format('woff');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

/* ibm-plex-sans-greek-600-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(/assets/ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2) format('woff2'), url(/assets/ibm-plex-sans-greek-600-normal-D-CqTdkO.woff) format('woff');
  unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
}

/* ibm-plex-sans-vietnamese-600-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(/assets/ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2) format('woff2'), url(/assets/ibm-plex-sans-vietnamese-600-normal-DgdngZtN.woff) format('woff');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* ibm-plex-sans-latin-ext-600-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2) format('woff2'), url(/assets/ibm-plex-sans-latin-ext-600-normal-DIrixKbi.woff) format('woff');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* ibm-plex-sans-latin-600-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format('woff2'), url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff) format('woff');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}/* ibm-plex-mono-cyrillic-ext-400-normal */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2) format('woff2'), url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff) format('woff');
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

/* ibm-plex-mono-cyrillic-400-normal */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2) format('woff2'), url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff) format('woff');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

/* ibm-plex-mono-vietnamese-400-normal */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2) format('woff2'), url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff) format('woff');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* ibm-plex-mono-latin-ext-400-normal */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2) format('woff2'), url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff) format('woff');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* ibm-plex-mono-latin-400-normal */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format('woff2'), url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format('woff');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}/* ibm-plex-mono-cyrillic-ext-500-normal */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2) format('woff2'), url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff) format('woff');
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

/* ibm-plex-mono-cyrillic-500-normal */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2) format('woff2'), url(/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff) format('woff');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

/* ibm-plex-mono-vietnamese-500-normal */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2) format('woff2'), url(/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff) format('woff');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* ibm-plex-mono-latin-ext-500-normal */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2) format('woff2'), url(/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff) format('woff');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* ibm-plex-mono-latin-500-normal */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format('woff2'), url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format('woff');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}/* Visual system of the platform prototype (zalozenia-platformy/prototyp), taken over unchanged so screens keep its tokens,
   media colours and quality marks. Additions for the product live in app.css. */
/* Układ: lewa szyna nawigacji zależna od roli, belka kontekstu (przestrzeń · zakres w drzewie · okres · tryb czasu), obszar roboczy dopasowany do zakresu. Kolory mediów i oznaczenia jakości danych mają stałe znaczenie w całej aplikacji. */
:root {
  --bg: #eef1f4;
  --surface: #ffffff;
  --surface-2: #f5f7f9;
  --sunken: #e6eaee;
  --line: #d6dce2;
  --line-2: #c3cbd3;
  --guide: #b4bec8;
  --ink: #17202b;
  --muted: #56626f;
  --faint: #8692a0;
  --accent: #2d47c9;
  --accent-ink: #ffffff;
  --accent-soft: #e3e8fa;
  --accent-line: #a9b6ee;
  --ok: #1e7f4a;
  --ok-soft: #dff2e7;
  --warn: #9a6100;
  --warn-soft: #fbefd6;
  --crit: #b42828;
  --crit-soft: #f9e1e1;
  --stale: #7a8490;
  --stale-soft: #e8ebee;
  --m-el: #d69400;
  --m-gas: #d1561f;
  --m-water: #1f7fc0;
  --m-temp: #8a4fd8;
  --m-pv: #3e8f2a;
  --m-bess: #0e8f8a;
  --m-air: #5c6b7a;
  --m-hum: #2b9bb3;
  --m-light: #c9a000;
  --m-press: #6b5fa8;
  --m-wind: #4f7a8c;
  --hatch: #b9c1ca;
  --band: rgba(45, 71, 201, 0.14);
  --anom: rgba(214, 148, 0, 0.16);
  --mark: #fbe3a6;
  --font-ui: "IBM Plex Sans", system-ui, "Segoe UI", sans-serif;
  --font-mono:
    "IBM Plex Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;
  --r: 8px;
  --fs: 13px;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #0f141a;
    --surface: #161d25;
    --surface-2: #1b232d;
    --sunken: #0b1015;
    --line: #2a3440;
    --line-2: #3a4654;
    --guide: #46525f;
    --ink: #e6ebf0;
    --muted: #a3afbc;
    --faint: #73808e;
    --accent: #8ea2ff;
    --accent-ink: #0f141a;
    --accent-soft: #1f2a55;
    --accent-line: #3e4f9e;
    --ok: #5bc98a;
    --ok-soft: #14301f;
    --warn: #e8b04a;
    --warn-soft: #352812;
    --crit: #f07c7c;
    --crit-soft: #3a1818;
    --stale: #8f9aa6;
    --stale-soft: #222a33;
    --m-el: #f2b632;
    --m-gas: #f27b45;
    --m-water: #58aeea;
    --m-temp: #b48bf2;
    --m-pv: #7cc95e;
    --m-bess: #3cc7c1;
    --m-air: #9aa8b6;
    --m-hum: #5cc8de;
    --m-light: #f0cf4a;
    --m-press: #a397e0;
    --m-wind: #86b3c4;
    --hatch: #3f4a57;
    --band: rgba(142, 162, 255, 0.18);
    --anom: rgba(242, 182, 50, 0.14);
    --mark: #5a4413;
    color-scheme: dark;
  }
}
:root[data-theme="dark"] {
  --bg: #0f141a;
  --surface: #161d25;
  --surface-2: #1b232d;
  --sunken: #0b1015;
  --line: #2a3440;
  --line-2: #3a4654;
  --guide: #46525f;
  --ink: #e6ebf0;
  --muted: #a3afbc;
  --faint: #73808e;
  --accent: #8ea2ff;
  --accent-ink: #0f141a;
  --accent-soft: #1f2a55;
  --accent-line: #3e4f9e;
  --ok: #5bc98a;
  --ok-soft: #14301f;
  --warn: #e8b04a;
  --warn-soft: #352812;
  --crit: #f07c7c;
  --crit-soft: #3a1818;
  --stale: #8f9aa6;
  --stale-soft: #222a33;
  --m-el: #f2b632;
  --m-gas: #f27b45;
  --m-water: #58aeea;
  --m-temp: #b48bf2;
  --m-pv: #7cc95e;
  --m-bess: #3cc7c1;
  --m-air: #9aa8b6;
  --m-hum: #5cc8de;
  --m-light: #f0cf4a;
  --m-press: #a397e0;
  --m-wind: #86b3c4;
  --hatch: #3f4a57;
  --band: rgba(142, 162, 255, 0.18);
  --anom: rgba(242, 182, 50, 0.14);
  --mark: #5a4413;
  color-scheme: dark;
}
html,
body {
  height: 100%;
}
body {
  background: var(--bg);
  color: var(--ink);
  font: var(--fs)/1.45 var(--font-ui);
  padding-left: max(0px, env(safe-area-inset-left, 0px));
  padding-right: max(0px, env(safe-area-inset-right, 0px));
}
[data-density="comfortable"] {
  --fs: 15px;
}
* {
  box-sizing: border-box;
}
button,
select,
input {
  font: inherit;
  color: inherit;
}
button {
  cursor: pointer;
}
:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}
mark {
  background: var(--mark);
  color: inherit;
  border-radius: 2px;
  padding: 0 1px;
}
.mono,
.num {
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
}
svg.i {
  width: 16px;
  height: 16px;
  flex: none;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.app {
  display: grid;
  grid-template-columns: 212px minmax(0, 1fr);
  min-height: 100%;
}
/* szyna */
.rail {
  background: var(--surface);
  border-right: 1px solid var(--line);
  display: flex;
  flex-direction: column;
  position: sticky;
  top: 0;
  height: 100vh;
  padding: 14px 10px;
}
.brand {
  display: flex;
  gap: 10px;
  align-items: center;
  padding: 4px 8px 16px;
}
.brand-mark {
  width: 28px;
  height: 28px;
  border-radius: 7px;
  background: var(--ink);
  color: var(--bg);
  display: grid;
  place-items: center;
}
.brand b {
  display: block;
  font-weight: 600;
  letter-spacing: 0.01em;
}
.brand span {
  color: var(--faint);
  font-size: 11px;
}
.nav {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.nav button {
  display: flex;
  gap: 10px;
  align-items: center;
  border: 0;
  background: none;
  padding: 7px 10px;
  border-radius: 6px;
  text-align: left;
  color: var(--muted);
}
.nav button:hover {
  background: var(--surface-2);
  color: var(--ink);
}
.nav button[aria-current="page"] {
  background: var(--accent-soft);
  color: var(--ink);
  font-weight: 500;
}
.nav button[aria-current="page"] svg {
  color: var(--accent);
}
.nav .soon {
  margin-left: auto;
  font-size: 10px;
  color: var(--faint);
  border: 1px solid var(--line);
  border-radius: 4px;
  padding: 0 4px;
}
.who {
  margin-top: auto;
  border-top: 1px solid var(--line);
  padding: 12px 8px 0;
  display: grid;
  gap: 6px;
}
.who label {
  font-size: 10.5px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--faint);
}
.who select {
  width: 100%;
  padding: 6px 8px;
  border: 1px solid var(--line-2);
  border-radius: 6px;
  background: var(--surface-2);
}
.who small {
  color: var(--muted);
}
/* belka kontekstu */
.main {
  min-width: 0;
  display: flex;
  flex-direction: column;
}
.ctx {
  position: sticky;
  top: env(safe-area-inset-top, 0px);
  z-index: 25;
  background: var(--surface);
  border-bottom: 1px solid var(--line);
  display: flex;
  flex-wrap: wrap;
  gap: 8px 10px;
  align-items: center;
  padding: 9px 18px;
}
.space {
  display: flex;
  align-items: center;
  gap: 8px;
  font-weight: 600;
  padding: 5px 9px;
  border: 1px solid var(--line-2);
  border-radius: 6px;
  background: var(--surface-2);
  white-space: nowrap;
}
.cw {
  position: relative;
  min-width: 0;
}
.crumbs {
  display: flex;
  align-items: center;
  gap: 2px;
  min-width: 0;
  flex-wrap: wrap;
  border: 1px solid transparent;
  border-radius: 6px;
}
.crumbs button {
  border: 0;
  background: none;
  padding: 4px 6px;
  border-radius: 5px;
  color: var(--muted);
  white-space: nowrap;
}
.crumbs button:hover {
  background: var(--surface-2);
  color: var(--ink);
}
.crumbs .cur {
  color: var(--ink);
  font-weight: 500;
}
.crumbs .sep {
  color: var(--faint);
}
.crumbs .pick {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  border: 1px solid var(--line-2);
  background: var(--surface-2);
  color: var(--ink);
  margin-left: 4px;
}
.crumbs .pick[aria-expanded="true"] {
  border-color: var(--accent);
  background: var(--accent-soft);
}
.ctx-right {
  margin-left: auto;
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
}
.seg {
  display: inline-flex;
  /* As wide as its options, also inside a grid (a dialog body), which would stretch it. */
  justify-self: start;
  border: 1px solid var(--line-2);
  border-radius: 6px;
  overflow: hidden;
  background: var(--surface-2);
}
.seg button {
  border: 0;
  background: none;
  padding: 5px 10px;
  color: var(--muted);
  border-right: 1px solid var(--line);
  white-space: nowrap;
}
.seg button:last-child {
  border-right: 0;
}
.seg button[aria-pressed="true"] {
  background: var(--surface);
  color: var(--ink);
  font-weight: 500;
  box-shadow: inset 0 -2px 0 var(--accent);
}
.rng {
  display: inline-flex;
  align-items: center;
  border: 1px solid var(--line-2);
  border-radius: 6px;
  background: var(--surface-2);
}
.rng button {
  border: 0;
  background: none;
  padding: 5px 6px;
  color: var(--muted);
  display: grid;
  place-items: center;
}
.rng button:hover {
  color: var(--ink);
}
.rng .lbl {
  font-family: var(--font-mono);
  font-size: 12px;
  padding: 5px 6px;
  border-left: 1px solid var(--line);
  border-right: 1px solid var(--line);
  display: inline-flex;
  gap: 6px;
  align-items: center;
  white-space: nowrap;
}
.rng .lbl[aria-expanded="true"] {
  background: var(--accent-soft);
  color: var(--ink);
}
.live {
  display: flex;
  align-items: center;
  gap: 6px;
  color: var(--muted);
  font-size: 12px;
  white-space: nowrap;
}
.dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--ok);
  display: inline-block;
  flex: none;
}
.dot.warn {
  background: var(--warn);
}
.dot.crit {
  background: var(--crit);
}
.dot.stale {
  background: var(--stale);
}
.dot.off {
  background: transparent;
  border: 1.5px solid var(--faint);
}
.dot.pulse {
  animation: pulse 2s infinite;
}
@keyframes pulse {
  50% {
    opacity: 0.35;
  }
}
@media (prefers-reduced-motion: reduce) {
  .dot.pulse {
    animation: none;
  }
}
.pop {
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  z-index: 40;
  background: var(--surface);
  border: 1px solid var(--line-2);
  border-radius: 10px;
  box-shadow: 0 14px 40px rgba(0, 0, 0, 0.2);
  padding: 10px;
  width: min(380px, calc(100vw - 32px));
  display: grid;
  gap: 10px;
}
.pop.right {
  left: auto;
  right: 0;
}
.pop .tree {
  max-height: min(440px, 58vh);
  overflow: auto;
  padding: 2px 0;
  margin: 0 -4px;
}
.pop h3 {
  margin: 0;
  font-size: 12px;
  font-weight: 500;
  color: var(--muted);
}
.presets {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4px;
}
.presets button {
  border: 1px solid var(--line);
  background: var(--surface-2);
  border-radius: 6px;
  padding: 6px 8px;
  text-align: left;
}
.presets button[aria-pressed="true"] {
  border-color: var(--accent);
  background: var(--accent-soft);
}
.banner {
  display: flex;
  gap: 10px;
  align-items: center;
  padding: 8px 18px;
  font-size: 12.5px;
  border-bottom: 1px solid var(--line);
  flex-wrap: wrap;
}
.banner.hist {
  background: var(--sunken);
  color: var(--muted);
}
.banner.fc {
  background: var(--accent-soft);
}
.demo-flag {
  font-size: 11px;
  color: var(--faint);
  border: 1px dashed var(--line-2);
  border-radius: 5px;
  padding: 2px 6px;
  white-space: nowrap;
}
/* obszar roboczy */
.work {
  padding: 18px;
  display: grid;
  gap: 16px;
  align-content: start;
  min-width: 0;
}
.ph {
  display: flex;
  align-items: flex-end;
  gap: 16px;
  flex-wrap: wrap;
}
.ph h1 {
  font-size: 22px;
  font-weight: 600;
  margin: 2px 0 0;
  letter-spacing: -0.01em;
  text-wrap: balance;
}
.eyebrow {
  font-size: 10.5px;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--faint);
}
.ph .sub {
  color: var(--muted);
}
.ph .acts {
  margin-left: auto;
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
}
.btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--line-2);
  background: var(--surface);
  padding: 6px 11px;
  border-radius: 6px;
  white-space: nowrap;
}
.btn:hover {
  border-color: var(--faint);
}
.btn.sm {
  padding: 3px 8px;
  font-size: 12px;
}
.btn.primary {
  background: var(--accent);
  border-color: var(--accent);
  color: var(--accent-ink);
}
.btn.ghost {
  border-color: transparent;
  background: none;
  color: var(--muted);
}
.btn.ghost:hover {
  background: var(--surface-2);
  color: var(--ink);
}
.card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--r);
  min-width: 0;
}
.card-h {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 11px 14px;
  border-bottom: 1px solid var(--line);
  flex-wrap: wrap;
}
.card-h h2 {
  font-size: 13.5px;
  font-weight: 600;
  margin: 0;
}
.card-h .meta {
  margin-left: auto;
  color: var(--faint);
  font-size: 12px;
}
.card-b {
  padding: 14px;
}
.grid {
  display: grid;
  gap: 16px;
}
.g-kpi {
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
}
.g-2 {
  grid-template-columns: minmax(0, 1.75fr) minmax(0, 1fr);
}
.g-2e {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.g-2.g-2s {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.55fr);
}
.kpi {
  padding: 12px 14px;
  display: grid;
  gap: 3px;
  align-content: start;
}
.kpi .lbl {
  color: var(--muted);
  font-size: 12px;
  display: flex;
  gap: 6px;
  align-items: center;
}
.kpi .val {
  font-family: var(--font-mono);
  font-size: 22px;
  font-weight: 500;
  letter-spacing: -0.02em;
}
.kpi .val small {
  font-size: 12px;
  color: var(--muted);
  margin-left: 3px;
  font-weight: 400;
}
.q {
  font-size: 11.5px;
  color: var(--muted);
  display: flex;
  gap: 5px;
  flex-wrap: wrap;
  align-items: center;
}
.chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  line-height: 1;
  padding: 3px 6px;
  border-radius: 4px;
  border: 1px solid var(--line);
  color: var(--muted);
  background: var(--surface-2);
  white-space: nowrap;
}
.chip.ok {
  color: var(--ok);
  background: var(--ok-soft);
  border-color: transparent;
}
.q .chip,
.kv .chip,
td .chip {
  white-space: normal;
  line-height: 1.25;
}
.chip.warn {
  color: var(--warn);
  background: var(--warn-soft);
  border-color: transparent;
}
.chip.crit {
  color: var(--crit);
  background: var(--crit-soft);
  border-color: transparent;
}
.chip.stale {
  color: var(--stale);
  background: var(--stale-soft);
  border-color: transparent;
}
.chip.acc {
  color: var(--accent);
  background: var(--accent-soft);
  border-color: transparent;
}
.chip.dash {
  border-style: dashed;
  background: none;
}
.med {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border-radius: 5px;
  flex: none;
  color: #fff;
}
.med svg.i {
  width: 13px;
  height: 13px;
  stroke-width: 2;
}
.tbl {
  width: 100%;
  border-collapse: collapse;
  font-size: 12.5px;
}
.tbl th {
  font-weight: 500;
  color: var(--faint);
  text-align: left;
  font-size: 11px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 7px 10px;
  border-bottom: 1px solid var(--line);
  white-space: nowrap;
}
.tbl td {
  padding: 8px 10px;
  border-bottom: 1px solid var(--line);
  vertical-align: middle;
}
.tbl tr:last-child td {
  border-bottom: 0;
}
.tbl td.r,
.tbl th.r {
  text-align: right;
  white-space: nowrap;
}
.tbl tr.click {
  cursor: pointer;
}
.tbl tr.click:hover td {
  background: var(--surface-2);
}
.tbl tr.sel td {
  background: var(--accent-soft);
}
.scrollx {
  overflow-x: auto;
}
.legend {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  font-size: 11.5px;
  color: var(--muted);
  padding: 0 14px 12px;
}
.legend span {
  display: inline-flex;
  gap: 6px;
  align-items: center;
}
.sw {
  width: 18px;
  height: 0;
  border-top: 2px solid var(--m-el);
  display: inline-block;
}
.sw.dash {
  border-top-style: dashed;
}
.sw.base {
  border-top: 1.5px solid var(--faint);
}
.sw.box {
  height: 10px;
  border: 0;
  width: 14px;
}
.note {
  font-size: 12px;
  color: var(--muted);
  display: flex;
  gap: 8px;
  align-items: center;
  padding: 8px 14px;
  background: var(--surface-2);
  border-bottom: 1px solid var(--line);
}
/* wykres */
.chart {
  position: relative;
}
.chart svg {
  display: block;
  width: 100%;
  height: auto;
}
.chart text {
  fill: var(--faint);
  font-family: var(--font-mono);
  font-size: 10px;
}
.tip {
  position: absolute;
  pointer-events: none;
  background: var(--ink);
  color: var(--bg);
  border-radius: 6px;
  padding: 7px 9px;
  font-size: 11.5px;
  line-height: 1.35;
  min-width: 170px;
  transform: translate(-50%, -100%);
  white-space: nowrap;
  z-index: 3;
}
.tip b {
  font-family: var(--font-mono);
  font-weight: 500;
}
/* zasoby */
.res {
  display: grid;
  grid-template-columns: minmax(320px, 400px) minmax(0, 1fr);
  gap: 16px;
  align-items: start;
}
.res.list {
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
}
.panel-h {
  display: flex;
  gap: 8px;
  align-items: center;
  padding: 10px 12px;
  border-bottom: 1px solid var(--line);
  flex-wrap: wrap;
}
.search {
  flex: 1;
  min-width: 150px;
  display: flex;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--line-2);
  border-radius: 6px;
  padding: 4px 8px;
  background: var(--surface-2);
}
.search input {
  border: 0;
  background: none;
  outline: 0;
  width: 100%;
  min-width: 0;
}
.fbar {
  display: grid;
  gap: 8px;
  padding: 10px 12px;
  border-bottom: 1px solid var(--line);
}
.frow {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  align-items: center;
}
.frow > .eyebrow {
  min-width: 56px;
}
.mchip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  border: 1px solid var(--line-2);
  border-radius: 14px;
  padding: 2px 9px 2px 3px;
  font-size: 11.5px;
  background: var(--surface);
  color: var(--muted);
}
.mchip .med {
  width: 16px;
  height: 16px;
  border-radius: 50%;
}
.mchip .med svg.i {
  width: 10px;
  height: 10px;
}
.mchip[aria-pressed="true"] {
  border-color: var(--accent);
  background: var(--accent-soft);
  color: var(--ink);
}
.mchip.plain {
  padding: 2px 9px;
}
.views {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
}
.vchip {
  border: 1px solid var(--line);
  background: var(--surface-2);
  border-radius: 5px;
  padding: 2px 8px;
  font-size: 11.5px;
  color: var(--muted);
}
.vchip[aria-pressed="true"] {
  background: var(--ink);
  color: var(--bg);
  border-color: var(--ink);
}
.fsum {
  display: flex;
  gap: 8px;
  align-items: center;
  font-size: 11.5px;
  color: var(--muted);
  padding: 6px 12px;
  border-bottom: 1px solid var(--line);
  background: var(--surface-2);
  flex-wrap: wrap;
}
.tree {
  list-style: none;
  margin: 0;
  padding: 6px 6px 10px;
}
.tree ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
.row {
  display: flex;
  align-items: stretch;
  gap: 5px;
  padding: 0 6px 0 4px;
  border-radius: 6px;
  position: relative;
  min-height: 30px;
}
.row > :not(.guides) {
  align-self: center;
}
.row:hover {
  background: var(--surface-2);
}
.row.sel {
  background: var(--accent-soft);
}
.row.scope .nm {
  font-weight: 600;
}
.guides {
  display: flex;
  align-self: stretch;
  flex: none;
}
.g {
  width: 16px;
  position: relative;
  flex: none;
}
.g.v::before,
.g.t::before,
.g.l::before {
  content: "";
  position: absolute;
  left: 8px;
  top: 0;
  bottom: 0;
  border-left: 1px solid var(--guide);
}
.g.l::before {
  bottom: 50%;
}
.g.t::after,
.g.l::after {
  content: "";
  position: absolute;
  left: 8px;
  top: 50%;
  width: 7px;
  border-top: 1px solid var(--guide);
}
.row .tw {
  width: 18px;
  height: 18px;
  border: 0;
  background: none;
  padding: 0;
  display: grid;
  place-items: center;
  color: var(--faint);
  flex: none;
  border-radius: 4px;
}
.row .tw:hover {
  background: var(--line);
  color: var(--ink);
}
.row .tw svg {
  transition: transform 0.15s;
}
.row .tw[aria-expanded="true"] svg {
  transform: rotate(90deg);
}
.row .tw.leaf {
  visibility: hidden;
}
.row .nm {
  flex: 1;
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  border: 0;
  background: none;
  text-align: left;
  padding: 4px 0;
  border-radius: 4px;
}
.row.node .ico {
  color: var(--muted);
  display: grid;
}
.row .cnt {
  font-size: 11px;
  color: var(--faint);
  font-family: var(--font-mono);
  white-space: nowrap;
}
.row .act {
  opacity: 0;
  border: 0;
  background: none;
  color: var(--faint);
  padding: 3px;
  border-radius: 4px;
  display: grid;
}
.row:hover .act,
.row:focus-within .act {
  opacity: 1;
}
.row .act:hover {
  background: var(--line);
  color: var(--ink);
}
.row.pt {
  font-size: 12.5px;
}
.row.pt .v {
  font-family: var(--font-mono);
  font-size: 11.5px;
  color: var(--muted);
  white-space: nowrap;
}
.row.pt.stale .v {
  color: var(--stale);
}
.row.proj .nm {
  color: var(--faint);
  font-style: italic;
}
.row.drop {
  outline: 2px dashed var(--accent);
  outline-offset: -2px;
  background: var(--accent-soft);
}
.row .medd {
  display: flex;
  gap: 3px;
}
.row .medd i {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  display: inline-block;
}
.dropmsg {
  position: absolute;
  right: 6px;
  top: -22px;
  background: var(--accent);
  color: var(--accent-ink);
  font-size: 11px;
  padding: 2px 7px;
  border-radius: 4px;
  white-space: nowrap;
  pointer-events: none;
  z-index: 2;
}
.scopebar {
  display: flex;
  gap: 8px;
  align-items: center;
  padding: 8px 12px;
  border-bottom: 1px solid var(--line);
  font-size: 12px;
  color: var(--muted);
  flex-wrap: wrap;
}
.inbox {
  border-top: 1px solid var(--line);
}
.inbox-h {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px 6px;
}
.inbox-h b {
  font-weight: 600;
}
.dev {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  margin: 4px 8px;
  padding: 8px;
  border: 1px dashed var(--line-2);
  border-radius: 7px;
  background: var(--surface-2);
  cursor: grab;
}
.dev:hover {
  border-color: var(--accent-line);
}
.dev small {
  display: block;
  color: var(--muted);
}
.dev .src {
  color: var(--faint);
  font-size: 11px;
}
.groups {
  border-top: 1px solid var(--line);
  padding: 8px 12px 12px;
}
.groups .gr {
  display: flex;
  gap: 8px;
  align-items: center;
  padding: 4px 0;
  color: var(--muted);
}
.hint {
  font-size: 11.5px;
  color: var(--faint);
}
.kbd {
  font-family: var(--font-mono);
  font-size: 10.5px;
  border: 1px solid var(--line-2);
  border-bottom-width: 2px;
  border-radius: 4px;
  padding: 0 4px;
  color: var(--muted);
}
.tabs {
  display: flex;
  gap: 2px;
  border-bottom: 1px solid var(--line);
  padding: 0 10px;
  overflow-x: auto;
}
.tabs button {
  border: 0;
  background: none;
  padding: 9px 10px;
  color: var(--muted);
  border-bottom: 2px solid transparent;
  white-space: nowrap;
}
.tabs button[aria-selected="true"] {
  color: var(--ink);
  border-bottom-color: var(--accent);
  font-weight: 500;
}
.kv {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 6px 16px;
  font-size: 12.5px;
}
.kv dt {
  color: var(--muted);
}
.kv dd {
  margin: 0;
  min-width: 0;
}
.kv dd .btn,
.cond .btn {
  white-space: normal;
  text-align: left;
  height: auto;
}
.axes {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 10px;
}
.axis {
  border: 1px solid var(--line);
  border-radius: 7px;
  padding: 9px 10px;
  display: grid;
  gap: 5px;
  align-content: start;
}
.axis .eyebrow {
  font-size: 10px;
}
.path {
  color: var(--faint);
  font-size: 11.5px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 280px;
}
/* oś czasu urządzeń */
.tl-bar {
  display: flex;
  height: 30px;
  border-radius: 5px;
  overflow: hidden;
  border: 1px solid var(--line);
}
.tl-bar > div {
  display: flex;
  align-items: center;
  padding: 0 8px;
  font-size: 11px;
  white-space: nowrap;
  overflow: hidden;
  min-width: 0;
}
.tl-dev {
  background: var(--accent-soft);
  color: var(--ink);
}
.tl-dev + .tl-dev {
  border-left: 1px solid var(--surface);
}
.tl-gap {
  background: repeating-linear-gradient(
    135deg,
    var(--hatch) 0 2px,
    transparent 2px 6px
  );
  color: var(--muted);
}
.tl-scale {
  display: flex;
  justify-content: space-between;
  color: var(--faint);
  font-family: var(--font-mono);
  font-size: 10.5px;
  padding-top: 4px;
}
.steps {
  display: flex;
  flex-wrap: wrap;
}
.steps span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 11.5px;
  padding: 4px 8px;
  border: 1px solid var(--line);
  margin-right: -1px;
  background: var(--surface-2);
  color: var(--faint);
}
.steps span:first-child {
  border-radius: 5px 0 0 5px;
}
.steps span:last-child {
  border-radius: 0 5px 5px 0;
}
.steps span.on {
  color: var(--ok);
  background: var(--ok-soft);
}
.steps span.unk {
  color: var(--warn);
  background: var(--warn-soft);
}
/* zdarzenia */
.ev-row td:first-child {
  border-left: 3px solid transparent;
}
.ev-row.p1 td:first-child {
  border-left-color: var(--crit);
}
.ev-row.p2 td:first-child {
  border-left-color: var(--warn);
}
.ev-row.p3 td:first-child {
  border-left-color: var(--line-2);
}
.filters {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  padding: 10px 14px;
  border-bottom: 1px solid var(--line);
}
.fbtn {
  border: 1px solid var(--line-2);
  background: var(--surface);
  border-radius: 20px;
  padding: 3px 10px;
  font-size: 12px;
  color: var(--muted);
}
.fbtn[aria-pressed="true"] {
  background: var(--ink);
  color: var(--bg);
  border-color: var(--ink);
}
.timeline {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
}
.timeline li {
  display: grid;
  grid-template-columns: 92px 14px 1fr;
  gap: 10px;
  padding: 0 0 14px;
  position: relative;
}
.timeline li::before {
  content: "";
  position: absolute;
  left: 98px;
  top: 14px;
  bottom: 0;
  width: 1px;
  background: var(--line);
}
.timeline li:last-child::before {
  display: none;
}
.timeline time {
  color: var(--faint);
  font-family: var(--font-mono);
  font-size: 11px;
  text-align: right;
  padding-top: 1px;
}
.timeline .mk {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--surface);
  border: 2px solid var(--faint);
  margin-top: 4px;
}
.timeline .mk.crit {
  border-color: var(--crit);
}
.timeline .mk.ok {
  border-color: var(--ok);
}
.timeline .mk.acc {
  border-color: var(--accent);
}
/* miejsca (dom) */
.places {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 16px;
}
.place {
  display: grid;
  grid-template-rows: auto 1fr auto;
}
.place .ph2 {
  display: flex;
  gap: 10px;
  align-items: center;
  padding: 14px 16px 10px;
}
.place .ph2 h2 {
  margin: 0;
  font-size: 17px;
  font-weight: 600;
}
.place .ph2 .addr {
  color: var(--muted);
  font-size: 12.5px;
}
.quad {
  display: grid;
  grid-template-columns: 1fr 1fr;
  border-top: 1px solid var(--line);
}
.quad > div {
  padding: 10px 16px;
  border-bottom: 1px solid var(--line);
  display: grid;
  gap: 2px;
  align-content: start;
}
.quad > div:nth-child(odd) {
  border-right: 1px solid var(--line);
}
.quad .val {
  font-family: var(--font-mono);
  font-size: 19px;
}
.ctrl {
  display: flex;
  gap: 10px;
  align-items: center;
  padding: 12px 16px;
  flex-wrap: wrap;
}
.toggle {
  width: 40px;
  height: 22px;
  border-radius: 12px;
  border: 0;
  background: var(--line-2);
  position: relative;
  flex: none;
}
.toggle::after {
  content: "";
  position: absolute;
  top: 3px;
  left: 3px;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--surface);
  transition: left 0.15s;
}
.toggle[aria-checked="true"] {
  background: var(--accent);
}
.toggle[aria-checked="true"]::after {
  left: 21px;
}
.toggle[aria-disabled="true"] {
  opacity: 0.5;
  cursor: not-allowed;
}
/* rzut */
/* Only the drawing of an image plan: icons in the toolbar and a map's own SVG layer must keep their size. */
.plan .scrollx > svg {
  display: block;
  width: 100%;
  height: auto;
  background: var(--surface-2);
}
.plan text {
  font-family: var(--font-ui);
  fill: var(--muted);
  font-size: 12px;
}
.plan .wall {
  fill: none;
  stroke: var(--ink);
  stroke-width: 4;
}
.plan .zone {
  fill: var(--surface);
  stroke: var(--line-2);
  stroke-width: 1.2;
}
.plan .mkr {
  cursor: pointer;
}
.plan .tag rect {
  fill: var(--surface);
  stroke: var(--line-2);
}
.plan .tag text {
  fill: var(--ink);
  font-family: var(--font-mono);
  font-size: 12px;
}
.plan .tag.stale rect {
  stroke-dasharray: 4 3;
}
.plan .tag.stale text {
  fill: var(--stale);
}
.slider {
  display: flex;
  gap: 12px;
  align-items: center;
  padding: 10px 14px;
  border-top: 1px solid var(--line);
  flex-wrap: wrap;
}
.slider input {
  flex: 1;
  min-width: 160px;
  accent-color: var(--accent);
}
/* okna dialogowe */
.ovl {
  position: fixed;
  inset: 0;
  background: rgba(10, 14, 20, 0.5);
  display: grid;
  place-items: center;
  z-index: 50;
  padding: 16px;
}
.dlg {
  background: var(--surface);
  border-radius: 10px;
  border: 1px solid var(--line);
  width: min(620px, 100%);
  max-height: calc(100vh - 32px);
  overflow: auto;
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.25);
}
.dlg-h {
  padding: 16px 18px 8px;
  display: flex;
  gap: 10px;
  align-items: flex-start;
}
.dlg-h h2 {
  margin: 0;
  font-size: 16px;
  font-weight: 600;
}
.dlg-b {
  padding: 4px 18px 14px;
  display: grid;
  gap: 14px;
}
.dlg-f {
  padding: 12px 18px;
  border-top: 1px solid var(--line);
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  flex-wrap: wrap;
}
.opt {
  display: flex;
  gap: 10px;
  border: 1px solid var(--line-2);
  border-radius: 8px;
  padding: 10px 12px;
  cursor: pointer;
}
.opt:has(input:checked) {
  border-color: var(--accent);
  background: var(--accent-soft);
}
.opt input {
  margin-top: 3px;
  accent-color: var(--accent);
}
.opt b {
  font-weight: 600;
}
.opt small {
  display: block;
  color: var(--muted);
}
.impact {
  border: 1px solid var(--line);
  border-radius: 8px;
}
.impact > div {
  display: grid;
  grid-template-columns: 26px 1fr;
  gap: 6px;
  padding: 9px 12px;
  border-bottom: 1px solid var(--line);
}
.impact > div:last-child {
  border-bottom: 0;
}
.field {
  display: grid;
  gap: 4px;
}
.field label {
  font-size: 12px;
  color: var(--muted);
}
.field input,
.field select {
  border: 1px solid var(--line-2);
  border-radius: 6px;
  padding: 6px 8px;
  background: var(--surface);
  min-width: 0;
}
.toast {
  position: fixed;
  bottom: calc(20px + env(safe-area-inset-bottom, 0px));
  left: 50%;
  transform: translateX(-50%);
  background: var(--ink);
  color: var(--bg);
  padding: 9px 14px;
  border-radius: 7px;
  z-index: 60;
  font-size: 12.5px;
  max-width: calc(100% - 32px);
}
.empty {
  display: grid;
  gap: 10px;
  padding: 26px;
  max-width: 640px;
}
.empty h2 {
  margin: 0;
  font-size: 18px;
  font-weight: 600;
}
/* analizy, przepływy, raporty, optymalizacje */
:root {
  --s1: #c98a00;
  --s2: #2d47c9;
  --s3: #c2410c;
  --s4: #0e8f8a;
  --s5: #8a4fd8;
  --s6: #3e8f2a;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --s1: #f2b632;
    --s2: #8ea2ff;
    --s3: #f27b45;
    --s4: #3cc7c1;
    --s5: #b48bf2;
    --s6: #7cc95e;
  }
}
:root[data-theme="dark"] {
  --s1: #f2b632;
  --s2: #8ea2ff;
  --s3: #f27b45;
  --s4: #3cc7c1;
  --s5: #b48bf2;
  --s6: #7cc95e;
}
.an {
  display: grid;
  grid-template-columns: 290px minmax(0, 1fr);
  gap: 16px;
  align-items: start;
}
.srow {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 5px 12px;
  cursor: pointer;
  font-size: 12.5px;
}
.srow:hover {
  background: var(--surface-2);
}
.srow input {
  accent-color: var(--accent);
}
.srow .sw2 {
  width: 10px;
  height: 10px;
  border-radius: 2px;
  flex: none;
}
.srow .path {
  max-width: none;
  font-size: 11px;
}
.sgh {
  padding: 8px 12px 2px;
  font-size: 10.5px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--faint);
  display: flex;
  gap: 6px;
  align-items: center;
}
.types {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
  padding: 10px 14px;
  border-bottom: 1px solid var(--line);
}
.types button {
  display: inline-flex;
  gap: 6px;
  align-items: center;
  border: 1px solid var(--line);
  background: var(--surface-2);
  border-radius: 6px;
  padding: 5px 10px;
  color: var(--muted);
}
.types button[aria-pressed="true"] {
  border-color: var(--accent);
  background: var(--accent-soft);
  color: var(--ink);
  font-weight: 500;
}
.panel-lbl {
  display: flex;
  gap: 8px;
  align-items: center;
  padding: 8px 14px 0;
  font-size: 12px;
  color: var(--muted);
}
.lg {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  padding: 6px 14px 12px;
  font-size: 12px;
}
.lg button {
  display: inline-flex;
  gap: 6px;
  align-items: center;
  border: 0;
  background: none;
  padding: 2px 4px;
  border-radius: 4px;
  color: var(--ink);
}
.lg button[aria-pressed="false"] {
  opacity: 0.45;
  text-decoration: line-through;
}
.lg i {
  width: 14px;
  height: 3px;
  border-radius: 2px;
  display: inline-block;
}
.heat {
  display: grid;
  grid-template-columns: 70px repeat(24, minmax(0, 1fr));
  gap: 2px;
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--faint);
}
.heat .c {
  aspect-ratio: 1/1;
  border-radius: 2px;
  min-height: 12px;
}
.heat .c.g {
  background: repeating-linear-gradient(
    135deg,
    var(--hatch) 0 2px,
    transparent 2px 4px
  );
}
.cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 12px;
}
.rc {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 12px;
  display: grid;
  gap: 6px;
  align-content: start;
  background: var(--surface);
  text-align: left;
}
.rc h3 {
  margin: 0;
  font-size: 13.5px;
  font-weight: 600;
}
.rc p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
}
button.rc {
  cursor: pointer;
  font: inherit;
  color: inherit;
}
button.rc[aria-pressed="true"] {
  border-color: var(--accent);
  box-shadow: 0 0 0 1px var(--accent);
}
.a4 {
  background: #fff;
  color: #17202b;
  border-radius: 4px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);
  padding: 22px;
  aspect-ratio: 1/1.414;
  max-width: 420px;
  display: grid;
  gap: 10px;
  align-content: start;
  font-size: 10.5px;
  margin: auto;
}
.a4 h4 {
  margin: 0;
  font-size: 14px;
}
.a4 .k {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
}
.a4 .k div {
  border: 1px solid #d6dce2;
  border-radius: 4px;
  padding: 6px;
}
.a4 .k b {
  display: block;
  font-family: var(--font-mono);
  font-size: 13px;
}
.a4 .ft {
  margin-top: auto;
  border-top: 1px solid #d6dce2;
  padding-top: 6px;
  color: #56626f;
  font-size: 9px;
}
.funnel {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 6px;
}
.funnel div {
  border: 1px solid var(--line);
  border-radius: 7px;
  padding: 8px 10px;
  display: grid;
  gap: 2px;
}
.funnel b {
  font-family: var(--font-mono);
  font-size: 17px;
  font-weight: 500;
}
.conf {
  display: inline-flex;
  gap: 2px;
}
.conf i {
  width: 6px;
  height: 10px;
  border-radius: 1px;
  background: var(--line-2);
}
.conf i.on {
  background: var(--ok);
}
.flow3 {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 22px minmax(0, 1fr) 22px minmax(0, 1fr);
  gap: 6px;
  align-items: stretch;
}
.flow3 > .arr {
  display: grid;
  place-items: center;
  color: var(--faint);
}
.blk {
  border: 1px solid var(--line-2);
  border-radius: 8px;
  padding: 10px;
  display: grid;
  gap: 8px;
  align-content: start;
  background: var(--surface-2);
}
.blk > .eyebrow {
  display: flex;
  gap: 6px;
  align-items: center;
}
.cond {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 7px 9px;
  display: grid;
  gap: 2px;
}
.cond b {
  font-weight: 500;
}
.cond .and {
  font-size: 10.5px;
  color: var(--faint);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.addc {
  border: 1px dashed var(--line-2);
  background: none;
  border-radius: 6px;
  padding: 6px;
  color: var(--muted);
  font-size: 12px;
}
.modes {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 6px;
}
.modes button {
  border: 1px solid var(--line-2);
  background: var(--surface);
  border-radius: 7px;
  padding: 8px 10px;
  text-align: left;
  display: grid;
  gap: 2px;
}
.modes button small {
  color: var(--muted);
  font-size: 11.5px;
}
.modes button[aria-pressed="true"] {
  border-color: var(--accent);
  background: var(--accent-soft);
}
.safe {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
  gap: 8px;
}
.safe .field select,
.safe .field input {
  width: 100%;
}
.check {
  display: grid;
  grid-template-columns: 22px 1fr;
  gap: 8px;
  padding: 8px 0;
  border-bottom: 1px solid var(--line);
}
.check:last-child {
  border-bottom: 0;
}
.cal {
  display: grid;
  grid-template-columns: 200px minmax(0, 1fr);
  gap: 6px 10px;
  align-items: center;
  font-size: 12px;
}
.cal .band {
  position: relative;
  height: 18px;
  background: var(--surface-2);
  border-radius: 3px;
  overflow: hidden;
}
.cal .band i {
  position: absolute;
  top: 2px;
  bottom: 2px;
  border-radius: 2px;
}
.stepper {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
  padding: 0 18px 6px;
}
.stepper span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 11.5px;
  color: var(--faint);
  padding: 3px 8px;
  border-radius: 12px;
  border: 1px solid var(--line);
}
.stepper span.on {
  color: var(--ink);
  border-color: var(--accent);
  background: var(--accent-soft);
}
.stepper span.done {
  color: var(--ok);
  border-color: transparent;
  background: var(--ok-soft);
}
.tcard {
  border: 1px solid var(--line-2);
  border-radius: 8px;
  padding: 10px;
  background: var(--surface);
  text-align: left;
  display: grid;
  gap: 3px;
}
.tcard[aria-pressed="true"] {
  border-color: var(--accent);
  background: var(--accent-soft);
}
.tcard small {
  color: var(--muted);
}
.chkrow {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  padding: 10px 14px;
  border-bottom: 1px solid var(--line);
  align-items: start;
}
.chkrow:last-child {
  border-bottom: 0;
}
.chkrow .res {
  font-size: 12px;
  color: var(--muted);
}
.tri {
  display: inline-flex;
  border: 1px solid var(--line-2);
  border-radius: 6px;
  overflow: hidden;
}
.tri button {
  border: 0;
  background: var(--surface);
  padding: 4px 8px;
  font-size: 12px;
  color: var(--muted);
  border-right: 1px solid var(--line);
}
.tri button:last-child {
  border-right: 0;
}
.tri button[aria-pressed="true"].ok {
  background: var(--ok-soft);
  color: var(--ok);
}
.tri button[aria-pressed="true"].warn {
  background: var(--warn-soft);
  color: var(--warn);
}
.tri button[aria-pressed="true"].na {
  background: var(--sunken);
  color: var(--ink);
}
.progress {
  height: 6px;
  border-radius: 3px;
  background: var(--sunken);
  overflow: hidden;
}
.progress i {
  display: block;
  height: 6px;
  background: var(--ok);
}
.av {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 11.5px;
  font-weight: 600;
  background: var(--accent-soft);
  color: var(--accent);
  flex: none;
}
.av.ext {
  background: var(--warn-soft);
  color: var(--warn);
}
.av.grp {
  background: var(--sunken);
  color: var(--muted);
  border-radius: 8px;
}
.caps {
  display: inline-flex;
  gap: 3px;
  flex-wrap: wrap;
}
.cap {
  display: inline-grid;
  place-items: center;
  width: 20px;
  height: 20px;
  border-radius: 4px;
  background: var(--surface-2);
  color: var(--line-2);
  border: 1px solid var(--line);
}
.cap.on {
  background: var(--accent-soft);
  color: var(--accent);
  border-color: transparent;
}
.cap.part {
  background: var(--surface);
  color: var(--accent);
  border: 1px dashed var(--accent-line);
}
.cap svg.i {
  width: 12px;
  height: 12px;
}
.mx td,
.mx th {
  text-align: center;
}
.mx td:first-child,
.mx th:first-child {
  text-align: left;
}
.bottom-nav {
  display: none;
}
@media (max-width: 1180px) {
  .g-2.g-2s {
    grid-template-columns: minmax(0, 1fr);
  }
  .flow3 {
    grid-template-columns: minmax(0, 1fr);
  }
  .flow3 > .arr {
    transform: rotate(90deg);
  }
  .modes {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .an {
    grid-template-columns: minmax(0, 1fr);
  }
  .funnel {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .g-2 {
    grid-template-columns: minmax(0, 1fr);
  }
  .res,
  .res.list {
    grid-template-columns: minmax(0, 1fr);
  }
}
@media (max-width: 820px) {
  .app {
    grid-template-columns: minmax(0, 1fr);
  }
  .rail {
    display: none;
  }
  .ctx {
    padding: 8px 16px;
  }
  .ctx-right {
    margin-left: 0;
    width: 100%;
  }
  .work {
    padding: 14px 16px calc(80px + env(safe-area-inset-bottom, 0px));
  }
  .g-2e {
    grid-template-columns: minmax(0, 1fr);
  }
  .bottom-nav {
    display: flex;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 20;
    background: var(--surface);
    border-top: 1px solid var(--line);
    padding: 6px max(8px, env(safe-area-inset-right, 0px))
      calc(6px + env(safe-area-inset-bottom, 0px))
      max(8px, env(safe-area-inset-left, 0px));
    justify-content: space-around;
  }
  .bottom-nav button {
    border: 0;
    background: none;
    display: grid;
    justify-items: center;
    gap: 2px;
    font-size: 10.5px;
    color: var(--muted);
    padding: 4px 6px;
    min-width: 56px;
  }
  .bottom-nav button[aria-current="page"] {
    color: var(--accent);
  }
  .bottom-nav svg.i {
    width: 20px;
    height: 20px;
  }
  .mob-role {
    display: flex !important;
  }
  .timeline li {
    grid-template-columns: 70px 14px 1fr;
  }
  .timeline li::before {
    left: 76px;
  }
  .pop.right {
    left: 0;
    right: auto;
  }
  /* kompaktowa belka kontekstu: zakres · okres · tryb */
  .ctx {
    gap: 6px;
    padding: 8px max(12px, env(safe-area-inset-right, 0px)) 8px
      max(12px, env(safe-area-inset-left, 0px));
  }
  .space,
  .qseg,
  .live,
  .rng [data-shift],
  .crumbs .sep,
  .crumbs button:not(.cur):not(.pick) {
    display: none;
  }
  .cw {
    flex: 1 1 auto;
  }
  .crumbs {
    flex-wrap: nowrap;
  }
  .crumbs .cur {
    max-width: 44vw;
    overflow: hidden;
    text-overflow: ellipsis;
    font-size: 15px;
    font-weight: 600;
    padding-left: 0;
  }
  .ctx-right {
    width: auto;
    flex: 1 1 100%;
    gap: 6px;
    flex-wrap: nowrap;
    min-width: 0;
  }
  .ctx-right .cw {
    flex: 1 1 auto;
    min-width: 0;
  }
  .ctx-right .cw:has(.bell) {
    flex: 0 0 auto;
  }
  .ctx-right .cw .rng {
    display: flex;
    min-width: 0;
    max-width: 100%;
  }
  .ctx-right .rng .lbl {
    min-width: 0;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
  }
  .bell .badge {
    top: -5px;
    right: -4px;
  }
  .rng {
    width: 100%;
  }
  .rng .lbl {
    border: 0;
    flex: 1;
    justify-content: center;
    font-size: 11.5px;
  }
  .ctx-right > .seg button {
    padding: 5px 8px;
    font-size: 12px;
  }
  .pop,
  .pop.right {
    position: fixed;
    left: 12px;
    right: 12px;
    top: calc(96px + env(safe-area-inset-top, 0px));
    width: auto;
    max-height: calc(100vh - 190px);
    overflow: auto;
  }
  .banner {
    padding: 6px 12px;
    font-size: 12px;
  }
  /* obszar roboczy */
  .ph h1 {
    font-size: 20px;
  }
  .ph .acts {
    margin-left: 0;
    width: 100%;
  }
  .ph .acts .btn {
    flex: 1 1 auto;
    justify-content: center;
  }
  .g-kpi {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }
  .kpi {
    padding: 10px 12px;
  }
  .kpi .val {
    font-size: 18px;
  }
  .card-h {
    padding: 10px 12px;
  }
  .card-b {
    padding: 12px;
  }
  .note {
    padding: 8px 12px;
  }
  .an > section:first-child {
    order: 2;
  }
  .an > div {
    order: 1;
  }
  .types {
    padding: 8px 12px;
    overflow-x: auto;
    flex-wrap: nowrap;
  }
  .types button {
    white-space: nowrap;
  }
  .tabs {
    padding: 0 6px;
  }
  .axes {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .modes {
    grid-template-columns: minmax(0, 1fr);
  }
  .kv {
    grid-template-columns: minmax(0, 1fr);
  }
  .kv dt {
    margin-top: 6px;
  }
  .heat {
    grid-template-columns: 44px repeat(24, minmax(0, 1fr));
    font-size: 9px;
  }
  .cal {
    grid-template-columns: minmax(0, 1fr);
  }
  .chkrow {
    grid-template-columns: minmax(0, 1fr);
  }
  .funnel {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .dlg {
    max-height: calc(100vh - 24px);
  }
  .ovl {
    padding: 12px;
    align-items: end;
  }
  .ovl.sheet .nav button {
    padding: 10px;
  }
  .toast {
    bottom: calc(76px + env(safe-area-inset-bottom, 0px));
  }
  .chart text {
    font-size: 13px;
  }
  #detail {
    scroll-margin-top: 100px;
  }
  .ph .sub {
    font-size: 12.5px;
  }
}
.mob-role {
  display: none;
  gap: 6px;
  align-items: center;
  font-size: 12px;
  color: var(--muted);
}
.mob-role select {
  padding: 4px 6px;
  border: 1px solid var(--line-2);
  border-radius: 6px;
  background: var(--surface-2);
}
/* mapy: minimalny zestaw reguł Leaflet (biblioteka bez arkusza z CDN) + własne pinezki */
.mapwrap {
  position: relative;
}
.mapbox {
  position: relative;
  border-radius: var(--r);
  overflow: hidden;
  background: var(--surface-2);
  border: 1px solid var(--line);
  z-index: 0;
}
.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;
  -webkit-tap-highlight-color: transparent;
  font: 12px/1.4 var(--font-ui);
  outline-offset: 1px;
}
.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
  touch-action: none;
}
.leaflet-tile,
.leaflet-marker-icon {
  user-select: none;
  -webkit-user-drag: none;
}
.leaflet-tile {
  visibility: hidden;
}
.leaflet-tile-loaded {
  visibility: inherit;
}
.leaflet-container img.leaflet-tile {
  max-width: none !important;
  max-height: none !important;
  width: auto;
  padding: 0;
}
.leaflet-pane {
  z-index: 400;
}
.leaflet-tile-pane {
  z-index: 200;
}
.leaflet-overlay-pane {
  z-index: 400;
}
.leaflet-marker-pane {
  z-index: 600;
}
.leaflet-tooltip-pane {
  z-index: 650;
}
.leaflet-popup-pane {
  z-index: 700;
}
.leaflet-pane > svg path,
.leaflet-tile-container {
  pointer-events: none;
}
.leaflet-pane > svg path.leaflet-interactive {
  pointer-events: auto;
}
.leaflet-interactive {
  cursor: pointer;
}
.leaflet-grab {
  cursor: grab;
}
.leaflet-dragging .leaflet-grab {
  cursor: grabbing;
}
.leaflet-zoom-animated {
  transform-origin: 0 0;
}
.leaflet-zoom-anim .leaflet-zoom-animated {
  transition: transform 0.25s cubic-bezier(0, 0, 0.25, 1);
}
.leaflet-zoom-anim .leaflet-zoom-hide {
  visibility: hidden;
}
.leaflet-control {
  position: relative;
  z-index: 800;
  pointer-events: auto;
  float: left;
  clear: both;
}
.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-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;
}
.leaflet-bar {
  border: 1px solid var(--line-2);
  border-radius: 6px;
  overflow: hidden;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
}
.leaflet-bar a {
  display: block;
  width: 30px;
  height: 30px;
  line-height: 30px;
  text-align: center;
  text-decoration: none;
  background: var(--surface);
  color: var(--ink);
  font-size: 16px;
}
.leaflet-bar a + a {
  border-top: 1px solid var(--line);
}
.leaflet-bar a:hover {
  background: var(--surface-2);
}
.leaflet-bar a.leaflet-disabled {
  color: var(--faint);
  cursor: default;
}
.leaflet-control-attribution {
  background: color-mix(in srgb, var(--surface) 82%, transparent);
  margin: 0 !important;
  padding: 1px 6px;
  font-size: 10px;
  color: var(--muted);
}
.leaflet-control-attribution a {
  color: var(--muted);
}
.leaflet-popup {
  position: absolute;
  text-align: center;
  margin-bottom: 20px;
}
.leaflet-popup-content-wrapper {
  text-align: left;
  border-radius: 8px;
  background: var(--surface);
  color: var(--ink);
  border: 1px solid var(--line-2);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
}
.leaflet-popup-content {
  margin: 10px 12px;
  font-size: 12.5px;
  line-height: 1.45;
  min-width: 180px;
}
.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: 14px;
  height: 14px;
  margin: -8px auto 0;
  transform: rotate(45deg);
  background: var(--surface);
  border: 1px solid var(--line-2);
}
.leaflet-popup-close-button {
  position: absolute;
  top: 2px;
  right: 4px;
  width: 22px;
  height: 22px;
  font: 16px/22px var(--font-ui);
  color: var(--faint);
  text-decoration: none;
  text-align: center;
}
.leaflet-tooltip {
  position: absolute;
  padding: 3px 7px;
  background: var(--surface);
  color: var(--ink);
  border: 1px solid var(--line-2);
  border-radius: 5px;
  white-space: nowrap;
  pointer-events: none;
  font-size: 11.5px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}
.leaflet-fade-anim .leaflet-popup {
  opacity: 0;
  transition: opacity 0.2s linear;
}
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
  opacity: 1;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .leaflet-tile-pane {
    filter: invert(1) hue-rotate(180deg) brightness(0.85) contrast(0.9);
  }
}
:root[data-theme="dark"] .leaflet-tile-pane {
  filter: invert(1) hue-rotate(180deg) brightness(0.85) contrast(0.9);
}
.mapbox.tiles-off {
  background-color: var(--surface-2);
  background-image:
    linear-gradient(var(--line) 1px, transparent 1px),
    linear-gradient(90deg, var(--line) 1px, transparent 1px);
  background-size: 48px 48px;
}
.mapnote {
  background: var(--surface);
  border: 1px solid var(--line-2);
  border-radius: 6px;
  padding: 5px 8px;
  font-size: 11px;
  color: var(--muted);
  max-width: min(330px, calc(100vw - 80px));
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.maplbl {
  font-size: 11px;
  color: var(--faint);
  font-weight: 500;
  white-space: nowrap;
  text-shadow: 0 0 3px var(--surface-2);
}
.pin {
  display: block;
  width: var(--s);
  height: var(--s);
  border-radius: 50%;
  background: var(--c);
  border: 2px solid var(--surface);
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.35);
  position: relative;
  opacity: 0.92;
}
.pin.warn {
  outline: 2.5px dashed var(--warn);
  outline-offset: 2px;
}
.pin.crit {
  outline: 2.5px solid var(--crit);
  outline-offset: 2px;
}
.pin.dim {
  opacity: 0.4;
}
.pin.sel {
  outline: 3px solid var(--accent);
  outline-offset: 3px;
}
.pin i {
  position: absolute;
  top: calc(100% + 4px);
  left: 50%;
  transform: translateX(-50%);
  font-style: normal;
  font-size: 11px;
  font-weight: 500;
  color: var(--ink);
  white-space: nowrap;
  background: color-mix(in srgb, var(--surface) 86%, transparent);
  padding: 0 4px;
  border-radius: 3px;
  pointer-events: none;
}
.clu {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--ink);
  color: var(--bg);
  border: 3px solid var(--surface);
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.35);
  font-family: var(--font-mono);
  font-size: 12px;
}
.clu.warn {
  box-shadow: 0 0 0 3px var(--warn);
}
.clu.crit {
  box-shadow: 0 0 0 3px var(--crit);
}
.mpop b {
  font-weight: 600;
}
.mpop .row2 {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin: 6px 0;
}
.mpop .btn {
  margin-top: 6px;
}
.maptools {
  display: flex;
  gap: 8px 12px;
  flex-wrap: wrap;
  align-items: center;
  padding: 10px 14px;
  border-bottom: 1px solid var(--line);
}
.maptools .eyebrow {
  margin-right: -4px;
}
.mapgrid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 300px;
  gap: 0;
}
.mapgrid > .side {
  border-left: 1px solid var(--line);
  max-height: 520px;
  overflow: auto;
}
@media (max-width: 1000px) {
  .mapgrid {
    grid-template-columns: minmax(0, 1fr);
  }
  .mapgrid > .side {
    border-left: 0;
    border-top: 1px solid var(--line);
    max-height: none;
  }
}
/* kreatory */
.dlg.wide {
  width: min(820px, 100%);
}
.wzbar {
  list-style: none;
  margin: 0;
  padding: 0 18px 10px;
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
  border-bottom: 1px solid var(--line);
}
.wzbar li button {
  border: 1px solid var(--line);
  background: var(--surface-2);
  color: var(--faint);
  border-radius: 999px;
  padding: 3px 10px;
  font-size: 12px;
}
.wzbar li.cur button {
  border-color: var(--accent);
  background: var(--accent-soft);
  color: var(--ink);
  font-weight: 500;
}
.wzbar li.done button {
  color: var(--ok);
  background: var(--ok-soft);
  border-color: transparent;
}
.wzbar li button:disabled {
  cursor: default;
}
.tcards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 8px;
}
.tcards label {
  display: flex;
  gap: 8px;
  align-items: center;
  border: 1px solid var(--line-2);
  border-radius: 8px;
  padding: 8px 10px;
  cursor: pointer;
}
.tcards label:has(input:checked) {
  border-color: var(--accent);
  background: var(--accent-soft);
}
.tcards input {
  accent-color: var(--accent);
}
.field textarea {
  border: 1px solid var(--line-2);
  border-radius: 6px;
  padding: 6px 8px;
  background: var(--surface);
  font: inherit;
  color: inherit;
  min-height: 64px;
  resize: vertical;
}
.sumtbl td:first-child {
  color: var(--muted);
  width: 38%;
}
/* powiadomienia */
.bell {
  position: relative;
  border: 1px solid var(--line-2);
  background: var(--surface-2);
  border-radius: 6px;
  padding: 5px 7px;
  display: grid;
  place-items: center;
  color: var(--muted);
}
.bell[aria-expanded="true"] {
  border-color: var(--accent);
  background: var(--accent-soft);
  color: var(--ink);
}
.bell .badge {
  position: absolute;
  top: -6px;
  right: -6px;
  min-width: 17px;
  height: 17px;
  border-radius: 9px;
  background: var(--crit);
  color: #fff;
  font-size: 10.5px;
  font-family: var(--font-mono);
  display: grid;
  place-items: center;
  padding: 0 4px;
  border: 2px solid var(--surface);
}
.pop.notif {
  width: min(420px, calc(100vw - 24px));
  padding: 0;
  gap: 0;
}
.np-h {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px 6px;
  flex-wrap: wrap;
}
.np-h h3 {
  font-size: 14px;
  color: var(--ink);
  font-weight: 600;
}
.nlist {
  list-style: none;
  margin: 0;
  padding: 0;
  max-height: min(460px, 60vh);
  overflow: auto;
  border-top: 1px solid var(--line);
}
.nlist li + li {
  border-top: 1px solid var(--line);
}
.ni {
  display: grid;
  grid-template-columns: 12px 1fr;
  gap: 8px;
  width: 100%;
  text-align: left;
  border: 0;
  background: none;
  padding: 10px 12px;
}
.ni:hover {
  background: var(--surface-2);
}
.ni .nd {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  margin-top: 5px;
  background: transparent;
}
.ni.unread .nd {
  background: var(--accent);
}
.ni.unread b {
  font-weight: 600;
}
.ni b {
  font-weight: 500;
}
.ni .k-crit {
  color: var(--crit);
}
.ni .k-warn {
  color: var(--warn);
}
.ni .k-ok {
  color: var(--ok);
}
.ni .k-acc {
  color: var(--accent);
}
.np-f {
  border-top: 1px solid var(--line);
  padding: 6px 8px;
  display: flex;
  justify-content: space-between;
  gap: 6px;
  flex-wrap: wrap;
}
/* dokumentacja i pliki */
.dropzone {
  display: flex;
  gap: 10px;
  align-items: center;
  border: 1.5px dashed var(--line-2);
  border-radius: 8px;
  padding: 12px 14px;
  cursor: pointer;
  color: var(--muted);
  background: var(--surface-2);
}
.dropzone:hover,
.dropzone.over {
  border-color: var(--accent);
  background: var(--accent-soft);
  color: var(--ink);
}
.gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 10px;
}
.fthumb {
  display: grid;
  gap: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  overflow: hidden;
  background: var(--surface);
  padding: 0;
  text-align: left;
  min-width: 0;
}
.fthumb:hover {
  border-color: var(--faint);
}
.fthumb .fimg {
  display: block;
  aspect-ratio: 4/3;
  overflow: hidden;
}
.fthumb .fcap {
  display: grid;
  gap: 2px;
  padding: 6px 8px;
  font-size: 12px;
  min-width: 0;
}
.fthumb .fcap b {
  font-weight: 500;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.fthumb.sm {
  width: 64px;
  height: 48px;
  display: inline-block;
  vertical-align: middle;
}
.ph-thumb {
  display: grid;
  place-items: center;
  align-content: center;
  gap: 4px;
  width: 100%;
  height: 100%;
  min-height: 40px;
  color: var(--muted);
  font-size: 10.5px;
}
.ph-thumb.img {
  background: linear-gradient(
    160deg,
    var(--sunken),
    var(--surface-2) 60%,
    var(--line)
  );
}
.ph-thumb.doc {
  background: repeating-linear-gradient(
    0deg,
    var(--surface-2) 0 9px,
    var(--line) 9px 10px
  );
}
.ph-thumb svg {
  width: 22px;
  height: 22px;
}
.fthumb.sm .ph-thumb svg {
  width: 16px;
  height: 16px;
}
.fthumb.sm .ph-thumb small {
  display: none;
}
.uprow {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr);
  gap: 12px;
  align-items: start;
  border-bottom: 1px solid var(--line);
  padding-bottom: 12px;
}
.uprow .fthumb.sm {
  width: 72px;
  height: 56px;
}
/* znaczniki punktów na rzucie-mapie */
.pmap-icon {
  background: none;
  border: 0;
}
.pmap-icon:hover,
.pmap-icon:focus-within {
  /* The label under the pointer comes to the front (Leaflet sets marker z-index inline). */
  z-index: 10000 !important;
}
.pmap {
  position: relative;
  width: 18px;
  height: 18px;
}
.pmap > i {
  display: block;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  border: 2px solid var(--surface);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);
}
.pmap.sel > i {
  outline: 2px solid var(--ink);
  outline-offset: 1px;
}
.pmap.dim {
  opacity: 0.4;
}
.pmap-tag {
  position: absolute;
  left: 22px;
  top: -12px;
  display: grid;
  background: var(--surface);
  border: 1px solid var(--line-2);
  border-radius: 5px;
  padding: 3px 8px;
  white-space: nowrap;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
}
.pmap-tag.stale {
  border-style: dashed;
}
.pmap-tag.alarm {
  border-color: var(--crit);
}
.pmap-tag small {
  color: var(--muted);
  font-size: 11px;
}
.pmap-tag b {
  font-family: var(--font-mono);
  font-weight: 500;
  font-size: 12px;
  color: var(--ink);
}
/* raporty: strona dokumentu zawsze w jasnych barwach, także w ciemnym motywie */
.paper {
  --surface: #fff;
  --surface-2: #f5f7f9;
  --sunken: #e6eaee;
  --line: #d6dce2;
  --line-2: #c3cbd3;
  --ink: #17202b;
  --muted: #56626f;
  --faint: #8692a0;
  --accent: #2d47c9;
  --accent-soft: #e3e8fa;
  --ok: #1e7f4a;
  --warn: #9a6100;
  --crit: #b42828;
  --band: rgba(45, 71, 201, 0.14);
  --m-el: #d69400;
  --m-pv: #3e8f2a;
  --hatch: #b9c1ca;
  --anom: rgba(214, 148, 0, 0.16);
  color-scheme: light;
  background: #fff;
  color: var(--ink);
  max-width: 820px;
  margin: 0 auto;
  padding: 34px 40px;
  border-radius: 4px;
  box-shadow: 0 4px 18px rgba(0, 0, 0, 0.18);
  display: grid;
  gap: 16px;
  font-size: 12px;
}
.paper header {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  color: var(--muted);
  font-size: 11px;
  border-bottom: 2px solid var(--ink);
  padding-bottom: 8px;
}
.paper h4 {
  margin: 0;
  font-size: 20px;
  font-weight: 600;
}
.paper .pk {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}
.paper .pk div {
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 8px 10px;
  display: grid;
  gap: 2px;
  color: var(--muted);
  font-size: 11px;
}
.paper .pk b {
  font-family: var(--font-mono);
  font-size: 18px;
  color: var(--ink);
  font-weight: 500;
}
.paper .psec h5 {
  margin: 0 0 6px;
  font-size: 12.5px;
  font-weight: 600;
}
.paper .tbl {
  font-size: 11.5px;
}
.paper footer {
  border-top: 1px solid var(--line);
  padding-top: 8px;
  color: var(--muted);
  font-size: 10px;
}
.paper .pph {
  height: 90px;
  border: 1px dashed var(--line-2);
  border-radius: 6px;
  display: grid;
  place-items: center;
  color: var(--faint);
}
.paper.mini {
  padding: 20px;
  max-width: 640px;
}
.paper.mini h4 {
  font-size: 16px;
}
.paperwrap {
  background: var(--sunken);
  border-radius: var(--r);
  padding: 20px;
  min-width: 0;
}
@media (max-width: 640px) {
  .paper {
    padding: 14px 10px;
  }
  .paper .pk {
    grid-template-columns: minmax(0, 1fr);
  }
  .paperwrap {
    padding: 6px;
  }
}
@media print {
  .noprint {
    display: none !important;
  }
  .paperwrap {
    background: none;
    padding: 0;
  }
  .rail,
  .ctx,
  #banner,
  #bnav,
  .tabs,
  .ph,
  .banner,
  .toast,
  #layer {
    display: none !important;
  }
  .app {
    display: block;
  }
  body {
    background: #fff;
  }
  .paper {
    box-shadow: none;
    max-width: none;
  }
}
/* scenariusze */
.scnwrap {
  display: grid;
  gap: 8px;
}
.scn {
  display: grid;
  gap: 8px;
}
.stp {
  border: 1px solid var(--line-2);
  border-left: 4px solid var(--c);
  border-radius: 7px;
  background: var(--surface);
  padding: 8px 10px;
  display: grid;
  gap: 6px;
  min-width: 0;
}
.stp.trig {
  background: var(--surface-2);
}
.stp .sh {
  display: flex;
  gap: 8px;
  align-items: center;
  color: var(--c);
}
.stp .sh b.k {
  font-size: 10.5px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-weight: 600;
}
.stp .sh .tools {
  margin-left: auto;
  display: flex;
  gap: 2px;
  color: var(--muted);
}
.stp .sh .tools .btn {
  padding: 2px 5px;
}
.br {
  display: grid;
  gap: 8px;
  margin-left: 6px;
  padding: 4px 0 2px 12px;
  border-left: 2px solid var(--ok);
}
.br.no {
  border-left-color: var(--line-2);
}
.br > .bl {
  font-size: 11px;
  color: var(--muted);
  font-weight: 500;
}
.addstep {
  border: 1px dashed var(--line-2);
  background: none;
  border-radius: 6px;
  padding: 4px 8px;
  color: var(--muted);
  font-size: 12px;
  justify-self: start;
  display: inline-flex;
  gap: 4px;
  align-items: center;
}
.addstep:hover {
  border-color: var(--accent);
  color: var(--ink);
}
.cnd {
  display: inline-flex;
  gap: 6px;
  flex-wrap: wrap;
  align-items: center;
}
.kind {
  font-size: 10px;
  border-radius: 3px;
  padding: 1px 5px;
  background: var(--surface-2);
  border: 1px solid var(--line);
  color: var(--muted);
  margin: 0 4px;
}
.inst {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 10px 12px;
  display: grid;
  gap: 8px;
}
.trace {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 4px;
}
.trace li {
  display: grid;
  grid-template-columns: 44px 110px minmax(0, 1fr);
  gap: 8px;
  font-size: 12px;
  padding-left: 10px;
  border-left: 3px solid var(--ok);
}
.trace li.run {
  border-left-color: var(--accent);
}
.trace li.crit {
  border-left-color: var(--crit);
}
.trace li.warn {
  border-left-color: var(--warn);
}
.trace time {
  font-family: var(--font-mono);
  color: var(--faint);
  font-size: 11px;
}
.trace b {
  font-weight: 500;
}
@media (max-width: 640px) {
  .trace li {
    grid-template-columns: 40px minmax(0, 1fr);
  }
  .trace li span {
    grid-column: 2;
  }
}
.navw {
  display: grid;
  gap: 2px;
  padding: 2px 0 6px;
}
.nav-s {
  width: 100%;
  height: auto;
  display: block;
  cursor: pointer;
  touch-action: none;
}
.tip .tq {
  color: var(--faint);
  font-size: 11px;
}
#gtip {
  max-width: 280px;
}
.hctl {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 12px;
}
.dstrip {
  position: relative;
  height: 16px;
  border-radius: 4px;
  background: var(--surface-2);
  border: 1px solid var(--line);
  overflow: hidden;
  margin-top: 4px;
}
.dstrip span {
  position: absolute;
  top: 0;
  bottom: 0;
}
.dstrip span.cheap {
  background: var(--ok-soft);
}
.dstrip i {
  position: absolute;
  top: 4px;
  bottom: 4px;
  border-radius: 3px;
  opacity: 0.85;
}
.hsch {
  display: grid;
  gap: 2px;
}
.hsch.off {
  opacity: 0.5;
}
.dsc {
  display: flex;
  justify-content: space-between;
  font-family: var(--font-mono);
  margin-top: -6px;
}
/* asystent */
.asst {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  width: min(420px, 100vw);
  z-index: 45;
  background: var(--surface);
  border-left: 1px solid var(--line-2);
  box-shadow: -12px 0 32px rgba(0, 0, 0, 0.18);
  display: flex;
  flex-direction: column;
}
.asst-h {
  display: flex;
  gap: 8px;
  align-items: center;
  padding: 12px 14px;
  border-bottom: 1px solid var(--line);
}
.asst-h > svg {
  color: var(--accent);
}
.asst-ctx {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
  align-items: center;
  padding: 8px 14px;
  border-bottom: 1px solid var(--line);
  background: var(--surface-2);
}
.asst-b {
  flex: 1;
  overflow: auto;
  padding: 14px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.am {
  max-width: 92%;
  padding: 9px 11px;
  border-radius: 10px;
  font-size: 13px;
  line-height: 1.5;
}
.am.me {
  align-self: flex-end;
  background: var(--accent);
  color: var(--accent-ink);
  border-bottom-right-radius: 3px;
}
.am.bot {
  align-self: flex-start;
  background: var(--surface-2);
  border: 1px solid var(--line);
  border-bottom-left-radius: 3px;
}
.asrc {
  display: grid;
  gap: 3px;
  margin-top: 8px;
  padding-top: 6px;
  border-top: 1px solid var(--line);
  font-size: 11.5px;
  color: var(--muted);
}
.asrc span {
  display: flex;
  gap: 5px;
  align-items: center;
}
.asrc svg.i {
  width: 13px;
  height: 13px;
}
.aacts {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 8px;
}
.asugg {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  margin-top: 4px;
}
.asugg .btn {
  white-space: normal;
  text-align: left;
  height: auto;
}
.asst-f {
  display: flex;
  gap: 6px;
  padding: 10px 14px;
  border-top: 1px solid var(--line);
}
.asst-f input {
  flex: 1;
  min-width: 0;
  border: 1px solid var(--line-2);
  border-radius: 6px;
  padding: 7px 9px;
  background: var(--surface);
}
.asst-note {
  padding: 0 14px calc(10px + env(safe-area-inset-bottom, 0px));
}
.dots {
  color: var(--muted);
  font-style: italic;
}
.bell.asstb[aria-pressed="true"] {
  border-color: var(--accent);
  background: var(--accent-soft);
  color: var(--accent);
}
.i18nnote {
  border-color: var(--accent-line);
}
/* runda P2: wyszukiwanie, stany, logowanie, podgląd jako */
.srchb {
  display: flex;
  gap: 8px;
  align-items: center;
  width: 100%;
  border: 1px solid var(--line-2);
  background: var(--surface-2);
  border-radius: 7px;
  padding: 6px 9px;
  color: var(--muted);
  margin: 0 0 10px;
}
.srchb kbd {
  margin-left: auto;
  font: 11px var(--font-mono);
  border: 1px solid var(--line-2);
  border-radius: 4px;
  padding: 0 4px;
  color: var(--faint);
}
.srchb:hover {
  border-color: var(--faint);
  color: var(--ink);
}
.srch .search {
  margin: 14px 14px 6px;
}
.srl {
  list-style: none;
  margin: 0;
  padding: 0 8px 8px;
  max-height: min(460px, 60vh);
  overflow: auto;
}
.srl .sg {
  font-size: 10.5px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--faint);
  padding: 10px 8px 4px;
}
.sr {
  display: flex;
  gap: 10px;
  align-items: center;
  width: 100%;
  text-align: left;
  border: 0;
  background: none;
  padding: 7px 8px;
  border-radius: 6px;
}
.sr b {
  display: block;
  font-weight: 500;
}
.sr .hint {
  display: block;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sr.on,
.sr:hover {
  background: var(--accent-soft);
}
.sk {
  height: 12px;
  border-radius: 5px;
  background: linear-gradient(
    90deg,
    var(--sunken),
    var(--surface-2),
    var(--sunken)
  );
  background-size: 200% 100%;
  animation: skm 1.2s linear infinite;
  margin: 4px 0;
}
@keyframes skm {
  to {
    background-position: -200% 0;
  }
}
@media (prefers-reduced-motion: reduce) {
  .sk {
    animation: none;
  }
}
.stbox {
  text-align: center;
  justify-items: center;
  padding: 36px 20px;
}
.stbox > svg {
  width: 34px;
  height: 34px;
  color: var(--accent);
}
.stbox.err > svg {
  color: var(--crit);
}
.kpi.click {
  cursor: pointer;
}
.kpi.click:hover {
  border-color: var(--accent-line);
}
.banner.impb {
  background: var(--warn-soft);
  color: var(--ink);
  border: 1px solid var(--warn);
  border-radius: var(--r);
}
.banner.recon {
  background: var(--crit-soft);
  color: var(--ink);
  border-radius: var(--r);
}
body.loginmode .rail,
body.loginmode .ctx,
body.loginmode #banner,
body.loginmode #bnav,
body.loginmode .asst {
  display: none !important;
}
body.loginmode .app {
  grid-template-columns: minmax(0, 1fr);
}
.login {
  min-height: calc(100vh - 40px);
  display: grid;
  place-items: center;
}
.lcard {
  width: min(420px, 100%);
  padding: 24px;
  display: grid;
  gap: 12px;
}
.lor {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--faint);
  font-size: 12px;
}
.lor::before,
.lor::after {
  content: "";
  flex: 1;
  border-top: 1px solid var(--line);
}
.lprov {
  justify-content: center;
  font-weight: 500;
}
button.gr {
  width: 100%;
  border: 0;
  background: none;
  text-align: left;
  font: inherit;
  color: inherit;
  cursor: pointer;
  border-radius: 6px;
}
button.gr:hover {
  background: var(--surface-2);
}
#planPick {
  cursor: crosshair;
}
.pmk {
  position: absolute;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  transform: translate(-50%, -50%);
  border: 2px solid var(--surface);
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.35);
  padding: 0;
}
.pmk.big {
  width: auto;
  min-width: 24px;
  height: 24px;
  border-radius: 12px;
  padding: 0 7px;
  color: #fff;
  font: 600 11px var(--font-mono);
  display: grid;
  place-items: center;
  cursor: pointer;
}
.pmk i {
  font-style: normal;
}
/* sieć i autokonsumpcja */
.gridnow {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-weight: 500;
}
.gridnow b {
  font-size: 15px;
}
.gridnow.big b {
  font-size: 20px;
}
.gridnow span {
  font-size: 12px;
  font-weight: 400;
  color: var(--muted);
}
.gridnow.imp {
  color: var(--crit);
}
.gridnow.exp {
  color: var(--ok);
}
.gridnow svg.i {
  width: 17px;
  height: 17px;
}
.gday {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 12px;
}
.gday span {
  display: inline-flex;
  gap: 4px;
  align-items: center;
}
.gday .imp {
  color: var(--crit);
}
.gday .exp {
  color: var(--ok);
}
.gday svg.i {
  width: 13px;
  height: 13px;
}
.ecob {
  display: inline-flex;
  gap: 4px;
  align-items: center;
  font-size: 11.5px;
  border-radius: 999px;
  padding: 2px 8px;
  background: var(--surface-2);
  border: 1px solid var(--line);
  color: var(--muted);
  margin-top: 3px;
  width: max-content;
}
.ecob.eco {
  background: var(--ok-soft);
  color: var(--ok);
  border-color: transparent;
}
.ecob.part {
  background: var(--warn-soft);
  color: var(--warn);
  border-color: transparent;
}
.ecob svg.i {
  width: 13px;
  height: 13px;
}
.gridband {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 24px;
  align-items: center;
  padding: 12px 14px;
}
.gridband > div {
  display: grid;
  gap: 2px;
}
.gridband .btn {
  margin-left: auto;
}
.apvbar {
  display: flex;
  height: 30px;
  border-radius: 6px;
  overflow: hidden;
  margin-top: 6px;
  border: 1px solid var(--line);
}
.apvbar span {
  display: grid;
  place-items: center;
  color: #fff;
  font-size: 11px;
  white-space: nowrap;
  overflow: hidden;
  min-width: 3px;
}
.apvnow {
  display: flex;
  gap: 12px;
  align-items: center;
  flex-wrap: wrap;
  margin-top: 10px;
}
.apvl {
  list-style: none;
  margin: 0;
  padding: 0;
}
.apvl li {
  display: grid;
  grid-template-columns: 20px 24px minmax(0, 1fr) auto;
  gap: 10px;
  align-items: start;
  padding: 10px 14px;
  border-bottom: 1px solid var(--line);
  background: var(--surface);
}
.apvl li.off {
  opacity: 0.6;
}
.apvl li.over {
  box-shadow: inset 0 3px 0 var(--accent);
}
.apvh {
  cursor: grab;
  color: var(--faint);
  padding-top: 2px;
}
.apvn {
  font-size: 16px;
  color: var(--accent);
}
.apvb {
  display: flex;
  gap: 2px;
}
@media (max-width: 640px) {
  .apvl li {
    grid-template-columns: 20px minmax(0, 1fr);
  }
  .apvl li .apvn {
    display: none;
  }
  .apvb {
    grid-column: 2;
  }
}
.capw {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 10px 12px;
  display: grid;
  gap: 8px;
  margin-bottom: 10px;
  background: var(--surface);
}
.capw-h {
  display: flex;
  gap: 8px;
  align-items: baseline;
  flex-wrap: wrap;
}
.capw-h b {
  font-weight: 600;
}
.capw-a {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 8px;
}
.capw-a > div {
  display: grid;
  gap: 1px;
  padding: 6px 8px;
  border-radius: 6px;
  background: var(--surface-2);
}
.capw-a b {
  font-size: 15px;
  font-weight: 500;
}
.capw-c {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
/* Product additions on top of theme.css (the prototype's visual system). Same tokens, no new colours. */

body {
  margin: 0;
}
a {
  color: var(--accent);
}
a.btn {
  text-decoration: none;
  color: inherit;
}
a.btn.primary {
  color: var(--accent-ink);
}
h1,
h2,
h3 {
  margin: 0;
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}
.muted {
  color: var(--muted);
}

/* Navigation links behave like the prototype's nav buttons. */
.nav a {
  display: flex;
  gap: 10px;
  align-items: center;
  padding: 7px 10px;
  border-radius: 6px;
  color: var(--muted);
  text-decoration: none;
}
.nav a:hover {
  background: var(--surface-2);
  color: var(--ink);
}
.nav a[aria-current="page"] {
  background: var(--accent-soft);
  color: var(--ink);
  font-weight: 500;
}
.nav a[aria-current="page"] svg {
  color: var(--accent);
}
.nav .sect {
  font-size: 10.5px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--faint);
  padding: 14px 10px 4px;
}
.who .user {
  display: flex;
  gap: 6px;
  align-items: center;
  justify-content: space-between;
  min-width: 0;
}
.who .user span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.who form {
  margin: 0;
}
@media (max-width: 820px) {
  .bottom-nav a {
    display: grid;
    justify-items: center;
    gap: 2px;
    font-size: 10.5px;
    color: var(--muted);
    padding: 4px 6px;
    min-width: 56px;
    text-decoration: none;
  }
  .bottom-nav a[aria-current="page"] {
    color: var(--accent);
  }
  .bottom-nav a svg.i {
    width: 20px;
    height: 20px;
  }
}

/* Sheet with the full navigation on phones ("More" in the bottom bar). */
.ovl.sheet {
  align-items: end;
}
.ovl.sheet .dlg {
  width: min(420px, 100%);
}
.ovl.sheet .nav a {
  padding: 10px;
}

/* Sign-in screen. */
.signin {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 16px;
}
.signin .card {
  width: min(420px, 100%);
  padding: 24px;
  display: grid;
  gap: 14px;
}
.signin h1 {
  font-size: 20px;
  font-weight: 600;
}

/* Error box: codes are translated, details stay in the console. */
.err {
  border: 1px solid transparent;
  background: var(--crit-soft);
  color: var(--crit);
  border-radius: var(--r);
  padding: 10px 12px;
  display: grid;
  gap: 4px;
}
.err ul {
  margin: 0;
  padding-left: 18px;
}

/* Inputs outside dialogs use the same look as .field inputs. */
.inp,
select.inp {
  border: 1px solid var(--line-2);
  border-radius: 6px;
  padding: 5px 8px;
  background: var(--surface);
  min-width: 0;
}
.field textarea {
  border: 1px solid var(--line-2);
  border-radius: 6px;
  padding: 6px 8px;
  background: var(--surface);
  font: inherit;
}
.field .hint {
  margin: 0;
}
.btn:disabled,
.btn[aria-disabled="true"] {
  opacity: 0.5;
  cursor: not-allowed;
}
.btn.danger {
  color: var(--crit);
  border-color: var(--crit-soft);
}
.btn.danger.primary {
  background: var(--crit);
  border-color: var(--crit);
  color: var(--accent-ink);
}
.row-acts {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  align-items: center;
}
.stack {
  display: grid;
  gap: 10px;
}

/* Group header inside lists and tables (device categories). */
.grp td {
  background: var(--surface-2);
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--faint);
  padding: 6px 10px;
}
.grp td .grp-in {
  display: flex;
  gap: 8px;
  align-items: center;
}
.grp td label {
  display: inline-flex;
  gap: 6px;
  align-items: center;
  cursor: pointer;
}
.grp td .cnt {
  margin-left: auto;
  font-family: var(--font-mono);
  text-transform: none;
  letter-spacing: 0;
}
.grp button.tw {
  border: 0;
  background: none;
  padding: 0;
  display: grid;
  place-items: center;
  color: var(--faint);
}
.grp button.tw svg {
  transition: transform 0.15s;
}
.grp button.tw[aria-expanded="true"] svg {
  transform: rotate(90deg);
}
input[type="checkbox"] {
  accent-color: var(--accent);
}

/* Chips inside tiles keep their own width. */
.axis .chip,
.kpi .chip {
  justify-self: start;
}

/* Value lists inside detail panels. */
.vals {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 4px 12px;
  font-size: 12.5px;
}
.vals dt {
  color: var(--muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.vals dd {
  margin: 0;
  text-align: right;
  font-family: var(--font-mono);
  white-space: nowrap;
}
.vals dd.stale {
  color: var(--stale);
}
.vals dd button {
  border: 0;
  background: none;
  padding: 0;
  font: inherit;
  color: inherit;
  text-decoration: underline dotted var(--faint);
  text-underline-offset: 3px;
}
.vals dd button[aria-pressed="true"] {
  color: var(--accent);
  text-decoration-color: var(--accent);
}

/* Device cards grid. */
.devgrid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 12px;
}
.devcard {
  text-align: left;
  display: grid;
  gap: 8px;
  align-content: start;
  padding: 12px;
  cursor: pointer;
  font: inherit;
  color: inherit;
}
.devcard:hover {
  border-color: var(--faint);
}
.devcard[aria-pressed="true"] {
  border-color: var(--accent);
  box-shadow: 0 0 0 1px var(--accent);
}
.devcard .hd {
  display: flex;
  gap: 8px;
  align-items: center;
  min-width: 0;
}
.devcard .hd b {
  font-weight: 500;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.devcard .big {
  font-family: var(--font-mono);
  font-size: 18px;
}
.devcard .big small {
  font-size: 12px;
  color: var(--muted);
  margin-left: 3px;
}
.sect-h {
  display: flex;
  gap: 8px;
  align-items: center;
  margin: 4px 0 -4px;
}
.sect-h h2 {
  font-size: 13px;
  font-weight: 600;
}
.sect-h .cnt {
  color: var(--faint);
  font-family: var(--font-mono);
  font-size: 12px;
}

/* Grid band of the overview: power now with the direction of the flow. */
.band-now {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 0;
}
.band-now > div {
  padding: 14px 16px;
  border-right: 1px solid var(--line);
  display: grid;
  gap: 4px;
  align-content: start;
}
.band-now > div:last-child {
  border-right: 0;
}
.band-now .val {
  font-family: var(--font-mono);
  font-size: 26px;
  letter-spacing: -0.02em;
}
.band-now .val small {
  font-size: 13px;
  color: var(--muted);
  margin-left: 3px;
}
.band-now .dir {
  font-size: 12px;
  color: var(--muted);
  display: flex;
  gap: 6px;
  align-items: center;
}
@media (max-width: 820px) {
  .band-now > div {
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }
}

/* Horizontal share bars (largest loads, balance). */
.bars {
  display: grid;
  gap: 8px;
}
.bars .b {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 3px 10px;
  font-size: 12.5px;
}
.bars .b .t {
  height: 6px;
  border-radius: 3px;
  background: var(--sunken);
  grid-column: 1 / -1;
  overflow: hidden;
}
.bars .b .t i {
  display: block;
  height: 100%;
  border-radius: 3px;
}

/* Charts drawn by components/Chart.tsx. */
.chart .grid-l {
  stroke: var(--line);
  stroke-width: 1;
}
.chart .zero {
  stroke: var(--line-2);
  stroke-width: 1;
}
.chart .cursor {
  stroke: var(--faint);
  stroke-dasharray: 3 3;
}
.chart .gap {
  fill: url(#hatch);
  opacity: 0.5;
}
.chart-empty {
  padding: 30px 14px;
  color: var(--faint);
  text-align: center;
}

/* Tree rows as links in the asset screen. */
.row .nm {
  cursor: pointer;
  color: inherit;
}
.tree .row.pt .med {
  width: 16px;
  height: 16px;
}
.tree .row.pt .med svg.i {
  width: 10px;
  height: 10px;
}

/* Wizard steps. */
.wsteps {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  font-size: 12px;
  color: var(--faint);
}
.wsteps span {
  display: inline-flex;
  gap: 6px;
  align-items: center;
}
.wsteps span.on {
  color: var(--ink);
  font-weight: 500;
}
.wsteps span b {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: 1px solid var(--line-2);
  display: grid;
  place-items: center;
  font-size: 11px;
  font-weight: 500;
}
.wsteps span.on b {
  background: var(--accent);
  border-color: var(--accent);
  color: var(--accent-ink);
}
.wsteps span.done b {
  background: var(--ok-soft);
  border-color: transparent;
  color: var(--ok);
}

/* Location picker (Leaflet map in the node form) */
.map {
  height: 280px;
  border: 1px solid var(--line-2);
  border-radius: 8px;
  overflow: hidden;
  background: var(--surface-2);
  z-index: 0;
}
.map .leaflet-control-attribution {
  font-size: 10px;
}
.map-pin {
  background: none;
  border: 0;
}
.map-pin::before {
  content: "";
  position: absolute;
  left: 3px;
  top: 0;
  width: 16px;
  height: 16px;
  border-radius: 50% 50% 50% 0;
  transform: rotate(-45deg);
  background: var(--accent);
  border: 2px solid #fff;
  box-shadow: 0 1px 4px rgb(0 0 0 / 0.45);
}
.geo-results {
  list-style: none;
  margin: 0;
  padding: 0;
  border: 1px solid var(--line-2);
  border-radius: 8px;
  max-height: 180px;
  overflow: auto;
}
.geo-results li + li {
  border-top: 1px solid var(--line);
}
.geo-results button {
  display: block;
  width: 100%;
  text-align: left;
  background: none;
  border: 0;
  padding: 8px 12px;
  color: var(--ink);
}
.geo-results button:hover,
.geo-results button:focus-visible {
  background: var(--accent-soft);
}

/* Integrations: vendor devices with their channels */
.tbl tr.src td {
  background: var(--surface-2);
}
.src-in {
  display: flex;
  align-items: center;
  gap: 6px;
}
.src-name {
  font-weight: 500;
}
.tbl tr.ch td:nth-child(2) {
  padding-left: 44px;
}

/* Points a whole device will get */
.device-plan {
  list-style: none;
  margin: 0;
  padding: 0;
  border: 1px solid var(--line-2);
  border-radius: 8px;
  max-height: 200px;
  overflow: auto;
}
.device-plan li {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 6px 12px;
}
.device-plan li + li {
  border-top: 1px solid var(--line);
}
.src-in button.tw {
  width: 18px;
  height: 18px;
  border: 0;
  background: none;
  padding: 0;
  display: grid;
  place-items: center;
  color: var(--faint);
  flex: none;
  border-radius: 4px;
}
.src-in button.tw:hover {
  background: var(--line);
  color: var(--ink);
}
.src-in button.tw svg {
  transition: transform 0.15s;
}
.src-in button.tw[aria-expanded="true"] svg {
  transform: rotate(90deg);
}

.note.crit {
  color: var(--crit);
  border: 1px solid var(--crit);
  border-radius: 8px;
  margin-bottom: 12px;
}
.note[role="status"]:not(.crit) {
  border: 1px solid var(--line-2);
  border-radius: 8px;
  margin-bottom: 12px;
}
.evmini {
  display: flex;
  gap: 10px;
  width: 100%;
  border-top: 1px solid var(--line);
  padding: 10px 14px;
  align-items: flex-start;
  color: inherit;
  text-decoration: none;
}
.evmini:hover {
  background: var(--surface-2);
}
.evmini svg.i {
  width: 16px;
  height: 16px;
  margin-top: 1px;
}
.linkish {
  border: 0;
  background: none;
  padding: 0;
  color: inherit;
  font: inherit;
  cursor: pointer;
  text-decoration: underline dotted;
  text-underline-offset: 2px;
}
.linkish:hover {
  color: var(--accent);
}
/* Form fields stay readable on wide cards; a very wide native select also gets its option list mispositioned. */
.card-b .field > select,
.card-b .field > input:not([type="checkbox"]) {
  max-width: 640px;
}
/* Printing a protocol: only the open dialog's content, on white. */
@media print {
  body:has(.dlg .protocol) * {
    visibility: hidden;
  }
  body:has(.dlg .protocol) .dlg,
  body:has(.dlg .protocol) .dlg * {
    visibility: visible;
  }
  body:has(.dlg .protocol) .dlg {
    position: absolute;
    inset: 0;
    box-shadow: none;
    border: 0;
    max-height: none;
  }
  body:has(.dlg .protocol) .dlg button {
    display: none;
  }
}
