/* 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::-moz-selection {
	background: transparent;
}
.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 {
	touch-action: pan-x pan-y;
	}
.leaflet-container.leaflet-touch-drag {
	/* Fallback for FF which doesn't support pinch-zoom */
	touch-action: none;
	touch-action: pinch-zoom;
}
.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
	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;
	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;
	transition: opacity 0.2s linear;
	}
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
	opacity: 1;
	}
.leaflet-zoom-animated {
	transform-origin: 0 0;
	}
svg.leaflet-zoom-animated {
	will-change: transform;
}

.leaflet-zoom-anim .leaflet-zoom-animated {
	transition:         transform 0.25s cubic-bezier(0,0,0.25,1);
	}
.leaflet-zoom-anim .leaflet-tile,
.leaflet-pan-anim .leaflet-tile {
	transition: none;
	}

.leaflet-zoom-anim .leaflet-zoom-hide {
	visibility: hidden;
	}


/* cursors */

.leaflet-interactive {
	cursor: pointer;
	}
.leaflet-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:         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;
	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;
	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;
	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;
		}
	}
.leaflet-draw-section{position:relative}.leaflet-draw-toolbar{margin-top:12px}.leaflet-draw-toolbar-top{margin-top:0}.leaflet-draw-toolbar-notop a:first-child{border-top-right-radius:0}.leaflet-draw-toolbar-nobottom a:last-child{border-bottom-right-radius:0}.leaflet-draw-toolbar a{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAAeCAYAAACWuCNnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAG7AAABuwBHnU4NQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAbvSURBVHic7dtdbBxXFQfw/9nZ3SRKwAP7UFFUQOoHqGnUoEAoNghX9tyxVcpD1X0J+WgiUQmpfUB5ACSgG1qJIKASqBIUIauqAbWseIlqb+bOWHVR6y0FKZBEqdIUQROIREGRx3FFvR/38ODZst3a3nE8Ywfv+T2t7hzdM3fle/bOnWtACCGEEEIIIYQQQgghhBBCCCGEEEIIIcRa0EbfgBDdFItFKwzDAa3175LuWylVAvBIR/MxrXUp6Vxx9dp4VyObVEdKKW591lonXgiVUg6AHzPzk9ls9meVSmUh6RzXkz179uQKhcIgM+8CACI6U6vVnp+enm6knXt4ePiuTCbzWQAwxlSDIHg57ZwroDAMnwKwz3XdBzzPG08hxzsTNprQG2lTjtd13WFmfghAP4A+AJcATFiW9YNKpfL3uP0kUliiX4SG1pqUUpx0wXJd9/PMXAGwPWq6yMyPz8/P/7xarf4nyVwt7QV4JWkU52i8YwBu6bh0wRhzJAiCF5POCQCDg4N2Pp//NYDRjkuTxph9QRCESeYrFov5ubm5R5n5AIAPtV1aYOb7BgYGTpZKJeO67lFmPsbM9/i+/8Ja8y6zylhOYquPXhsvAJRKpczMzMwTAIaJ6LFGo+HNzs5eKRQKNxPRAWb+CoAjWuvn4vS35skWFasxAAdbbUlOYqVUPwAPwI4lLr8J4KeWZT1eqVTmksoZ5d2QghUVKx/AlmVCFph5yPf9l5LMCwBKqUksFqszRHQcAJj5GwB2MfOE7/tfTDKf4zjHiejrAE4CuNhqZ+bf2rY9FYbhGBH92/O8o47j3Oj7/uUk86+3XhsvACilHmPmgW3btn3pxIkTVzuvj4yMfNoY85wxZiQIglPd+lvTZIuq5xiAQwCe6evr218ul5tr6bNd9GiiAbyvS+hFrfVHk8oLbEzBih4Dz+G9K6t3IaLXFhYWdib5eBh911UA8wBu1lq/CQBDQ0M3WJb1OoAdRPQZz/NeSSqnUuofAKpa6/vb26MfwacA7AdwFcCdWuu/JpU3yl1C91VHoquNXhvvyMjIx4wxr1iWtbNSqfxruTjHcR4AcMj3/bu79XnNe1hpFyvHcXYT0QS6FysASHR1tVEKhcIguhQrAGDm23K53BcATCWV27KsAWYGgPOtYgUAU1NT/1RKnQewxxjzOQCJFSwANwI4297QtmLfD+AtZr43m83OJ5iz3bGU+l1OT43XGFNk5mdXKlYAYNv2eBiG31dK3aS1vrRSbOZabqRYLFppFisAIKJxAB+MGf56krk30O64gZlMJnZsHMxsoo8fHxoauqHVHn3+BAAQUaxV57Xq2F54i5nvIaJXm81mYoX5etID491JRH/sFlQul5tEdMoYc3u32FUXrLYvObViBQDM/MQqwi8knX8jEJHpHrXIGJNo8WDm1spph2VZgeu6+5RSX7YsK8D/Xnb8Psmcnebm5h7G4uS9ysxutOH8VQC70sy7UTb7eImImTnWlgkzUyaT6fr3v6qC1fGL8EytVjuQRrECANu2fwHg1TixzPyXNO5hvTHz6VWE/znJ3L7vzxBRa9PzDmb+FYBfArgjajvd39+f9vGGKwACZh5te6mwmc8KburxMvO5TCbzqW5xxWLRArDbsqyu8z32HtZSxSrNM0Hlcrnpum6JmZ+NEb4pHglrtdrz+Xz+AoBbu4Ser9fra37d3YEBfBvAkq+XmfmbpVIp9grwWnie9zSAp9PMcT3Z7OPNZrO/aTQaf1BKfbd9X7RTGIaHmPlcnPNYsVZYSikOw7AB4CAzj/f19e1fjwOMnueVEeMxJJfLbYqCNT093TDGHAGw0qHYBQBH0vj+Pc+bYOb3HFRk5nHf9yeTzgfgMhF9uEvMTQD+71/vR3pqvJOTk28AeBJAeXR09P1LxbiuuxfA9wB8LU6fsVdYrUOhtm0fTusxcAlMRN+KziUt5SqAM3v37r00OZnGfFp/QRC86DjOUCaTGWPm2zoun8fiIbuZtPLX6/UH8/n8rQDuippertfrD6aRKyqOR5VS81ji8Z+IbmfmgwB+mEb+9dZr4wWA/v7+R6rV6k+azeYpx3EezeVyJ7dv335lfn7+lkajcZCZDzPzYd/3/xSnv9gFq3UuaR2LFQDA87xAKVUB8BEAZ6N9nrNEdEZr/TcArLVOPG8aJ9jj8n3/pcHBwZ1btmx5519zmPl0vV5/Ie2V7fT09Nujo6Nus9kcA4CtW7ce1lq/nUYu27a/Mzs7CyI6gMVX/u/CzJeZ+Ue2bcc9pb1aXc8lJZms18YLANE2wkOu694N4OFGo3E8DMMPAHiDiCaY+ZOb4YCsEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhEjYfwGO+b5dFNs4OgAAAABJRU5ErkJggg==');background-image:linear-gradient(transparent,transparent),url('/assets/spritesheet-DpIxuf5L.svg');background-repeat:no-repeat;background-size:300px 30px;background-clip:padding-box}.leaflet-retina .leaflet-draw-toolbar a{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAA8CAYAAAC6nMS5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAA16SURBVHic7d1/jBxneQfw7zNzvotdn+9sVQkxoRKoammBqqpbk6uT5mLfvHPn42yn1VFRVCEhoFH5IYpoSaUCKi1NcGkcfrbCVRFKEwG2aHLn83pmLvY2CTqT1AmCOBE0EOT4B0nBPw/snb2dp3/sLr6s77i923dud/a+H8ny7tzMo8f3eud99p133gGIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiFYGaXYCRETUPMYYrWe/MAzZX2QQ27d5OpqdABFROxgZGVlz5cqVrzuOc18QBJPNzofsYvvSYrVcgTVftZ2l6npgYODXHMc5oKoHHcfZHQTB2WbnRETpGRkZWVMoFA6IyO2qutX3/R1Z64TnO8fWOwLSzti+mSKDg4M3l0qlnSJyG4CbAFwP4ByAlwE8paoPX3fddcH4+PjP00yk5QqsrDPGvAZAHsBrReRNqvpeY8x/iMg9QRCcaXJ6ZIHv+xtUdReAHQBej/IHGABOAnhORMY6OjoempiYONe0JC3zPM84jjOqqrfi6r/3RQCPAdgXhmHUvOyaa3R01L1w4cJBALdVNq1W1THP87woir7ZzNyocWzf7PA8b4uI7E6S5A9Frqknb6j8eZOIvKNQKPzU9/1/dhznvlwuV0gjn5YbFapW09Vqu/Z9K9u2bdsNruvmUe50axUAfMV13X/I5XInlzcze2x/28lCu1b19fWt7u7u/hCAvwGwboHdL6jq7unp6T1TU1OXlyG9VAwODv5mkiR7Ady6wK6Plkqldz/yyCPfX468bBkaGuqamZm5E8DbReQNANYscMiLIrI1CILnZ280xrwHwL+hck4VkacBDLTS6HVaIxWt/Blm+zauldu3atOmTas2bNjwWRG5s7LplKp+VUQOuq77/bVr17589uzZ9SKy0XGcAVUdFZE/qOx7zHXdXWn0yy31i6sMw/4MyF6BZYy5XlWPiMhvL7BrrKpfcxznE7Uf4ixYqQWW53kbATw060NZr28nSbJzcnLyRBp5pcnzvNtE5CEAvXUecg7ArjAMH00xLWuGhoZuKpVKEwB+p85DXnRd9/ZcLvcDAOjv778un88XAChwtRMWkW+jxTpfYOV1wGxfO1q1fav6+vpWr1u3blxVtwH4uar+/fT09OcW+mJrjBkBcC+AXwdwBoAJw/AZm7m1zC+uUlyNA9g6189buZH7+/t/tbOz8wiANy7isKKqftV13U8eOnToe2nlZttKLLAqJ+qjAF69xBAnZ2Zmbj58+PApm3mlqTJydRTXFldHAUxVXvcBuLnm5+dU9c1RFP1v2jk2YmhoqKtUKj2B+jvfE0mS3D45OflD4OqcHADPh2H4F6h0wp7nva1YLOby+fz5dDKnerB9Vwzxff8BVX0bgFMAdoZheKzeg4eHh9cXi8WvAfAAvOC67ptzudz/WUvOVqBGVO7OmBCR/vn2adWOuL+/v7ezs3MSwKYlhkgAHBSRjwdB8JTF1FKx0gqsymXBxwH8XoOh/ieO41vz+fwVG3mlzRjzKF55WfA8gD8LwzA3ez/P87aLyIMAeqrbVDUfRdHty5Pp0hhjPgDgM9X3qnq/iNwPYM5RCdd1T1RPvLM63+q/ce/sTpiaj+27Mvi+f6eq/iuAi67r9uVyuWcXG6NSjB8B0KeqE1EUvcVWfk3v3OYZuXosjuPt+Xx+ull51WNgYKBHRKIlXDaaS6Kq+6Mo+lMLsVKz0gosz/M+KiKfsBTub8MwvMdSrNQYYzwAYc3m7bXFVZXv+8OqemD2NlUdiKLokbRybJQx5lsANlfefi4Mww/UedyvADgI4I9mbxeRDwdB8C92s0yHrc9wK3922b6Na+X2BYD+/v61nZ2dz6M8cX00DMP9S421ffv2V83MzDwHoNfmucuxEWSpslxcjYyMrHEcZ8xScQUAjoj8vqVYZIHv+xtE5MMWQ941PDy83mK8VIjIW2s2HZ2vuAKAIAgmADyxQIxWM3uu5J56DhgZGVkDYBw1nS+ApwB82VJeZAfbt82tWrXqPSgXV481UlwBwMGDB3+sqncDgIh81EZ+QBMLrKwXV5Uh5NoPYqMyN+m9nanqHVj4bsHF6InjeKfFeKmoLMUw+/2Ct6KLyOM1m2x/NmxbW30RhuGPFtp5jstGVU+JiNdqE57rEYahzB6lWOz7Fsf2be/2hYj8SeXlvTbiFYvFLwK4DOAWY8z1NmI2pcDKcnE1OjraWSgU9uPaD2LDRKSlJwavQCO2A4rIDtsxU7BxsQeoau2Jeak3BDTDL72kUm/n63neaFoJUkPYvm3G9/0NKN9gc7mrq6t2OsOSVGqPSQCuiAzaiLnsBVaWiysAuHDhwn4AQ2nEVtUfpBGXluwNKcRcaBmPVpDMfiMiW+o4pnafZM69MmYxnW9lsj9lCNs3m1T1tSjXL89aXo39WCX+62wEW9YCK+vFVcXLKcbmJcLW8qoUYmZhZOfFmvc3e563fb6djTFvwdUJxfPFyJx6O1/f999a6Xz5ZIwMYftm2o2Vv60+HUVETldeLnoUfy7LVmC1SXEFVf0YgFSeX5QkCQus9tfyIzsicnSObQ/6vj9cu71SXP1nPTGyplAo5FDT+arqk3Ecb5s9J0dV2flmENs3u0REgTmnJjRkVjwrd2Iuy3+adimuACCKotPGmC8A+GvLoZOZmZkXLMekBojIaVX9DcthTy+8S3MlSTIuIu+q2dyjqgeMMU8A+CYAUdUtAOa8izZJkvG081wG19xN5jjO4ByLTLrLlRBZxfbNrjMAICI3LrTjIlVHrqyMjKU+gtVOxVVVHMf/hHkWrGvAiawsQrlSqOqiF61rRkzbOjo6AsxfCG4G8FcAPvhLlih5qVgsWpl42kIyezcZ1YXtmy0/QvlqwG9V1i6zZRMAiIiV+dCpFljtWFwBQOUbzqcth+XlwdZjfRRGRMZsx7St8mT5zzcQ4r52+LKgqp9S1U8B+GTtZSPKPrZvdlXaagrAalU1NmJWCrVtAEqO4xyyETO1S4TtWlxVXbp06b7u7u6/BHCTjXiqygKrxYjIQ6p6L2Y9BqZB51etWtXyBRYAuK77hVKp9H5cnUxarzOu634xjZyWWxRFdzU7B0oP2zfbVPUbIrLFcZwPAfivRuOJyPtUdbWq5m09jzCVEax2L64AYGpq6rKq/qOteI7jsMBqMUEQnFXV3bbiqerdExMT52zFS1Mul7soIovugETkI7lc7mIaORERVRWLxS8BeElVb/F9v6EnR/i+f6Oq3gUAjuPYejSavQLLGKPVP4VC4Wd4ZXF1pKura7Bdiquq3t7efwfwnKVwLLBa0PT09B5U1kZp0BPFYvGzFuIsmyAI7kf5uWz1OhgEwTV3FLaoX5yLKosWLknNsZcayohsYvu2uUo98TEAUNW9vu8vad3CoaGhLlX9BoBeAONBEByxleNyLNPwWBzHOywvBtYS9u3bV1LVj1sKxwKrBU1NTV12XXcXgFMNhDmpqndkcF6SisifAzhRx76n4jh+Byzd3rwMjldfqOqSV+xPkmT2yvzH592RlhvbdwUIw3AvgAcArFPVcHBwcFHPBvZ9f0OpVDqA8qrwL8Rx/E6b+VkvsGqfZ9ROlwXnEkXRfgDfajCMXrx48Yc28iH7crncSVXdrKpPLvZYEXk6SZItURS1/PIMcwmC4KzjOCMAam9dn+0SgJ35fP4ny5SWDQ/Mer3HGLPoTtgYMyIiv3gOmqpmZfRuJWD7rgwax/G7UH7EzcYkSf7bGHNXX1/f6oUO9H1/Z+WcPoDysgw7bJ/DUl8Hq52LqwoVkb9T1WiRx8UoX158RlWfnJqaupxCbmRJFEWn+/r6buvu7v4ggI9g4Ynv50XknkKh8JkMjly9wqFDh77j+/6oqo4BqD1xXRaRPw6CwMZl1GXjuu6XSqXSOwH8LoD1AMaMMecA1PtF53WV4wCUC+menp699jOlpWD7rhz5fP5Kf3//UFdX132q+l4Ad3d3d7/fGPN1EZlQ1e/19PS8dPbs2fWu694kIgOqOqqqm4Dy4rKlUumOw4cPN3KVYk7WVkE1xsx5aSBLT+duhDEmQrkSnssZlIeXnxWRY6p6PI7j41nveFeq4eHh9XEc7xSRnQBej6t3kp5EuWh+OI7jh+dYsDDTfN/frKrjAKpPmv9pkiS7JicnH29mXku1devWV3d0dBxAuRNeMhF5ulgsjqRxgk7DfOfqxWr1czvbtzGt3r5zGRwc7FPV3ap6y0L7ishPAHx63bp1e/bt2xenkQ8LLEuMMZtE5JCqfhfAMwCeSZLkO2vWrDk+NjbGyZHUFjzP2yginwcAVX1fVi99Vo2OjnaeP3/+3SLydgBvBNBd56GXAHxXVR/s7e3dm9YJOg0rqQNm+y5dFtp3HmKM2QxgF8qr9b8GwA0AzgH4MYBjIjJ28eLFkFeOiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIhWgv8Hnffz4dmwY9cAAAAASUVORK5CYII=');background-image:linear-gradient(transparent,transparent),url('/assets/spritesheet-DpIxuf5L.svg')}
.leaflet-draw a{display:block;text-align:center;text-decoration:none}.leaflet-draw a .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.leaflet-draw-actions{display:none;list-style:none;margin:0;padding:0;position:absolute;left:26px;top:0;white-space:nowrap}.leaflet-touch .leaflet-draw-actions{left:32px}.leaflet-right .leaflet-draw-actions{right:26px;left:auto}.leaflet-touch .leaflet-right .leaflet-draw-actions{right:32px;left:auto}.leaflet-draw-actions li{display:inline-block}
.leaflet-draw-actions li:first-child a{border-left:0}.leaflet-draw-actions li:last-child a{border-radius:0 4px 4px 0}.leaflet-right .leaflet-draw-actions li:last-child a{border-radius:0}.leaflet-right .leaflet-draw-actions li:first-child a{border-radius:4px 0 0 4px}.leaflet-draw-actions a{background-color:#919187;border-left:1px solid #AAA;color:#FFF;font:11px/19px "Helvetica Neue",Arial,Helvetica,sans-serif;line-height:28px;text-decoration:none;padding-left:10px;padding-right:10px;height:28px}
.leaflet-touch .leaflet-draw-actions a{font-size:12px;line-height:30px;height:30px}.leaflet-draw-actions-bottom{margin-top:0}.leaflet-draw-actions-top{margin-top:1px}.leaflet-draw-actions-top a,.leaflet-draw-actions-bottom a{height:27px;line-height:27px}.leaflet-draw-actions a:hover{background-color:#a0a098}.leaflet-draw-actions-top.leaflet-draw-actions-bottom a{height:26px;line-height:26px}.leaflet-draw-toolbar .leaflet-draw-draw-polyline{background-position:-2px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-polyline{background-position:0 -1px}
.leaflet-draw-toolbar .leaflet-draw-draw-polygon{background-position:-31px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-polygon{background-position:-29px -1px}.leaflet-draw-toolbar .leaflet-draw-draw-rectangle{background-position:-62px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-rectangle{background-position:-60px -1px}.leaflet-draw-toolbar .leaflet-draw-draw-circle{background-position:-92px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-circle{background-position:-90px -1px}
.leaflet-draw-toolbar .leaflet-draw-draw-marker{background-position:-122px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-marker{background-position:-120px -1px}.leaflet-draw-toolbar .leaflet-draw-draw-circlemarker{background-position:-273px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-circlemarker{background-position:-271px -1px}.leaflet-draw-toolbar .leaflet-draw-edit-edit{background-position:-152px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-edit{background-position:-150px -1px}
.leaflet-draw-toolbar .leaflet-draw-edit-remove{background-position:-182px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-remove{background-position:-180px -1px}.leaflet-draw-toolbar .leaflet-draw-edit-edit.leaflet-disabled{background-position:-212px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-edit.leaflet-disabled{background-position:-210px -1px}.leaflet-draw-toolbar .leaflet-draw-edit-remove.leaflet-disabled{background-position:-242px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-remove.leaflet-disabled{background-position:-240px -2px}
.leaflet-mouse-marker{background-color:#fff;cursor:crosshair}.leaflet-draw-tooltip{background:#363636;background:rgba(0,0,0,0.5);border:1px solid transparent;border-radius:4px;color:#fff;font:12px/18px "Helvetica Neue",Arial,Helvetica,sans-serif;margin-left:20px;margin-top:-21px;padding:4px 8px;position:absolute;visibility:hidden;white-space:nowrap;z-index:6}.leaflet-draw-tooltip:before{border-right:6px solid black;border-right-color:rgba(0,0,0,0.5);border-top:6px solid transparent;border-bottom:6px solid transparent;content:"";position:absolute;top:7px;left:-7px}
.leaflet-error-draw-tooltip{background-color:#f2dede;border:1px solid #e6b6bd;color:#b94a48}.leaflet-error-draw-tooltip:before{border-right-color:#e6b6bd}.leaflet-draw-tooltip-single{margin-top:-12px}.leaflet-draw-tooltip-subtext{color:#f8d5e4}.leaflet-draw-guide-dash{font-size:1%;opacity:.6;position:absolute;width:5px;height:5px}.leaflet-edit-marker-selected{background-color:rgba(254,87,161,0.1);border:4px dashed rgba(254,87,161,0.6);border-radius:4px;box-sizing:content-box}
.leaflet-edit-move{cursor:move}.leaflet-edit-resize{cursor:pointer}.leaflet-oldie .leaflet-draw-toolbar{border:1px solid #999}*, ::before, ::after {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

::backdrop {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}/*
! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
*//*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/

*,
::before,
::after {
  box-sizing: border-box; /* 1 */
  border-width: 0; /* 2 */
  border-style: solid; /* 2 */
  border-color: #e5e7eb; /* 2 */
}

::before,
::after {
  --tw-content: '';
}

/*
1. Use a consistent sensible line-height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
5. Use the user's configured `sans` font-feature-settings by default.
6. Use the user's configured `sans` font-variation-settings by default.
7. Disable tap highlights on iOS
*/

html,
:host {
  line-height: 1.5; /* 1 */
  -webkit-text-size-adjust: 100%; /* 2 */
  -moz-tab-size: 4; /* 3 */
  -o-tab-size: 4;
     tab-size: 4; /* 3 */
  font-family: DM Sans, system-ui, sans-serif; /* 4 */
  font-feature-settings: normal; /* 5 */
  font-variation-settings: normal; /* 6 */
  -webkit-tap-highlight-color: transparent; /* 7 */
}

/*
1. Remove the margin in all browsers.
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
*/

body {
  margin: 0; /* 1 */
  line-height: inherit; /* 2 */
}

/*
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
3. Ensure horizontal rules are visible by default.
*/

hr {
  height: 0; /* 1 */
  color: inherit; /* 2 */
  border-top-width: 1px; /* 3 */
}

/*
Add the correct text decoration in Chrome, Edge, and Safari.
*/

abbr:where([title]) {
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
}

/*
Remove the default font size and weight for headings.
*/

h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}

/*
Reset links to optimize for opt-in styling instead of opt-out.
*/

a {
  color: inherit;
  text-decoration: inherit;
}

/*
Add the correct font weight in Edge and Safari.
*/

b,
strong {
  font-weight: bolder;
}

/*
1. Use the user's configured `mono` font-family by default.
2. Use the user's configured `mono` font-feature-settings by default.
3. Use the user's configured `mono` font-variation-settings by default.
4. Correct the odd `em` font sizing in all browsers.
*/

code,
kbd,
samp,
pre {
  font-family: Geist Mono, ui-monospace, monospace; /* 1 */
  font-feature-settings: normal; /* 2 */
  font-variation-settings: normal; /* 3 */
  font-size: 1em; /* 4 */
}

/*
Add the correct font size in all browsers.
*/

small {
  font-size: 80%;
}

/*
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
*/

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/*
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
3. Remove gaps between table borders by default.
*/

table {
  text-indent: 0; /* 1 */
  border-color: inherit; /* 2 */
  border-collapse: collapse; /* 3 */
}

/*
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
3. Remove default padding in all browsers.
*/

button,
input,
optgroup,
select,
textarea {
  font-family: inherit; /* 1 */
  font-feature-settings: inherit; /* 1 */
  font-variation-settings: inherit; /* 1 */
  font-size: 100%; /* 1 */
  font-weight: inherit; /* 1 */
  line-height: inherit; /* 1 */
  letter-spacing: inherit; /* 1 */
  color: inherit; /* 1 */
  margin: 0; /* 2 */
  padding: 0; /* 3 */
}

/*
Remove the inheritance of text transform in Edge and Firefox.
*/

button,
select {
  text-transform: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Remove default button styles.
*/

button,
input:where([type='button']),
input:where([type='reset']),
input:where([type='submit']) {
  -webkit-appearance: button; /* 1 */
  background-color: transparent; /* 2 */
  background-image: none; /* 2 */
}

/*
Use the modern Firefox focus style for all focusable elements.
*/

:-moz-focusring {
  outline: auto;
}

/*
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
*/

:-moz-ui-invalid {
  box-shadow: none;
}

/*
Add the correct vertical alignment in Chrome and Firefox.
*/

progress {
  vertical-align: baseline;
}

/*
Correct the cursor style of increment and decrement buttons in Safari.
*/

::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
  height: auto;
}

/*
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/

[type='search'] {
  -webkit-appearance: textfield; /* 1 */
  outline-offset: -2px; /* 2 */
}

/*
Remove the inner padding in Chrome and Safari on macOS.
*/

::-webkit-search-decoration {
  -webkit-appearance: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to `inherit` in Safari.
*/

::-webkit-file-upload-button {
  -webkit-appearance: button; /* 1 */
  font: inherit; /* 2 */
}

/*
Add the correct display in Chrome and Safari.
*/

summary {
  display: list-item;
}

/*
Removes the default spacing and border for appropriate elements.
*/

blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}

fieldset {
  margin: 0;
  padding: 0;
}

legend {
  padding: 0;
}

ol,
ul,
menu {
  list-style: none;
  margin: 0;
  padding: 0;
}

/*
Reset default styling for dialogs.
*/
dialog {
  padding: 0;
}

/*
Prevent resizing textareas horizontally by default.
*/

textarea {
  resize: vertical;
}

/*
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
2. Set the default placeholder color to the user's configured gray 400 color.
*/

input::-moz-placeholder, textarea::-moz-placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}

input::placeholder,
textarea::placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}

/*
Set the default cursor for buttons.
*/

button,
[role="button"] {
  cursor: pointer;
}

/*
Make sure disabled buttons don't get the pointer cursor.
*/
:disabled {
  cursor: default;
}

/*
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
   This can trigger a poorly considered lint error in some tools but is included by design.
*/

img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block; /* 1 */
  vertical-align: middle; /* 2 */
}

/*
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
*/

img,
video {
  max-width: 100%;
  height: auto;
}

/* Make elements with the HTML hidden attribute stay hidden by default */
[hidden]:where(:not([hidden="until-found"])) {
  display: none;
}
  :root {
    /* ── Font families ── */
    --font-display: "Fraunces", Georgia, serif;
    --font-body: "DM Sans", system-ui, sans-serif;
    --font-mono: "Geist Mono", ui-monospace, monospace;

    /* ── Shadcn semantic tokens ── */
    --background: 0.97 0.01 100;
    --foreground: 0.22 0.04 145;

    --card: 0.99 0.005 100;
    --card-foreground: 0.22 0.04 145;

    --popover: 0.99 0.005 100;
    --popover-foreground: 0.22 0.04 145;

    --primary: 0.42 0.12 148;
    --primary-foreground: 0.97 0.01 100;

    --secondary: 0.92 0.04 100;
    --secondary-foreground: 0.3 0.06 145;

    --muted: 0.93 0.02 100;
    --muted-foreground: 0.52 0.04 140;

    --accent: 0.78 0.14 75;
    --accent-foreground: 0.22 0.04 145;

    --destructive: 0.55 0.2 25;
    --destructive-foreground: 0.97 0.01 100;

    --border: 0.88 0.03 130;
    --input: 0.88 0.03 130;
    --ring: 0.42 0.12 148;

    --success: 0.6 0.16 148;
    --warning: 0.78 0.14 75;

    --radius: 0.75rem;

    /* ── Stand Count module tokens ── */
    /* Summary badge — semi-transparent dark glass over satellite map */
    --stand-badge-bg: 0.16 0.03 145;
    --stand-badge-fg: 0.97 0.005 100;
    --stand-badge-border: 0.45 0.02 145;
    --stand-divider: 0.45 0.02 145;

    /* Canopy centroid density ramp — yellow → orange → green */
    --density-low: 0.82 0.16 85;
    --density-mid: 0.7 0.17 55;
    --density-high: 0.62 0.16 142;

    /* Critical gap zone dashed borders — distinct from solid white health grid */
    --gap-moderate: 0.7 0.17 55;

    /* ── Agricultural custom palette ── */
    --green-deep: 0.28 0.09 148;
    --green-mid: 0.52 0.14 142;
    --green-light: 0.72 0.12 140;
    --green-dark: 0.22 0.07 148;

    --amber: 0.72 0.16 75;
    --amber-light: 0.84 0.12 80;

    --soil: 0.32 0.06 55;
    --soil-dark: 0.18 0.04 50;
    --soil-mid: 0.26 0.05 52;

    --cream: 0.96 0.02 90;
    --cream-light: 0.98 0.01 95;
    --cream-mid: 0.82 0.04 90;

    --header: 0.97 0.005 100;

    /* ── Chart tokens ── */
    --chart-1: 0.52 0.14 142;
    --chart-2: 0.72 0.16 75;
    --chart-3: 0.55 0.2 25;
    --chart-4: 0.42 0.12 148;
    --chart-5: 0.78 0.14 75;

    /* ── Sidebar tokens ── */
    --sidebar: 0.97 0.01 100;
    --sidebar-foreground: 0.22 0.04 145;
    --sidebar-primary: 0.42 0.12 148;
    --sidebar-primary-foreground: 0.97 0.01 100;
    --sidebar-accent: 0.92 0.04 100;
    --sidebar-accent-foreground: 0.3 0.06 145;
    --sidebar-border: 0.88 0.03 130;
    --sidebar-ring: 0.42 0.12 148;

    /* ── Field report surface (paper-like cream) ── */
    --report-bg: 0.97 0.02 90;
    --report-ink: 0.24 0.04 60;
    --report-muted: 0.5 0.04 60;
    --report-rule: 0.85 0.03 80;

    /* ── Grid map zone health ramp (feet / acres / compass) ── */
    --zone-healthy: 0.62 0.16 142;
    --zone-moderate: 0.76 0.16 75;
    --zone-stress: 0.58 0.2 30;
    --zone-label: 0.16 0.03 145;
    --compass-accent: 0.52 0.14 142;

    /* ── Download box ── */
    --download-bg: 0.99 0.005 100;
    --download-border: 0.85 0.03 80;

    /* ── Flight comparison: zone-change highlight system ── */
    --change-improved: 0.55 0.15 148;
    --change-declined: 0.55 0.21 27;
    --change-unchanged: 0.78 0.02 90;
    --change-legend-fg: 0.3 0.04 145;
    --change-summary-bg: 0.97 0.02 90;

    /* ── Market Forecast module tokens ── */
    --forecast-surface: 0.99 0.005 100;
    --forecast-rule: 0.88 0.03 130;
    --forecast-local: 0.52 0.11 195;
    --forecast-local-soft: 0.9 0.05 195;
    --forecast-world: 0.48 0.1 265;
    --forecast-world-soft: 0.9 0.04 265;
    --market-gold: 0.68 0.13 82;
    --market-gold-soft: 0.94 0.05 90;
    --outlook-favorable: 0.55 0.15 148;
    --outlook-favorable-soft: 0.9 0.06 148;
    --outlook-neutral: 0.72 0.12 75;
    --outlook-neutral-soft: 0.94 0.05 80;
    --outlook-unfavorable: 0.55 0.21 27;
    --outlook-unfavorable-soft: 0.93 0.05 25;

    /* ── AI Multispectral Map module tokens ── */
    /* Spectral violet-magenta accent — visually separates AI-generated
       multispectral analysis from green NDVI/basemap layers */
    --spectral: 0.5 0.14 305;
    --spectral-strong: 0.44 0.16 305;
    --spectral-soft: 0.9 0.05 305;
    --spectral-fg: 0.97 0.01 100;

    /* Generated map panel surface */
    --ms-surface: 0.99 0.005 100;
    --ms-border: 0.85 0.05 305;
    --ms-accent: 0.5 0.14 305;

    /* Spectral CTA gradient (violet → magenta) */
    --gradient-spectral: linear-gradient(
      135deg,
      oklch(0.5 0.14 305) 0%,
      oklch(0.52 0.17 340) 100%
    );

    /* ── Mosaic overlay module tokens ── */
    /* Cyan-teal stitching accent — separates the drone mosaic imagery layer
       from the green NDVI/basemap and violet multispectral AI layers */
    --mosaic: 0.62 0.13 195;
    --mosaic-strong: 0.55 0.14 200;
    --mosaic-soft: 0.9 0.05 195;
    --mosaic-fg: 0.97 0.01 100;
    --mosaic-track: 0.88 0.03 130;

    /* Coverage-gap ramp (missed flight passes) — amber → orange → red */
    --gap-low: 0.84 0.12 80;
    --gap-moderate: 0.72 0.17 55;
    --gap-severe: 0.58 0.22 25;

    /* Problem-zone markers (NDVI/NDRE cross-reference flags) */
    --problem-zone: 0.55 0.21 27;
    --problem-zone-soft: 0.93 0.05 25;
    --problem-zone-fg: 0.97 0.01 100;

    /* AI intelligence narrative panel — grower-facing field read */
    --narrative-surface: 0.99 0.005 100;
    --narrative-border: 0.85 0.05 195;
    --narrative-accent: 0.62 0.13 195;
    --narrative-muted: 0.5 0.04 140;
    --narrative-healthy: 0.55 0.15 148;
    --narrative-warning: 0.72 0.17 55;
    --narrative-severe: 0.58 0.22 25;

    /* Mosaic stitch CTA gradient (cyan → teal) */
    --gradient-mosaic: linear-gradient(
      135deg,
      oklch(0.62 0.13 195) 0%,
      oklch(0.55 0.14 200) 100%
    );

    /* ── NDVI analysis layer tokens ── */
    /* Green-to-red vegetation-health ramp (classic NDVI colormap):
       red = bare soil / no vegetation → yellow = sparse → deep green = dense healthy */
    --ndvi-low: 0.55 0.2 25;
    --ndvi-mid-low: 0.72 0.17 55;
    --ndvi-mid: 0.84 0.16 85;
    --ndvi-mid-high: 0.72 0.14 130;
    --ndvi-high: 0.5 0.15 148;
    --ndvi-surface: 0.99 0.005 100;
    --ndvi-border: 0.85 0.06 148;
    --ndvi-accent: 0.5 0.15 148;
    --ndvi-track: 0.88 0.03 130;

    /* NDVI legend color-scale gradient (low → high) — matches ndviAbsoluteRamp:
       yellow (stressed) → lime → green → deep green (optimal chlorophyll) */
    --gradient-ndvi: linear-gradient(
      90deg,
      #ffff00 0%,
      #ccff00 12%,
      #99ff00 25%,
      #66cc00 40%,
      #339900 55%,
      #1a7a00 70%,
      #006600 85%,
      #004d00 100%
    );

    /* ── NDRE analysis layer tokens ── */
    /* Red-edge vegetation ramp — shifted toward red/orange hue to separate the
       red-edge index visually from NDVI's pure-green ramp */
    --ndre-low: 0.55 0.2 25;
    --ndre-mid-low: 0.72 0.17 45;
    --ndre-mid: 0.8 0.16 60;
    --ndre-mid-high: 0.72 0.14 120;
    --ndre-high: 0.5 0.15 148;
    --ndre-surface: 0.99 0.005 100;
    --ndre-border: 0.85 0.06 40;
    --ndre-accent: 0.5 0.15 40;
    --ndre-track: 0.88 0.03 130;

    /* NDRE legend color-scale gradient (low → high) — matches ndreAbsoluteRamp:
       deep red (stressed) → amber → yellow → lime → light green → dark green */
    --gradient-ndre: linear-gradient(
      90deg,
      #b91c1c 0%,
      #f59e0b 20%,
      #facc15 40%,
      #84cc16 60%,
      #4ade80 80%,
      #15803d 100%
    );

    /* ── Layer-generation control panel tokens ── */
    /* Panel for generating analysis layers (NDVI / NDRE) on top of the base map */
    --layer-surface: 0.99 0.005 100;
    --layer-border: 0.85 0.05 195;
    --layer-accent: 0.62 0.13 195;
    --layer-muted: 0.5 0.04 140;
    --layer-track: 0.88 0.03 130;

    /* ── Runtime health banner tokens ── */
    /* Status-driven banner: healthy / warning / error. Each state carries a
       strong accent, a soft surface chip, and a subtle ring for AA+ legibility
       on both the light app shell and dark mode. */
    --health-banner-surface: 0.99 0.005 100;
    --health-banner-border: 0.88 0.03 130;
    --health-banner-fg: 0.22 0.04 145;

    --health-ok: 0.6 0.16 148;
    --health-ok-soft: 0.92 0.06 148;
    --health-ok-fg: 0.3 0.06 145;

    --health-warn: 0.72 0.16 75;
    --health-warn-soft: 0.94 0.07 80;
    --health-warn-fg: 0.32 0.06 60;

    --health-error: 0.55 0.2 25;
    --health-error-soft: 0.93 0.06 25;
    --health-error-fg: 0.3 0.06 25;

    /* Health banner CTA — status-matched action surface */
    --health-cta: 0.42 0.12 148;
    --health-cta-fg: 0.97 0.01 100;

    /* ── Help-agent diagnostic + guided repair flow tokens ── */
    /* Diagnostic cards: elevated framed surfaces with a cyan "assist" accent
       that separates proactive help from the green agri CTAs and violet AI. */
    --diag-surface: 0.99 0.005 100;
    --diag-border: 0.85 0.05 195;
    --diag-accent: 0.62 0.13 195;
    --diag-muted: 0.5 0.04 140;
    --diag-track: 0.88 0.03 130;

    /* Numbered step indicator states */
    --step-idle: 0.88 0.03 130;
    --step-idle-fg: 0.5 0.04 140;
    --step-active: 0.62 0.13 195;
    --step-active-fg: 0.97 0.01 100;
    --step-done: 0.55 0.15 148;
    --step-done-fg: 0.97 0.01 100;
    --step-error: 0.55 0.2 25;
    --step-error-fg: 0.97 0.01 100;

    /* Repair flow progress bar */
    --repair-progress-fill: 0.55 0.14 200;

    /* Repair action buttons */
    --repair-action: 0.42 0.12 148;
    --repair-action-fg: 0.97 0.01 100;
    --repair-action-soft: 0.92 0.05 148;
    --repair-action-soft-fg: 0.3 0.06 145;

    /* Step success / error confirmation chips */
    --repair-success: 0.55 0.15 148;
    --repair-success-soft: 0.92 0.06 148;
    --repair-success-fg: 0.3 0.06 145;
    --repair-error: 0.55 0.2 25;
    --repair-error-soft: 0.93 0.06 25;
    --repair-error-fg: 0.3 0.06 25;

    /* ── Hybrid ortho provenance system ── */
    /* Every ortho base layer must declare how it was produced. Three states,
       visually distinct but sharing one badge geometry:
         real  = trusted, stitched from real photos      → mosaic cyan-teal (existing family)
         ai    = assisted, synthesized overlay           → violet, NEVER mosaic cyan
         sat   = fallback, satellite tiles, no composite → neutral, deliberately low emphasis
       The AI variant's hue distance from the mosaic family is the safety mechanism:
       a generated overlay can never be mistaken for a real composite at a glance. */
    --prov-real: 0.55 0.14 200;
    --prov-real-soft: 0.93 0.05 195;
    --prov-real-fg: 0.28 0.06 200;

    --prov-ai: 0.5 0.16 305;
    --prov-ai-soft: 0.94 0.05 305;
    --prov-ai-fg: 0.34 0.09 305;

    --prov-sat: 0.52 0.02 130;
    --prov-sat-soft: 0.94 0.01 130;
    --prov-sat-fg: 0.36 0.02 130;

    /* Provenance badge shared chrome */
    --prov-border: 0.86 0.03 130;
    --prov-glyph: 0.55 0.14 200;

    /* ── Build-health banner (ortho pipeline) ── */
    /* Distinct from --health-* (runtime/help-agent): this banner reports the
       outcome of a specific ortho build, including partial-composite counts. */
    --build-ok: 0.55 0.15 148;
    --build-ok-soft: 0.93 0.06 148;
    --build-ok-fg: 0.28 0.06 145;

    --build-warn: 0.68 0.15 70;
    --build-warn-soft: 0.95 0.06 80;
    --build-warn-fg: 0.34 0.07 60;

    --build-fail: 0.55 0.2 25;
    --build-fail-soft: 0.94 0.05 25;
    --build-fail-fg: 0.32 0.08 25;

    --build-banner-surface: 0.99 0.005 100;
    --build-banner-border: 0.88 0.03 130;
    --build-banner-fg: 0.22 0.04 145;
    --build-banner-muted: 0.5 0.04 140;

    /* Primary repair action (failure state) — solid, high emphasis */
    --build-action: 0.42 0.12 148;
    --build-action-fg: 0.97 0.01 100;

    /* Secondary AI-overlay action — violet outline, deliberately quieter than
       the repair action so "fix the real thing" always outranks "generate one" */
    --build-ai-action: 0.5 0.16 305;
    --build-ai-action-soft: 0.95 0.04 305;
    --build-ai-action-fg: 0.34 0.09 305;

    /* ── AI overlay generation states ── */
    --gen-track: 0.9 0.03 305;
    --gen-fill: 0.5 0.16 305;
    --gen-fill-strong: 0.44 0.18 305;
    --gen-surface: 0.99 0.005 100;
    --gen-border: 0.87 0.05 305;
    --gen-fg: 0.3 0.07 305;
    --gen-muted: 0.5 0.04 300;

    /* Provider error + retry */
    --gen-error: 0.55 0.2 25;
    --gen-error-soft: 0.94 0.05 25;
    --gen-error-fg: 0.32 0.08 25;

    /* ── On-map AI watermark ── */
    /* Sits on the imagery itself. Must survive arbitrary map pixels, so it uses
       a dark scrim + light text rather than relying on the underlying photo. */
    --wm-scrim: 0.18 0.02 300;
    --wm-fg: 0.97 0.01 100;
    --wm-border: 0.5 0.06 305;
    --wm-accent: 0.72 0.14 305;

    /* AI overlay generation gradient (violet → magenta) */
    --gradient-generate: linear-gradient(
      135deg,
      oklch(0.5 0.16 305) 0%,
      oklch(0.52 0.18 340) 100%
    );

    /* ══════════════════════════════════════════════════════════════
       SATELLITE-FIRST TARGETED DIAGNOSTIC SYSTEM
       ──────────────────────────────────────────────────────────────
       Measured field diagnostics. These are INSTRUMENT READINGS, not
       generated imagery and not a photo composite. The severity ramp
       lives in the thermal coral→crimson band (hue 15–80): far from
       mosaic cyan-teal (195) and spectral violet (305), so a stress
       zone can never be mistaken for a composite or an AI overlay.
       ══════════════════════════════════════════════════════════════ */

    /* ── Stress-zone severity scale (low → severe) ── */
    /* Thermal instrument ramp: warm yellow → coral → red-orange → crimson */
    --sev-low: 0.82 0.15 88;
    --sev-low-soft: 0.95 0.06 88;
    --sev-low-fg: 0.36 0.08 80;

    --sev-moderate: 0.74 0.17 58;
    --sev-moderate-soft: 0.93 0.07 60;
    --sev-moderate-fg: 0.36 0.09 55;

    --sev-high: 0.62 0.2 35;
    --sev-high-soft: 0.92 0.07 35;
    --sev-high-fg: 0.34 0.1 32;

    --sev-severe: 0.48 0.21 22;
    --sev-severe-soft: 0.9 0.07 22;
    --sev-severe-fg: 0.32 0.11 22;

    /* Severity surface + shared chrome */
    --sev-surface: 0.99 0.005 100;
    --sev-border: 0.86 0.04 45;
    --sev-track: 0.9 0.03 60;
    --sev-muted: 0.5 0.04 50;

    /* Severity legend ramp (low → severe) — matches the polygon fills */
    --gradient-severity: linear-gradient(
      90deg,
      oklch(0.82 0.15 88) 0%,
      oklch(0.74 0.17 58) 34%,
      oklch(0.62 0.2 35) 68%,
      oklch(0.48 0.21 22) 100%
    );

    /* ── Stressor-type palette ── */
    /* Three diagnostic signatures, three separated hues. Each is a
       condition reading, never a layer-provenance signal. */
    /* Chlorosis — yellowing / chlorophyll deficiency (chartreuse-yellow) */
    --stressor-chlorosis: 0.76 0.16 96;
    --stressor-chlorosis-soft: 0.94 0.07 96;
    --stressor-chlorosis-fg: 0.36 0.09 92;

    /* Moisture deficit — water stress (deep azure-blue) */
    --stressor-moisture: 0.52 0.15 250;
    --stressor-moisture-soft: 0.92 0.05 250;
    --stressor-moisture-fg: 0.34 0.1 250;

    /* Canopy thinning — biomass loss / stand reduction (rust-orange) */
    --stressor-canopy: 0.58 0.16 45;
    --stressor-canopy-soft: 0.93 0.06 45;
    --stressor-canopy-fg: 0.34 0.09 42;

    /* ── Diagnostic overlay (GeoJSON vector layers on satellite base) ── */
    /* The satellite basemap is permanent; diagnostics are lightweight
       vector geometry drawn on top. Never raster, never a mosaic fill. */
    --diag-overlay-border: 0.86 0.04 45;
    --diag-overlay-surface: 0.99 0.005 100;
    --diag-overlay-label: 0.16 0.03 145;
    --diag-overlay-halo: 0.99 0.005 100;

    /* Heatmap surface opacity ramp (low → high diagnostic density) */
    --heat-low: 0.86 0.13 90;
    --heat-mid: 0.76 0.17 58;
    --heat-high: 0.62 0.2 35;
    --heat-peak: 0.5 0.22 22;

    /* ── Slide-over detail drawer ── */
    /* Right-side panel for a single stress zone: two-up image comparison
       (raw RGB crop | multispectral index cutout) + metadata block. */
    --drawer-surface: 0.99 0.005 100;
    --drawer-border: 0.86 0.04 45;
    --drawer-header: 0.97 0.01 90;
    --drawer-scrim: 0.16 0.03 145;
    --drawer-fg: 0.22 0.04 145;
    --drawer-muted: 0.5 0.04 50;
    --drawer-rule: 0.88 0.03 80;
    --drawer-accent: 0.62 0.2 35;

    /* Image-comparison frame (two-up: RGB vs index cutout) */
    --compare-frame: 0.88 0.03 80;
    --compare-label-bg: 0.18 0.02 145;
    --compare-label-fg: 0.97 0.01 100;

    /* Coordinate / metadata readout — monospace instrument text */
    --meta-bg: 0.96 0.01 90;
    --meta-fg: 0.24 0.04 60;
    --meta-key: 0.52 0.04 55;
    --meta-rule: 0.86 0.03 80;

    /* ── Per-frame processing progress strip ── */
    /* Frame-by-frame pipeline readout. Uses the diagnostic coral accent so
       it reads as "measuring", not as mosaic stitching (cyan) or AI (violet). */
    --frame-strip-surface: 0.99 0.005 100;
    --frame-strip-border: 0.87 0.04 45;
    --frame-track: 0.9 0.03 60;
    --frame-fill: 0.66 0.19 38;
    --frame-fill-done: 0.6 0.16 148;
    --frame-tick: 0.84 0.03 60;
    --frame-label: 0.5 0.04 50;
    --frame-value: 0.24 0.04 60;

    /* ── Field report: satellite-first diagnostic sections ── */
    /* Report surfaces stay paper-like; each section carries a diagnostic
       accent that matches its content (severity coral, stressor hues). */
    --rpt-summary-accent: 0.42 0.12 148;
    --rpt-summary-soft: 0.94 0.04 148;

    --rpt-priority-accent: 0.55 0.21 27;
    --rpt-priority-soft: 0.94 0.05 25;

    --rpt-cards-accent: 0.62 0.13 195;
    --rpt-cards-soft: 0.94 0.04 195;

    --rpt-plan-accent: 0.5 0.14 305;
    --rpt-plan-soft: 0.95 0.04 305;

    --rpt-section-rule: 0.85 0.03 80;
    --rpt-rank-bg: 0.96 0.01 90;

    /* Visual Field Card — three-up (satellite pin | RGB cutout | index thumb) */
    --card-frame: 0.87 0.03 80;
    --card-pin-ring: 0.62 0.2 35;
    --card-caption: 0.5 0.04 50;

    /* Scouting action plan checklist */
    --plan-check: 0.6 0.16 148;
    --plan-check-soft: 0.94 0.05 148;
    --plan-item-rule: 0.88 0.03 80;
  }

  .dark {
    --background: 0.16 0.03 145;
    --foreground: 0.93 0.02 100;

    --card: 0.2 0.04 145;
    --card-foreground: 0.93 0.02 100;

    --popover: 0.2 0.04 145;
    --popover-foreground: 0.93 0.02 100;

    --primary: 0.6 0.16 148;
    --primary-foreground: 0.16 0.03 145;

    --secondary: 0.26 0.05 145;
    --secondary-foreground: 0.88 0.03 100;

    --muted: 0.24 0.04 145;
    --muted-foreground: 0.62 0.05 140;

    --accent: 0.72 0.16 75;
    --accent-foreground: 0.16 0.03 145;

    --destructive: 0.6 0.22 25;
    --destructive-foreground: 0.97 0.01 100;

    --border: 0.3 0.05 145;
    --input: 0.3 0.05 145;
    --ring: 0.6 0.16 148;

    --success: 0.65 0.18 148;
    --warning: 0.78 0.14 75;

    /* Dark stand count module tokens */
    --stand-badge-bg: 0.14 0.025 145;
    --stand-badge-fg: 0.97 0.005 100;
    --stand-badge-border: 0.5 0.02 145;
    --stand-divider: 0.5 0.02 145;

    --density-low: 0.84 0.17 85;
    --density-mid: 0.72 0.18 55;
    --density-high: 0.66 0.17 142;

    --gap-moderate: 0.72 0.18 55;
    --gap-severe: 0.62 0.23 25;

    /* Dark agri palette */
    --green-deep: 0.22 0.07 148;
    --green-mid: 0.6 0.16 142;
    --green-light: 0.75 0.14 140;
    --green-dark: 0.18 0.05 148;

    --amber: 0.72 0.16 75;
    --amber-light: 0.84 0.12 80;

    --soil: 0.28 0.05 55;
    --soil-dark: 0.14 0.03 50;
    --soil-mid: 0.22 0.04 52;

    --cream: 0.85 0.03 90;
    --cream-light: 0.92 0.02 95;
    --cream-mid: 0.72 0.04 90;

    --header: 0.93 0.02 100;

    --sidebar: 0.2 0.04 145;
    --sidebar-foreground: 0.93 0.02 100;
    --sidebar-primary: 0.6 0.16 148;
    --sidebar-primary-foreground: 0.16 0.03 145;
    --sidebar-accent: 0.26 0.05 145;
    --sidebar-accent-foreground: 0.88 0.03 100;
    --sidebar-border: 0.3 0.05 145;
    --sidebar-ring: 0.6 0.16 148;

    /* Dark field report surface */
    --report-bg: 0.2 0.04 60;
    --report-ink: 0.93 0.02 95;
    --report-muted: 0.66 0.03 70;
    --report-rule: 0.3 0.04 70;

    /* Dark grid map zone health ramp */
    --zone-healthy: 0.66 0.17 142;
    --zone-moderate: 0.78 0.17 75;
    --zone-stress: 0.62 0.22 30;
    --zone-label: 0.95 0.01 100;
    --compass-accent: 0.6 0.16 142;

    /* Dark download box */
    --download-bg: 0.2 0.04 60;
    --download-border: 0.3 0.04 70;

    /* Dark flight comparison: zone-change highlight system */
    --change-improved: 0.62 0.16 148;
    --change-declined: 0.6 0.22 27;
    --change-unchanged: 0.72 0.02 90;
    --change-legend-fg: 0.88 0.03 100;
    --change-summary-bg: 0.2 0.04 60;

    /* Dark Market Forecast module tokens */
    --forecast-surface: 0.2 0.04 145;
    --forecast-rule: 0.3 0.05 145;
    --forecast-local: 0.68 0.12 195;
    --forecast-local-soft: 0.26 0.05 195;
    --forecast-world: 0.66 0.11 265;
    --forecast-world-soft: 0.26 0.05 265;
    --market-gold: 0.76 0.13 82;
    --market-gold-soft: 0.24 0.05 90;
    --outlook-favorable: 0.62 0.16 148;
    --outlook-favorable-soft: 0.24 0.06 148;
    --outlook-neutral: 0.76 0.14 75;
    --outlook-neutral-soft: 0.26 0.05 80;
    --outlook-unfavorable: 0.6 0.22 27;
    --outlook-unfavorable-soft: 0.26 0.06 25;

    /* Dark AI Multispectral Map module tokens */
    --spectral: 0.66 0.15 305;
    --spectral-strong: 0.72 0.17 305;
    --spectral-soft: 0.24 0.06 305;
    --spectral-fg: 0.16 0.03 145;

    --ms-surface: 0.17 0.04 145;
    --ms-border: 0.42 0.09 305;
    --ms-accent: 0.66 0.15 305;

    --gradient-spectral: linear-gradient(
      135deg,
      oklch(0.66 0.15 305) 0%,
      oklch(0.62 0.17 340) 100%
    );

    /* Dark mosaic overlay module tokens */
    --mosaic: 0.72 0.13 195;
    --mosaic-strong: 0.78 0.14 200;
    --mosaic-soft: 0.24 0.05 195;
    --mosaic-fg: 0.16 0.03 145;
    --mosaic-track: 0.3 0.05 145;

    /* Dark coverage-gap ramp */
    --gap-low: 0.84 0.13 80;
    --gap-moderate: 0.76 0.18 55;
    --gap-severe: 0.64 0.23 25;

    /* Dark problem-zone markers */
    --problem-zone: 0.62 0.22 27;
    --problem-zone-soft: 0.26 0.07 25;
    --problem-zone-fg: 0.97 0.01 100;

    /* Dark AI intelligence narrative panel */
    --narrative-surface: 0.17 0.04 145;
    --narrative-border: 0.42 0.09 195;
    --narrative-accent: 0.72 0.13 195;
    --narrative-muted: 0.62 0.05 140;
    --narrative-healthy: 0.62 0.16 148;
    --narrative-warning: 0.76 0.18 55;
    --narrative-severe: 0.64 0.23 25;

    /* Dark mosaic stitch CTA gradient */
    --gradient-mosaic: linear-gradient(
      135deg,
      oklch(0.72 0.13 195) 0%,
      oklch(0.66 0.14 200) 100%
    );

    /* Dark NDVI analysis layer tokens */
    --ndvi-low: 0.62 0.22 25;
    --ndvi-mid-low: 0.76 0.18 55;
    --ndvi-mid: 0.86 0.17 85;
    --ndvi-mid-high: 0.76 0.16 130;
    --ndvi-high: 0.6 0.16 148;
    --ndvi-surface: 0.17 0.04 145;
    --ndvi-border: 0.42 0.09 148;
    --ndvi-accent: 0.6 0.16 148;
    --ndvi-track: 0.3 0.05 145;

    --gradient-ndvi: linear-gradient(
      90deg,
      #ffff00 0%,
      #ccff00 12%,
      #99ff00 25%,
      #66cc00 40%,
      #339900 55%,
      #1a7a00 70%,
      #006600 85%,
      #004d00 100%
    );

    /* Dark NDRE analysis layer tokens */
    --ndre-low: 0.62 0.22 25;
    --ndre-mid-low: 0.76 0.18 45;
    --ndre-mid: 0.82 0.17 60;
    --ndre-mid-high: 0.76 0.16 120;
    --ndre-high: 0.6 0.16 148;
    --ndre-surface: 0.17 0.04 145;
    --ndre-border: 0.42 0.09 40;
    --ndre-accent: 0.6 0.16 40;
    --ndre-track: 0.3 0.05 145;

    --gradient-ndre: linear-gradient(
      90deg,
      #b91c1c 0%,
      #f59e0b 20%,
      #facc15 40%,
      #84cc16 60%,
      #4ade80 80%,
      #15803d 100%
    );

    /* Dark layer-generation control panel tokens */
    --layer-surface: 0.17 0.04 145;
    --layer-border: 0.42 0.09 195;
    --layer-accent: 0.72 0.13 195;
    --layer-muted: 0.62 0.05 140;
    --layer-track: 0.3 0.05 145;

    /* Dark runtime health banner tokens */
    --health-banner-surface: 0.2 0.04 145;
    --health-banner-border: 0.3 0.05 145;
    --health-banner-fg: 0.93 0.02 100;

    --health-ok: 0.65 0.18 148;
    --health-ok-soft: 0.24 0.06 148;
    --health-ok-fg: 0.82 0.08 148;

    --health-warn: 0.78 0.16 75;
    --health-warn-soft: 0.26 0.06 80;
    --health-warn-fg: 0.86 0.09 80;

    --health-error: 0.62 0.22 25;
    --health-error-soft: 0.26 0.07 25;
    --health-error-fg: 0.84 0.1 25;

    --health-cta: 0.6 0.16 148;
    --health-cta-fg: 0.16 0.03 145;

    /* Dark help-agent diagnostic + guided repair flow tokens */
    --diag-surface: 0.17 0.04 145;
    --diag-border: 0.42 0.09 195;
    --diag-accent: 0.72 0.13 195;
    --diag-muted: 0.62 0.05 140;
    --diag-track: 0.3 0.05 145;

    --step-idle: 0.3 0.05 145;
    --step-idle-fg: 0.62 0.05 140;
    --step-active: 0.72 0.13 195;
    --step-active-fg: 0.16 0.03 145;
    --step-done: 0.62 0.16 148;
    --step-done-fg: 0.16 0.03 145;
    --step-error: 0.62 0.22 25;
    --step-error-fg: 0.97 0.01 100;

    --repair-progress-fill: 0.72 0.14 200;

    --repair-action: 0.6 0.16 148;
    --repair-action-fg: 0.16 0.03 145;
    --repair-action-soft: 0.24 0.06 148;
    --repair-action-soft-fg: 0.82 0.08 148;

    --repair-success: 0.62 0.16 148;
    --repair-success-soft: 0.24 0.06 148;
    --repair-success-fg: 0.82 0.08 148;
    --repair-error: 0.62 0.22 25;
    --repair-error-soft: 0.26 0.07 25;
    --repair-error-fg: 0.84 0.1 25;

    /* ── Dark hybrid ortho provenance system ── */
    --prov-real: 0.72 0.13 195;
    --prov-real-soft: 0.26 0.05 195;
    --prov-real-fg: 0.84 0.07 195;

    --prov-ai: 0.68 0.16 305;
    --prov-ai-soft: 0.28 0.07 305;
    --prov-ai-fg: 0.86 0.08 305;

    --prov-sat: 0.7 0.02 130;
    --prov-sat-soft: 0.26 0.02 130;
    --prov-sat-fg: 0.82 0.02 130;

    --prov-border: 0.32 0.04 145;
    --prov-glyph: 0.72 0.13 195;

    /* ── Dark build-health banner ── */
    --build-ok: 0.65 0.17 148;
    --build-ok-soft: 0.25 0.06 148;
    --build-ok-fg: 0.84 0.08 148;

    --build-warn: 0.78 0.15 75;
    --build-warn-soft: 0.27 0.06 80;
    --build-warn-fg: 0.88 0.09 80;

    --build-fail: 0.62 0.22 25;
    --build-fail-soft: 0.27 0.07 25;
    --build-fail-fg: 0.86 0.1 25;

    --build-banner-surface: 0.2 0.04 145;
    --build-banner-border: 0.3 0.05 145;
    --build-banner-fg: 0.93 0.02 100;
    --build-banner-muted: 0.62 0.05 140;

    --build-action: 0.6 0.16 148;
    --build-action-fg: 0.16 0.03 145;

    --build-ai-action: 0.68 0.16 305;
    --build-ai-action-soft: 0.28 0.07 305;
    --build-ai-action-fg: 0.86 0.08 305;

    /* ── Dark AI overlay generation states ── */
    --gen-track: 0.3 0.05 305;
    --gen-fill: 0.68 0.16 305;
    --gen-fill-strong: 0.74 0.17 305;
    --gen-surface: 0.17 0.04 145;
    --gen-border: 0.4 0.08 305;
    --gen-fg: 0.88 0.06 305;
    --gen-muted: 0.64 0.04 300;

    --gen-error: 0.62 0.22 25;
    --gen-error-soft: 0.27 0.07 25;
    --gen-error-fg: 0.86 0.1 25;

    /* ── Dark on-map AI watermark ── */
    --wm-scrim: 0.14 0.02 300;
    --wm-fg: 0.97 0.01 100;
    --wm-border: 0.55 0.08 305;
    --wm-accent: 0.78 0.14 305;

    --gradient-generate: linear-gradient(
      135deg,
      oklch(0.68 0.16 305) 0%,
      oklch(0.62 0.18 340) 100%
    );

    /* ══ Dark: Satellite-First Targeted Diagnostic system ══ */
    /* Severity ramp lifted in L for dark surfaces; hue band unchanged so
       the coral→crimson identity survives the mode switch. */
    --sev-low: 0.84 0.16 88;
    --sev-low-soft: 0.26 0.07 88;
    --sev-low-fg: 0.88 0.1 88;

    --sev-moderate: 0.78 0.18 58;
    --sev-moderate-soft: 0.27 0.08 60;
    --sev-moderate-fg: 0.88 0.11 58;

    --sev-high: 0.68 0.21 35;
    --sev-high-soft: 0.28 0.09 35;
    --sev-high-fg: 0.86 0.12 35;

    --sev-severe: 0.58 0.22 22;
    --sev-severe-soft: 0.29 0.09 22;
    --sev-severe-fg: 0.84 0.13 22;

    --sev-surface: 0.17 0.04 145;
    --sev-border: 0.4 0.08 45;
    --sev-track: 0.3 0.05 50;
    --sev-muted: 0.64 0.04 50;

    --gradient-severity: linear-gradient(
      90deg,
      oklch(0.84 0.16 88) 0%,
      oklch(0.78 0.18 58) 34%,
      oklch(0.68 0.21 35) 68%,
      oklch(0.58 0.22 22) 100%
    );

    /* Dark stressor-type palette */
    --stressor-chlorosis: 0.82 0.17 96;
    --stressor-chlorosis-soft: 0.27 0.08 96;
    --stressor-chlorosis-fg: 0.88 0.11 96;

    --stressor-moisture: 0.68 0.15 250;
    --stressor-moisture-soft: 0.26 0.08 250;
    --stressor-moisture-fg: 0.84 0.11 250;

    --stressor-canopy: 0.7 0.17 45;
    --stressor-canopy-soft: 0.28 0.08 45;
    --stressor-canopy-fg: 0.86 0.11 45;

    /* Dark diagnostic overlay */
    --diag-overlay-border: 0.4 0.08 45;
    --diag-overlay-surface: 0.17 0.04 145;
    --diag-overlay-label: 0.95 0.01 100;
    --diag-overlay-halo: 0.14 0.03 145;

    --heat-low: 0.82 0.14 90;
    --heat-mid: 0.76 0.18 58;
    --heat-high: 0.68 0.21 35;
    --heat-peak: 0.58 0.23 22;

    /* Dark slide-over detail drawer */
    --drawer-surface: 0.17 0.04 145;
    --drawer-border: 0.4 0.08 45;
    --drawer-header: 0.2 0.04 145;
    --drawer-scrim: 0.1 0.02 145;
    --drawer-fg: 0.93 0.02 100;
    --drawer-muted: 0.64 0.04 50;
    --drawer-rule: 0.3 0.04 50;
    --drawer-accent: 0.68 0.21 35;

    --compare-frame: 0.32 0.05 50;
    --compare-label-bg: 0.12 0.02 145;
    --compare-label-fg: 0.97 0.01 100;

    --meta-bg: 0.2 0.04 145;
    --meta-fg: 0.9 0.02 90;
    --meta-key: 0.64 0.04 55;
    --meta-rule: 0.3 0.04 50;

    /* Dark per-frame processing progress strip */
    --frame-strip-surface: 0.17 0.04 145;
    --frame-strip-border: 0.4 0.08 45;
    --frame-track: 0.3 0.05 50;
    --frame-fill: 0.7 0.19 38;
    --frame-fill-done: 0.65 0.17 148;
    --frame-tick: 0.36 0.04 50;
    --frame-label: 0.64 0.04 50;
    --frame-value: 0.9 0.02 90;

    /* Dark field report diagnostic sections */
    --rpt-summary-accent: 0.65 0.17 148;
    --rpt-summary-soft: 0.25 0.06 148;

    --rpt-priority-accent: 0.62 0.22 27;
    --rpt-priority-soft: 0.27 0.07 25;

    --rpt-cards-accent: 0.72 0.13 195;
    --rpt-cards-soft: 0.25 0.05 195;

    --rpt-plan-accent: 0.68 0.16 305;
    --rpt-plan-soft: 0.27 0.06 305;

    --rpt-section-rule: 0.3 0.04 50;
    --rpt-rank-bg: 0.2 0.04 145;

    --card-frame: 0.32 0.05 50;
    --card-pin-ring: 0.68 0.21 35;
    --card-caption: 0.64 0.04 50;

    --plan-check: 0.65 0.17 148;
    --plan-check-soft: 0.25 0.06 148;
    --plan-item-rule: 0.3 0.04 50;
  }
  * {
  border-color: oklch(var(--border));
}
  body {
  background-color: oklch(var(--background));
  font-family: DM Sans, system-ui, sans-serif;
  color: oklch(var(--foreground));
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.container {
  width: 100%;
  margin-right: auto;
  margin-left: auto;
  padding-right: 2rem;
  padding-left: 2rem;
}
@media (min-width: 1400px) {

  .container {
    max-width: 1400px;
  }
}
.prose {
  color: var(--tw-prose-body);
  max-width: 65ch;
}
.prose :where(p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 1.25em;
  margin-bottom: 1.25em;
}
.prose :where([class~="lead"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-lead);
  font-size: 1.25em;
  line-height: 1.6;
  margin-top: 1.2em;
  margin-bottom: 1.2em;
}
.prose :where(a):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-links);
  text-decoration: underline;
  font-weight: 500;
}
.prose :where(strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-bold);
  font-weight: 600;
}
.prose :where(a strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: inherit;
}
.prose :where(blockquote strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: inherit;
}
.prose :where(thead th strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: inherit;
}
.prose :where(ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: decimal;
  margin-top: 1.25em;
  margin-bottom: 1.25em;
  padding-left: 1.625em;
}
.prose :where(ol[type="A"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: upper-alpha;
}
.prose :where(ol[type="a"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: lower-alpha;
}
.prose :where(ol[type="A" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: upper-alpha;
}
.prose :where(ol[type="a" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: lower-alpha;
}
.prose :where(ol[type="I"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: upper-roman;
}
.prose :where(ol[type="i"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: lower-roman;
}
.prose :where(ol[type="I" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: upper-roman;
}
.prose :where(ol[type="i" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: lower-roman;
}
.prose :where(ol[type="1"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: decimal;
}
.prose :where(ul):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: disc;
  margin-top: 1.25em;
  margin-bottom: 1.25em;
  padding-left: 1.625em;
}
.prose :where(ol > li):not(:where([class~="not-prose"],[class~="not-prose"] *))::marker {
  font-weight: 400;
  color: var(--tw-prose-counters);
}
.prose :where(ul > li):not(:where([class~="not-prose"],[class~="not-prose"] *))::marker {
  color: var(--tw-prose-bullets);
}
.prose :where(dt):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-headings);
  font-weight: 600;
  margin-top: 1.25em;
}
.prose :where(hr):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  border-color: var(--tw-prose-hr);
  border-top-width: 1px;
  margin-top: 3em;
  margin-bottom: 3em;
}
.prose :where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  font-weight: 500;
  font-style: italic;
  color: var(--tw-prose-quotes);
  border-left-width: 0.25rem;
  border-left-color: var(--tw-prose-quote-borders);
  quotes: "\201C""\201D""\2018""\2019";
  margin-top: 1.6em;
  margin-bottom: 1.6em;
  padding-left: 1em;
}
.prose :where(blockquote p:first-of-type):not(:where([class~="not-prose"],[class~="not-prose"] *))::before {
  content: open-quote;
}
.prose :where(blockquote p:last-of-type):not(:where([class~="not-prose"],[class~="not-prose"] *))::after {
  content: close-quote;
}
.prose :where(h1):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-headings);
  font-weight: 800;
  font-size: 2.25em;
  margin-top: 0;
  margin-bottom: 0.8888889em;
  line-height: 1.1111111;
}
.prose :where(h1 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  font-weight: 900;
  color: inherit;
}
.prose :where(h2):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-headings);
  font-weight: 700;
  font-size: 1.5em;
  margin-top: 2em;
  margin-bottom: 1em;
  line-height: 1.3333333;
}
.prose :where(h2 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  font-weight: 800;
  color: inherit;
}
.prose :where(h3):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-headings);
  font-weight: 600;
  font-size: 1.25em;
  margin-top: 1.6em;
  margin-bottom: 0.6em;
  line-height: 1.6;
}
.prose :where(h3 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  font-weight: 700;
  color: inherit;
}
.prose :where(h4):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-headings);
  font-weight: 600;
  margin-top: 1.5em;
  margin-bottom: 0.5em;
  line-height: 1.5;
}
.prose :where(h4 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  font-weight: 700;
  color: inherit;
}
.prose :where(img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 2em;
  margin-bottom: 2em;
}
.prose :where(picture):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  display: block;
  margin-top: 2em;
  margin-bottom: 2em;
}
.prose :where(kbd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  font-weight: 500;
  font-family: inherit;
  color: var(--tw-prose-kbd);
  box-shadow: 0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%), 0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%);
  font-size: 0.875em;
  border-radius: 0.3125rem;
  padding-top: 0.1875em;
  padding-right: 0.375em;
  padding-bottom: 0.1875em;
  padding-left: 0.375em;
}
.prose :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-code);
  font-weight: 600;
  font-size: 0.875em;
}
.prose :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *))::before {
  content: "`";
}
.prose :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *))::after {
  content: "`";
}
.prose :where(a code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: inherit;
}
.prose :where(h1 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: inherit;
}
.prose :where(h2 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: inherit;
  font-size: 0.875em;
}
.prose :where(h3 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: inherit;
  font-size: 0.9em;
}
.prose :where(h4 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: inherit;
}
.prose :where(blockquote code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: inherit;
}
.prose :where(thead th code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: inherit;
}
.prose :where(pre):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-pre-code);
  background-color: var(--tw-prose-pre-bg);
  overflow-x: auto;
  font-weight: 400;
  font-size: 0.875em;
  line-height: 1.7142857;
  margin-top: 1.7142857em;
  margin-bottom: 1.7142857em;
  border-radius: 0.375rem;
  padding-top: 0.8571429em;
  padding-right: 1.1428571em;
  padding-bottom: 0.8571429em;
  padding-left: 1.1428571em;
}
.prose :where(pre code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  background-color: transparent;
  border-width: 0;
  border-radius: 0;
  padding: 0;
  font-weight: inherit;
  color: inherit;
  font-size: inherit;
  font-family: inherit;
  line-height: inherit;
}
.prose :where(pre code):not(:where([class~="not-prose"],[class~="not-prose"] *))::before {
  content: none;
}
.prose :where(pre code):not(:where([class~="not-prose"],[class~="not-prose"] *))::after {
  content: none;
}
.prose :where(table):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  width: 100%;
  table-layout: auto;
  text-align: left;
  margin-top: 2em;
  margin-bottom: 2em;
  font-size: 0.875em;
  line-height: 1.7142857;
}
.prose :where(thead):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  border-bottom-width: 1px;
  border-bottom-color: var(--tw-prose-th-borders);
}
.prose :where(thead th):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-headings);
  font-weight: 600;
  vertical-align: bottom;
  padding-right: 0.5714286em;
  padding-bottom: 0.5714286em;
  padding-left: 0.5714286em;
}
.prose :where(tbody tr):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  border-bottom-width: 1px;
  border-bottom-color: var(--tw-prose-td-borders);
}
.prose :where(tbody tr:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  border-bottom-width: 0;
}
.prose :where(tbody td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  vertical-align: baseline;
}
.prose :where(tfoot):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  border-top-width: 1px;
  border-top-color: var(--tw-prose-th-borders);
}
.prose :where(tfoot td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  vertical-align: top;
}
.prose :where(figure > *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0;
  margin-bottom: 0;
}
.prose :where(figcaption):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-captions);
  font-size: 0.875em;
  line-height: 1.4285714;
  margin-top: 0.8571429em;
}
.prose {
  --tw-prose-body: #374151;
  --tw-prose-headings: #111827;
  --tw-prose-lead: #4b5563;
  --tw-prose-links: #111827;
  --tw-prose-bold: #111827;
  --tw-prose-counters: #6b7280;
  --tw-prose-bullets: #d1d5db;
  --tw-prose-hr: #e5e7eb;
  --tw-prose-quotes: #111827;
  --tw-prose-quote-borders: #e5e7eb;
  --tw-prose-captions: #6b7280;
  --tw-prose-kbd: #111827;
  --tw-prose-kbd-shadows: 17 24 39;
  --tw-prose-code: #111827;
  --tw-prose-pre-code: #e5e7eb;
  --tw-prose-pre-bg: #1f2937;
  --tw-prose-th-borders: #d1d5db;
  --tw-prose-td-borders: #e5e7eb;
  --tw-prose-invert-body: #d1d5db;
  --tw-prose-invert-headings: #fff;
  --tw-prose-invert-lead: #9ca3af;
  --tw-prose-invert-links: #fff;
  --tw-prose-invert-bold: #fff;
  --tw-prose-invert-counters: #9ca3af;
  --tw-prose-invert-bullets: #4b5563;
  --tw-prose-invert-hr: #374151;
  --tw-prose-invert-quotes: #f3f4f6;
  --tw-prose-invert-quote-borders: #374151;
  --tw-prose-invert-captions: #9ca3af;
  --tw-prose-invert-kbd: #fff;
  --tw-prose-invert-kbd-shadows: 255 255 255;
  --tw-prose-invert-code: #fff;
  --tw-prose-invert-pre-code: #d1d5db;
  --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);
  --tw-prose-invert-th-borders: #4b5563;
  --tw-prose-invert-td-borders: #374151;
  font-size: 1rem;
  line-height: 1.75;
}
.prose :where(picture > img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0;
  margin-bottom: 0;
}
.prose :where(video):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 2em;
  margin-bottom: 2em;
}
.prose :where(li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}
.prose :where(ol > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  padding-left: 0.375em;
}
.prose :where(ul > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  padding-left: 0.375em;
}
.prose :where(.prose > ul > li p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0.75em;
  margin-bottom: 0.75em;
}
.prose :where(.prose > ul > li > *:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 1.25em;
}
.prose :where(.prose > ul > li > *:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-bottom: 1.25em;
}
.prose :where(.prose > ol > li > *:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 1.25em;
}
.prose :where(.prose > ol > li > *:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-bottom: 1.25em;
}
.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0.75em;
  margin-bottom: 0.75em;
}
.prose :where(dl):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 1.25em;
  margin-bottom: 1.25em;
}
.prose :where(dd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0.5em;
  padding-left: 1.625em;
}
.prose :where(hr + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0;
}
.prose :where(h2 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0;
}
.prose :where(h3 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0;
}
.prose :where(h4 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0;
}
.prose :where(thead th:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  padding-left: 0;
}
.prose :where(thead th:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  padding-right: 0;
}
.prose :where(tbody td, tfoot td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  padding-top: 0.5714286em;
  padding-right: 0.5714286em;
  padding-bottom: 0.5714286em;
  padding-left: 0.5714286em;
}
.prose :where(tbody td:first-child, tfoot td:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  padding-left: 0;
}
.prose :where(tbody td:last-child, tfoot td:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  padding-right: 0;
}
.prose :where(figure):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 2em;
  margin-bottom: 2em;
}
.prose :where(.prose > :first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0;
}
.prose :where(.prose > :last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-bottom: 0;
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}
.pointer-events-none {
  pointer-events: none;
}
.\!visible {
  visibility: visible !important;
}
.visible {
  visibility: visible;
}
.invisible {
  visibility: hidden;
}
.collapse {
  visibility: collapse;
}
.static {
  position: static;
}
.fixed {
  position: fixed;
}
.absolute {
  position: absolute;
}
.relative {
  position: relative;
}
.sticky {
  position: sticky;
}
.inset-0 {
  inset: 0px;
}
.inset-x-0 {
  left: 0px;
  right: 0px;
}
.inset-y-0 {
  top: 0px;
  bottom: 0px;
}
.-bottom-12 {
  bottom: -3rem;
}
.-left-12 {
  left: -3rem;
}
.-right-12 {
  right: -3rem;
}
.-top-12 {
  top: -3rem;
}
.bottom-0 {
  bottom: 0px;
}
.bottom-1 {
  bottom: 0.25rem;
}
.bottom-4 {
  bottom: 1rem;
}
.left-0 {
  left: 0px;
}
.left-1\.5 {
  left: 0.375rem;
}
.left-1\/2 {
  left: 50%;
}
.left-2 {
  left: 0.5rem;
}
.left-3 {
  left: 0.75rem;
}
.left-4 {
  left: 1rem;
}
.left-\[50\%\] {
  left: 50%;
}
.right-0 {
  right: 0px;
}
.right-1 {
  right: 0.25rem;
}
.right-2 {
  right: 0.5rem;
}
.right-3 {
  right: 0.75rem;
}
.right-4 {
  right: 1rem;
}
.top-0 {
  top: 0px;
}
.top-1\.5 {
  top: 0.375rem;
}
.top-1\/2 {
  top: 50%;
}
.top-3 {
  top: 0.75rem;
}
.top-3\.5 {
  top: 0.875rem;
}
.top-4 {
  top: 1rem;
}
.top-\[1px\] {
  top: 1px;
}
.top-\[50\%\] {
  top: 50%;
}
.top-\[60\%\] {
  top: 60%;
}
.top-full {
  top: 100%;
}
.isolate {
  isolation: isolate;
}
.z-0 {
  z-index: 0;
}
.z-10 {
  z-index: 10;
}
.z-20 {
  z-index: 20;
}
.z-50 {
  z-index: 50;
}
.z-\[10000\] {
  z-index: 10000;
}
.z-\[1000\] {
  z-index: 1000;
}
.z-\[100\] {
  z-index: 100;
}
.z-\[1050\] {
  z-index: 1050;
}
.z-\[1\] {
  z-index: 1;
}
.z-\[200\] {
  z-index: 200;
}
.z-\[9998\] {
  z-index: 9998;
}
.z-\[9999\] {
  z-index: 9999;
}
.col-start-2 {
  grid-column-start: 2;
}
.row-span-2 {
  grid-row: span 2 / span 2;
}
.row-start-1 {
  grid-row-start: 1;
}
.m-0 {
  margin: 0px;
}
.-mx-1 {
  margin-left: -0.25rem;
  margin-right: -0.25rem;
}
.mx-0\.5 {
  margin-left: 0.125rem;
  margin-right: 0.125rem;
}
.mx-1 {
  margin-left: 0.25rem;
  margin-right: 0.25rem;
}
.mx-2 {
  margin-left: 0.5rem;
  margin-right: 0.5rem;
}
.mx-3 {
  margin-left: 0.75rem;
  margin-right: 0.75rem;
}
.mx-3\.5 {
  margin-left: 0.875rem;
  margin-right: 0.875rem;
}
.mx-4 {
  margin-left: 1rem;
  margin-right: 1rem;
}
.mx-6 {
  margin-left: 1.5rem;
  margin-right: 1.5rem;
}
.mx-auto {
  margin-left: auto;
  margin-right: auto;
}
.my-0\.5 {
  margin-top: 0.125rem;
  margin-bottom: 0.125rem;
}
.my-1 {
  margin-top: 0.25rem;
  margin-bottom: 0.25rem;
}
.my-3 {
  margin-top: 0.75rem;
  margin-bottom: 0.75rem;
}
.-ml-4 {
  margin-left: -1rem;
}
.-mt-4 {
  margin-top: -1rem;
}
.mb-0\.5 {
  margin-bottom: 0.125rem;
}
.mb-1 {
  margin-bottom: 0.25rem;
}
.mb-1\.5 {
  margin-bottom: 0.375rem;
}
.mb-2 {
  margin-bottom: 0.5rem;
}
.mb-2\.5 {
  margin-bottom: 0.625rem;
}
.mb-3 {
  margin-bottom: 0.75rem;
}
.mb-4 {
  margin-bottom: 1rem;
}
.mb-5 {
  margin-bottom: 1.25rem;
}
.mb-8 {
  margin-bottom: 2rem;
}
.ml-0\.5 {
  margin-left: 0.125rem;
}
.ml-1 {
  margin-left: 0.25rem;
}
.ml-2 {
  margin-left: 0.5rem;
}
.ml-auto {
  margin-left: auto;
}
.mr-1 {
  margin-right: 0.25rem;
}
.mr-2 {
  margin-right: 0.5rem;
}
.mt-0\.5 {
  margin-top: 0.125rem;
}
.mt-1 {
  margin-top: 0.25rem;
}
.mt-1\.5 {
  margin-top: 0.375rem;
}
.mt-2 {
  margin-top: 0.5rem;
}
.mt-2\.5 {
  margin-top: 0.625rem;
}
.mt-3 {
  margin-top: 0.75rem;
}
.mt-4 {
  margin-top: 1rem;
}
.mt-5 {
  margin-top: 1.25rem;
}
.mt-8 {
  margin-top: 2rem;
}
.mt-auto {
  margin-top: auto;
}
.line-clamp-1 {
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 1;
}
.block {
  display: block;
}
.inline-block {
  display: inline-block;
}
.inline {
  display: inline;
}
.flex {
  display: flex;
}
.inline-flex {
  display: inline-flex;
}
.table {
  display: table;
}
.table-caption {
  display: table-caption;
}
.table-cell {
  display: table-cell;
}
.table-row {
  display: table-row;
}
.\!grid {
  display: grid !important;
}
.grid {
  display: grid;
}
.contents {
  display: contents;
}
.hidden {
  display: none;
}
.aspect-square {
  aspect-ratio: 1 / 1;
}
.aspect-video {
  aspect-ratio: 16 / 9;
}
.size-2 {
  width: 0.5rem;
  height: 0.5rem;
}
.size-2\.5 {
  width: 0.625rem;
  height: 0.625rem;
}
.size-3 {
  width: 0.75rem;
  height: 0.75rem;
}
.size-3\.5 {
  width: 0.875rem;
  height: 0.875rem;
}
.size-4 {
  width: 1rem;
  height: 1rem;
}
.size-6 {
  width: 1.5rem;
  height: 1.5rem;
}
.size-7 {
  width: 1.75rem;
  height: 1.75rem;
}
.size-8 {
  width: 2rem;
  height: 2rem;
}
.size-9 {
  width: 2.25rem;
  height: 2.25rem;
}
.size-auto {
  width: auto;
  height: auto;
}
.size-full {
  width: 100%;
  height: 100%;
}
.h-1 {
  height: 0.25rem;
}
.h-1\.5 {
  height: 0.375rem;
}
.h-10 {
  height: 2.5rem;
}
.h-11 {
  height: 2.75rem;
}
.h-12 {
  height: 3rem;
}
.h-14 {
  height: 3.5rem;
}
.h-16 {
  height: 4rem;
}
.h-2 {
  height: 0.5rem;
}
.h-2\.5 {
  height: 0.625rem;
}
.h-3 {
  height: 0.75rem;
}
.h-3\.5 {
  height: 0.875rem;
}
.h-4 {
  height: 1rem;
}
.h-5 {
  height: 1.25rem;
}
.h-6 {
  height: 1.5rem;
}
.h-7 {
  height: 1.75rem;
}
.h-8 {
  height: 2rem;
}
.h-9 {
  height: 2.25rem;
}
.h-\[1\.125rem\] {
  height: 1.125rem;
}
.h-\[1\.15rem\] {
  height: 1.15rem;
}
.h-\[420px\] {
  height: 420px;
}
.h-\[calc\(100\%-1px\)\] {
  height: calc(100% - 1px);
}
.h-\[var\(--radix-navigation-menu-viewport-height\)\] {
  height: var(--radix-navigation-menu-viewport-height);
}
.h-\[var\(--radix-select-trigger-height\)\] {
  height: var(--radix-select-trigger-height);
}
.h-auto {
  height: auto;
}
.h-dvh {
  height: 100dvh;
}
.h-full {
  height: 100%;
}
.h-px {
  height: 1px;
}
.h-svh {
  height: 100svh;
}
.max-h-24 {
  max-height: 6rem;
}
.max-h-40 {
  max-height: 10rem;
}
.max-h-64 {
  max-height: 16rem;
}
.max-h-\[300px\] {
  max-height: 300px;
}
.max-h-\[calc\(100\%-2rem\)\] {
  max-height: calc(100% - 2rem);
}
.min-h-0 {
  min-height: 0px;
}
.min-h-16 {
  min-height: 4rem;
}
.min-h-4 {
  min-height: 1rem;
}
.min-h-full {
  min-height: 100%;
}
.min-h-screen {
  min-height: 100vh;
}
.min-h-svh {
  min-height: 100svh;
}
.w-0 {
  width: 0px;
}
.w-1 {
  width: 0.25rem;
}
.w-1\.5 {
  width: 0.375rem;
}
.w-10 {
  width: 2.5rem;
}
.w-12 {
  width: 3rem;
}
.w-14 {
  width: 3.5rem;
}
.w-16 {
  width: 4rem;
}
.w-2 {
  width: 0.5rem;
}
.w-2\.5 {
  width: 0.625rem;
}
.w-2\/3 {
  width: 66.666667%;
}
.w-20 {
  width: 5rem;
}
.w-24 {
  width: 6rem;
}
.w-3 {
  width: 0.75rem;
}
.w-3\.5 {
  width: 0.875rem;
}
.w-3\/4 {
  width: 75%;
}
.w-32 {
  width: 8rem;
}
.w-4 {
  width: 1rem;
}
.w-5 {
  width: 1.25rem;
}
.w-6 {
  width: 1.5rem;
}
.w-60 {
  width: 15rem;
}
.w-64 {
  width: 16rem;
}
.w-7 {
  width: 1.75rem;
}
.w-72 {
  width: 18rem;
}
.w-8 {
  width: 2rem;
}
.w-9 {
  width: 2.25rem;
}
.w-96 {
  width: 24rem;
}
.w-\[1\.125rem\] {
  width: 1.125rem;
}
.w-\[100px\] {
  width: 100px;
}
.w-\[28rem\] {
  width: 28rem;
}
.w-\[400px\] {
  width: 400px;
}
.w-\[90\%\] {
  width: 90%;
}
.w-\[92\%\] {
  width: 92%;
}
.w-\[min\(30rem\2c calc\(100\%-2rem\)\)\] {
  width: min(30rem, calc(100% - 2rem));
}
.w-auto {
  width: auto;
}
.w-fit {
  width: -moz-fit-content;
  width: fit-content;
}
.w-full {
  width: 100%;
}
.w-max {
  width: -moz-max-content;
  width: max-content;
}
.w-px {
  width: 1px;
}
.min-w-0 {
  min-width: 0px;
}
.min-w-10 {
  min-width: 2.5rem;
}
.min-w-5 {
  min-width: 1.25rem;
}
.min-w-8 {
  min-width: 2rem;
}
.min-w-9 {
  min-width: 2.25rem;
}
.min-w-\[12rem\] {
  min-width: 12rem;
}
.min-w-\[8rem\] {
  min-width: 8rem;
}
.min-w-\[var\(--radix-select-trigger-width\)\] {
  min-width: var(--radix-select-trigger-width);
}
.max-w-2xl {
  max-width: 42rem;
}
.max-w-5xl {
  max-width: 64rem;
}
.max-w-7xl {
  max-width: 80rem;
}
.max-w-\[130px\] {
  max-width: 130px;
}
.max-w-\[45\%\] {
  max-width: 45%;
}
.max-w-\[520px\] {
  max-width: 520px;
}
.max-w-\[calc\(100\%-2rem\)\] {
  max-width: calc(100% - 2rem);
}
.max-w-\[calc\(100vw-2rem\)\] {
  max-width: calc(100vw - 2rem);
}
.max-w-lg {
  max-width: 32rem;
}
.max-w-max {
  max-width: -moz-max-content;
  max-width: max-content;
}
.max-w-md {
  max-width: 28rem;
}
.max-w-sm {
  max-width: 24rem;
}
.max-w-xs {
  max-width: 20rem;
}
.flex-1 {
  flex: 1 1 0%;
}
.flex-\[2\] {
  flex: 2;
}
.flex-none {
  flex: none;
}
.flex-shrink {
  flex-shrink: 1;
}
.flex-shrink-0 {
  flex-shrink: 0;
}
.shrink-0 {
  flex-shrink: 0;
}
.grow {
  flex-grow: 1;
}
.grow-0 {
  flex-grow: 0;
}
.basis-full {
  flex-basis: 100%;
}
.caption-bottom {
  caption-side: bottom;
}
.border-collapse {
  border-collapse: collapse;
}
.-translate-x-1\/2 {
  --tw-translate-x: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.-translate-x-px {
  --tw-translate-x: -1px;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.-translate-y-1\/2 {
  --tw-translate-y: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-x-0\.5 {
  --tw-translate-x: 0.125rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-x-3\.5 {
  --tw-translate-x: 0.875rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-x-4 {
  --tw-translate-x: 1rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-x-\[-50\%\] {
  --tw-translate-x: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-x-px {
  --tw-translate-x: 1px;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-y-0\.5 {
  --tw-translate-y: 0.125rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-y-\[-50\%\] {
  --tw-translate-y: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-y-\[calc\(-50\%_-_2px\)\] {
  --tw-translate-y: calc(-50% - 2px);
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.rotate-180 {
  --tw-rotate: 180deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.rotate-45 {
  --tw-rotate: 45deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.rotate-90 {
  --tw-rotate: 90deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.scale-\[1\.01\] {
  --tw-scale-x: 1.01;
  --tw-scale-y: 1.01;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.transform {
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
@keyframes health-slide-in {

  from {
    opacity: 0;
    transform: translateY(-14px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.animate-\[health-slide-in_0\.4s_cubic-bezier\(0\.16\2c 1\2c 0\.3\2c 1\)_forwards\] {
  animation: health-slide-in 0.4s cubic-bezier(0.16,1,0.3,1) forwards;
}
@keyframes fade-in {

  from {
    opacity: 0;
    transform: translateY(8px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.animate-fade-in {
  animation: fade-in 0.4s ease-out forwards;
}
@keyframes ping {

  75%, 100% {
    transform: scale(2);
    opacity: 0;
  }
}
.animate-ping {
  animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;
}
@keyframes pulse {

  50% {
    opacity: .5;
  }
}
.animate-pulse {
  animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
@keyframes spin {

  to {
    transform: rotate(360deg);
  }
}
.animate-spin {
  animation: spin 1s linear infinite;
}
.cursor-default {
  cursor: default;
}
.cursor-grab {
  cursor: grab;
}
.cursor-not-allowed {
  cursor: not-allowed;
}
.cursor-pointer {
  cursor: pointer;
}
.touch-none {
  touch-action: none;
}
.select-none {
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}
.resize-none {
  resize: none;
}
.resize-y {
  resize: vertical;
}
.resize {
  resize: both;
}
.scroll-my-1 {
  scroll-margin-top: 0.25rem;
  scroll-margin-bottom: 0.25rem;
}
.scroll-py-1 {
  scroll-padding-top: 0.25rem;
  scroll-padding-bottom: 0.25rem;
}
.list-none {
  list-style-type: none;
}
.appearance-none {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
}
.auto-rows-min {
  grid-auto-rows: min-content;
}
.grid-cols-1 {
  grid-template-columns: repeat(1, minmax(0, 1fr));
}
.grid-cols-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.grid-cols-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.grid-cols-\[0_1fr\] {
  grid-template-columns: 0 1fr;
}
.grid-rows-\[auto_auto\] {
  grid-template-rows: auto auto;
}
.flex-row {
  flex-direction: row;
}
.flex-col {
  flex-direction: column;
}
.flex-col-reverse {
  flex-direction: column-reverse;
}
.flex-wrap {
  flex-wrap: wrap;
}
.items-start {
  align-items: flex-start;
}
.items-end {
  align-items: flex-end;
}
.items-center {
  align-items: center;
}
.items-stretch {
  align-items: stretch;
}
.justify-center {
  justify-content: center;
}
.justify-between {
  justify-content: space-between;
}
.justify-items-start {
  justify-items: start;
}
.gap-0\.5 {
  gap: 0.125rem;
}
.gap-1 {
  gap: 0.25rem;
}
.gap-1\.5 {
  gap: 0.375rem;
}
.gap-2 {
  gap: 0.5rem;
}
.gap-2\.5 {
  gap: 0.625rem;
}
.gap-3 {
  gap: 0.75rem;
}
.gap-4 {
  gap: 1rem;
}
.gap-6 {
  gap: 1.5rem;
}
.gap-8 {
  gap: 2rem;
}
.gap-x-4 {
  -moz-column-gap: 1rem;
       column-gap: 1rem;
}
.gap-x-5 {
  -moz-column-gap: 1.25rem;
       column-gap: 1.25rem;
}
.gap-x-6 {
  -moz-column-gap: 1.5rem;
       column-gap: 1.5rem;
}
.gap-x-8 {
  -moz-column-gap: 2rem;
       column-gap: 2rem;
}
.gap-y-0\.5 {
  row-gap: 0.125rem;
}
.gap-y-1 {
  row-gap: 0.25rem;
}
.gap-y-2 {
  row-gap: 0.5rem;
}
.gap-y-3 {
  row-gap: 0.75rem;
}
.space-y-0\.5 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.125rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.125rem * var(--tw-space-y-reverse));
}
.space-y-1 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));
}
.space-y-1\.5 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.375rem * var(--tw-space-y-reverse));
}
.space-y-2 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
}
.space-y-3 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));
}
.space-y-4 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(1rem * var(--tw-space-y-reverse));
}
.space-y-5 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(1.25rem * var(--tw-space-y-reverse));
}
.space-y-6 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(1.5rem * var(--tw-space-y-reverse));
}
.space-y-8 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(2rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(2rem * var(--tw-space-y-reverse));
}
.divide-y > :not([hidden]) ~ :not([hidden]) {
  --tw-divide-y-reverse: 0;
  border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
  border-bottom-width: calc(1px * var(--tw-divide-y-reverse));
}
.self-start {
  align-self: flex-start;
}
.justify-self-end {
  justify-self: end;
}
.overflow-auto {
  overflow: auto;
}
.overflow-hidden {
  overflow: hidden;
}
.overflow-x-auto {
  overflow-x: auto;
}
.overflow-y-auto {
  overflow-y: auto;
}
.overflow-x-hidden {
  overflow-x: hidden;
}
.truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.whitespace-nowrap {
  white-space: nowrap;
}
.whitespace-pre-line {
  white-space: pre-line;
}
.whitespace-pre-wrap {
  white-space: pre-wrap;
}
.text-balance {
  text-wrap: balance;
}
.break-words {
  overflow-wrap: break-word;
}
.break-all {
  word-break: break-all;
}
.rounded {
  border-radius: 0.25rem;
}
.rounded-2xl {
  border-radius: calc(var(--radius) + 8px);
}
.rounded-\[2px\] {
  border-radius: 2px;
}
.rounded-\[4px\] {
  border-radius: 4px;
}
.rounded-\[inherit\] {
  border-radius: inherit;
}
.rounded-full {
  border-radius: 9999px;
}
.rounded-lg {
  border-radius: var(--radius);
}
.rounded-md {
  border-radius: calc(var(--radius) - 2px);
}
.rounded-none {
  border-radius: 0px;
}
.rounded-sm {
  border-radius: calc(var(--radius) - 4px);
}
.rounded-xl {
  border-radius: calc(var(--radius) + 4px);
}
.rounded-l-md {
  border-top-left-radius: calc(var(--radius) - 2px);
  border-bottom-left-radius: calc(var(--radius) - 2px);
}
.rounded-r-md {
  border-top-right-radius: calc(var(--radius) - 2px);
  border-bottom-right-radius: calc(var(--radius) - 2px);
}
.rounded-tl-sm {
  border-top-left-radius: calc(var(--radius) - 4px);
}
.border {
  border-width: 1px;
}
.border-0 {
  border-width: 0px;
}
.border-2 {
  border-width: 2px;
}
.border-4 {
  border-width: 4px;
}
.border-\[1\.5px\] {
  border-width: 1.5px;
}
.border-y {
  border-top-width: 1px;
  border-bottom-width: 1px;
}
.border-b {
  border-bottom-width: 1px;
}
.border-l {
  border-left-width: 1px;
}
.border-l-2 {
  border-left-width: 2px;
}
.border-l-4 {
  border-left-width: 4px;
}
.border-r {
  border-right-width: 1px;
}
.border-t {
  border-top-width: 1px;
}
.border-dashed {
  border-style: dashed;
}
.border-\[\#0f3d20\]\/20 {
  border-color: rgb(15 61 32 / 0.2);
}
.border-\[oklch\(var\(--health-banner-border\)\)\] {
  border-color: oklch(var(--health-banner-border));
}
.border-agri-amber {
  border-color: oklch(var(--amber));
}
.border-agri-green-mid {
  border-color: oklch(var(--green-mid));
}
.border-blue-200 {
  --tw-border-opacity: 1;
  border-color: rgb(191 219 254 / var(--tw-border-opacity, 1));
}
.border-blue-500 {
  --tw-border-opacity: 1;
  border-color: rgb(59 130 246 / var(--tw-border-opacity, 1));
}
.border-border {
  border-color: oklch(var(--border));
}
.border-destructive\/30 {
  border-color: oklch(var(--destructive) / 0.3);
}
.border-destructive\/40 {
  border-color: oklch(var(--destructive) / 0.4);
}
.border-destructive\/50 {
  border-color: oklch(var(--destructive) / 0.5);
}
.border-drawer-border {
  border-color: oklch(var(--drawer-border));
}
.border-drawer-rule {
  border-color: oklch(var(--drawer-rule));
}
.border-gray-100 {
  --tw-border-opacity: 1;
  border-color: rgb(243 244 246 / var(--tw-border-opacity, 1));
}
.border-green-200 {
  --tw-border-opacity: 1;
  border-color: rgb(187 247 208 / var(--tw-border-opacity, 1));
}
.border-green-300 {
  --tw-border-opacity: 1;
  border-color: rgb(134 239 172 / var(--tw-border-opacity, 1));
}
.border-green-500\/40 {
  border-color: rgb(34 197 94 / 0.4);
}
.border-green-600 {
  --tw-border-opacity: 1;
  border-color: rgb(22 163 74 / var(--tw-border-opacity, 1));
}
.border-indigo-500\/20 {
  border-color: rgb(99 102 241 / 0.2);
}
.border-indigo-500\/30 {
  border-color: rgb(99 102 241 / 0.3);
}
.border-indigo-700\/40 {
  border-color: rgb(67 56 202 / 0.4);
}
.border-indigo-800\/30 {
  border-color: rgb(55 48 163 / 0.3);
}
.border-indigo-800\/40 {
  border-color: rgb(55 48 163 / 0.4);
}
.border-input {
  border-color: oklch(var(--input));
}
.border-ms-border {
  border-color: oklch(var(--ms-border));
}
.border-muted-foreground\/30 {
  border-color: oklch(var(--muted-foreground) / 0.3);
}
.border-primary {
  --tw-border-opacity: 1;
  border-color: oklch(var(--primary) / var(--tw-border-opacity, 1));
}
.border-primary\/20 {
  border-color: oklch(var(--primary) / 0.2);
}
.border-primary\/30 {
  border-color: oklch(var(--primary) / 0.3);
}
.border-primary\/70 {
  border-color: oklch(var(--primary) / 0.7);
}
.border-red-200 {
  --tw-border-opacity: 1;
  border-color: rgb(254 202 202 / var(--tw-border-opacity, 1));
}
.border-red-300 {
  --tw-border-opacity: 1;
  border-color: rgb(252 165 165 / var(--tw-border-opacity, 1));
}
.border-red-400 {
  --tw-border-opacity: 1;
  border-color: rgb(248 113 113 / var(--tw-border-opacity, 1));
}
.border-red-400\/30 {
  border-color: rgb(248 113 113 / 0.3);
}
.border-red-500\/40 {
  border-color: rgb(239 68 68 / 0.4);
}
.border-red-600 {
  --tw-border-opacity: 1;
  border-color: rgb(220 38 38 / var(--tw-border-opacity, 1));
}
.border-report-rule {
  border-color: oklch(var(--report-rule));
}
.border-sidebar-border {
  border-color: oklch(var(--sidebar-border));
}
.border-transparent {
  border-color: transparent;
}
.border-white\/10 {
  border-color: rgb(255 255 255 / 0.1);
}
.border-white\/15 {
  border-color: rgb(255 255 255 / 0.15);
}
.border-white\/30 {
  border-color: rgb(255 255 255 / 0.3);
}
.border-yellow-300 {
  --tw-border-opacity: 1;
  border-color: rgb(253 224 71 / var(--tw-border-opacity, 1));
}
.border-l-amber-500 {
  --tw-border-opacity: 1;
  border-left-color: rgb(245 158 11 / var(--tw-border-opacity, 1));
}
.border-l-blue-500 {
  --tw-border-opacity: 1;
  border-left-color: rgb(59 130 246 / var(--tw-border-opacity, 1));
}
.border-l-emerald-500 {
  --tw-border-opacity: 1;
  border-left-color: rgb(16 185 129 / var(--tw-border-opacity, 1));
}
.border-l-green-500 {
  --tw-border-opacity: 1;
  border-left-color: rgb(34 197 94 / var(--tw-border-opacity, 1));
}
.border-l-transparent {
  border-left-color: transparent;
}
.border-t-agri-green-mid {
  border-top-color: oklch(var(--green-mid));
}
.border-t-transparent {
  border-top-color: transparent;
}
.bg-\[\#0f0f1a\] {
  --tw-bg-opacity: 1;
  background-color: rgb(15 15 26 / var(--tw-bg-opacity, 1));
}
.bg-\[\#0f3d20\] {
  --tw-bg-opacity: 1;
  background-color: rgb(15 61 32 / var(--tw-bg-opacity, 1));
}
.bg-\[\#0f3d20\]\/10 {
  background-color: rgb(15 61 32 / 0.1);
}
.bg-\[\#f4f2eb\] {
  --tw-bg-opacity: 1;
  background-color: rgb(244 242 235 / var(--tw-bg-opacity, 1));
}
.bg-\[oklch\(var\(--health-banner-surface\)\)\] {
  background-color: oklch(var(--health-banner-surface));
}
.bg-\[oklch\(var\(--health-error-soft\)\)\] {
  background-color: oklch(var(--health-error-soft));
}
.bg-\[oklch\(var\(--health-ok-soft\)\)\] {
  background-color: oklch(var(--health-ok-soft));
}
.bg-\[oklch\(var\(--health-warn-soft\)\)\] {
  background-color: oklch(var(--health-warn-soft));
}
.bg-\[oklch\(var\(--step-active\)\)\] {
  background-color: oklch(var(--step-active));
}
.bg-accent {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.bg-agri-amber {
  background-color: oklch(var(--amber));
}
.bg-agri-green-deep {
  background-color: oklch(var(--green-deep));
}
.bg-agri-green-mid {
  background-color: oklch(var(--green-mid));
}
.bg-agri-soil-dark {
  background-color: oklch(var(--soil-dark));
}
.bg-agri-soil-mid {
  background-color: oklch(var(--soil-mid));
}
.bg-amber-50 {
  --tw-bg-opacity: 1;
  background-color: rgb(255 251 235 / var(--tw-bg-opacity, 1));
}
.bg-amber-500 {
  --tw-bg-opacity: 1;
  background-color: rgb(245 158 11 / var(--tw-bg-opacity, 1));
}
.bg-background {
  background-color: oklch(var(--background));
}
.bg-black\/50 {
  background-color: rgb(0 0 0 / 0.5);
}
.bg-black\/60 {
  background-color: rgb(0 0 0 / 0.6);
}
.bg-blue-50 {
  --tw-bg-opacity: 1;
  background-color: rgb(239 246 255 / var(--tw-bg-opacity, 1));
}
.bg-blue-500 {
  --tw-bg-opacity: 1;
  background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1));
}
.bg-blue-600 {
  --tw-bg-opacity: 1;
  background-color: rgb(37 99 235 / var(--tw-bg-opacity, 1));
}
.bg-border {
  background-color: oklch(var(--border));
}
.bg-card {
  background-color: oklch(var(--card));
}
.bg-destructive {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--destructive) / var(--tw-bg-opacity, 1));
}
.bg-destructive\/10 {
  background-color: oklch(var(--destructive) / 0.1);
}
.bg-destructive\/5 {
  background-color: oklch(var(--destructive) / 0.05);
}
.bg-diag-overlay {
  background-color: oklch(var(--diag-overlay-surface));
}
.bg-drawer-accent {
  background-color: oklch(var(--drawer-accent));
}
.bg-drawer-header {
  background-color: oklch(var(--drawer-header));
}
.bg-emerald-400 {
  --tw-bg-opacity: 1;
  background-color: rgb(52 211 153 / var(--tw-bg-opacity, 1));
}
.bg-emerald-50 {
  --tw-bg-opacity: 1;
  background-color: rgb(236 253 245 / var(--tw-bg-opacity, 1));
}
.bg-foreground {
  background-color: oklch(var(--foreground));
}
.bg-gray-900 {
  --tw-bg-opacity: 1;
  background-color: rgb(17 24 39 / var(--tw-bg-opacity, 1));
}
.bg-gray-900\/85 {
  background-color: rgb(17 24 39 / 0.85);
}
.bg-green-100 {
  --tw-bg-opacity: 1;
  background-color: rgb(220 252 231 / var(--tw-bg-opacity, 1));
}
.bg-green-50 {
  --tw-bg-opacity: 1;
  background-color: rgb(240 253 244 / var(--tw-bg-opacity, 1));
}
.bg-green-500 {
  --tw-bg-opacity: 1;
  background-color: rgb(34 197 94 / var(--tw-bg-opacity, 1));
}
.bg-green-600 {
  --tw-bg-opacity: 1;
  background-color: rgb(22 163 74 / var(--tw-bg-opacity, 1));
}
.bg-green-600\/15 {
  background-color: rgb(22 163 74 / 0.15);
}
.bg-indigo-400 {
  --tw-bg-opacity: 1;
  background-color: rgb(129 140 248 / var(--tw-bg-opacity, 1));
}
.bg-indigo-600 {
  --tw-bg-opacity: 1;
  background-color: rgb(79 70 229 / var(--tw-bg-opacity, 1));
}
.bg-indigo-800\/50 {
  background-color: rgb(55 48 163 / 0.5);
}
.bg-indigo-950\/40 {
  background-color: rgb(30 27 75 / 0.4);
}
.bg-indigo-950\/60 {
  background-color: rgb(30 27 75 / 0.6);
}
.bg-layer-accent {
  background-color: oklch(var(--layer-accent));
}
.bg-mosaic {
  background-color: oklch(var(--mosaic));
}
.bg-muted {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--muted) / var(--tw-bg-opacity, 1));
}
.bg-muted\/20 {
  background-color: oklch(var(--muted) / 0.2);
}
.bg-muted\/30 {
  background-color: oklch(var(--muted) / 0.3);
}
.bg-muted\/40 {
  background-color: oklch(var(--muted) / 0.4);
}
.bg-muted\/50 {
  background-color: oklch(var(--muted) / 0.5);
}
.bg-muted\/60 {
  background-color: oklch(var(--muted) / 0.6);
}
.bg-popover {
  background-color: oklch(var(--popover));
}
.bg-primary {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--primary) / var(--tw-bg-opacity, 1));
}
.bg-primary\/10 {
  background-color: oklch(var(--primary) / 0.1);
}
.bg-primary\/20 {
  background-color: oklch(var(--primary) / 0.2);
}
.bg-primary\/5 {
  background-color: oklch(var(--primary) / 0.05);
}
.bg-red-100 {
  --tw-bg-opacity: 1;
  background-color: rgb(254 226 226 / var(--tw-bg-opacity, 1));
}
.bg-red-50 {
  --tw-bg-opacity: 1;
  background-color: rgb(254 242 242 / var(--tw-bg-opacity, 1));
}
.bg-red-500 {
  --tw-bg-opacity: 1;
  background-color: rgb(239 68 68 / var(--tw-bg-opacity, 1));
}
.bg-red-600 {
  --tw-bg-opacity: 1;
  background-color: rgb(220 38 38 / var(--tw-bg-opacity, 1));
}
.bg-red-600\/15 {
  background-color: rgb(220 38 38 / 0.15);
}
.bg-red-900\/40 {
  background-color: rgb(127 29 29 / 0.4);
}
.bg-secondary {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--secondary) / var(--tw-bg-opacity, 1));
}
.bg-sev-low-soft {
  background-color: oklch(var(--sev-low-soft));
}
.bg-sev-moderate-soft {
  background-color: oklch(var(--sev-moderate-soft));
}
.bg-sev-severe-soft {
  background-color: oklch(var(--sev-severe-soft));
}
.bg-sidebar {
  background-color: oklch(var(--sidebar));
}
.bg-sidebar-border {
  background-color: oklch(var(--sidebar-border));
}
.bg-stressor-canopy-soft {
  background-color: oklch(var(--stressor-canopy-soft));
}
.bg-stressor-chlorosis-soft {
  background-color: oklch(var(--stressor-chlorosis-soft));
}
.bg-stressor-moisture-soft {
  background-color: oklch(var(--stressor-moisture-soft));
}
.bg-transparent {
  background-color: transparent;
}
.bg-white {
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
}
.bg-white\/10 {
  background-color: rgb(255 255 255 / 0.1);
}
.bg-white\/15 {
  background-color: rgb(255 255 255 / 0.15);
}
.bg-white\/20 {
  background-color: rgb(255 255 255 / 0.2);
}
.bg-white\/40 {
  background-color: rgb(255 255 255 / 0.4);
}
.bg-white\/95 {
  background-color: rgb(255 255 255 / 0.95);
}
.bg-yellow-100 {
  --tw-bg-opacity: 1;
  background-color: rgb(254 249 195 / var(--tw-bg-opacity, 1));
}
.bg-yellow-500 {
  --tw-bg-opacity: 1;
  background-color: rgb(234 179 8 / var(--tw-bg-opacity, 1));
}
.bg-gradient-to-r {
  background-image: linear-gradient(to right, var(--tw-gradient-stops));
}
.from-green-600 {
  --tw-gradient-from: #16a34a var(--tw-gradient-from-position);
  --tw-gradient-to: rgb(22 163 74 / 0) var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
.to-indigo-600 {
  --tw-gradient-to: #4f46e5 var(--tw-gradient-to-position);
}
.fill-current {
  fill: currentColor;
}
.fill-emerald-400 {
  fill: #34d399;
}
.fill-primary {
  fill: oklch(var(--primary) / 1);
}
.object-contain {
  -o-object-fit: contain;
     object-fit: contain;
}
.object-cover {
  -o-object-fit: cover;
     object-fit: cover;
}
.p-0 {
  padding: 0px;
}
.p-0\.5 {
  padding: 0.125rem;
}
.p-1 {
  padding: 0.25rem;
}
.p-1\.5 {
  padding: 0.375rem;
}
.p-2 {
  padding: 0.5rem;
}
.p-2\.5 {
  padding: 0.625rem;
}
.p-3 {
  padding: 0.75rem;
}
.p-4 {
  padding: 1rem;
}
.p-5 {
  padding: 1.25rem;
}
.p-6 {
  padding: 1.5rem;
}
.p-8 {
  padding: 2rem;
}
.p-\[3px\] {
  padding: 3px;
}
.p-px {
  padding: 1px;
}
.px-0\.5 {
  padding-left: 0.125rem;
  padding-right: 0.125rem;
}
.px-1 {
  padding-left: 0.25rem;
  padding-right: 0.25rem;
}
.px-1\.5 {
  padding-left: 0.375rem;
  padding-right: 0.375rem;
}
.px-2 {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}
.px-2\.5 {
  padding-left: 0.625rem;
  padding-right: 0.625rem;
}
.px-3 {
  padding-left: 0.75rem;
  padding-right: 0.75rem;
}
.px-3\.5 {
  padding-left: 0.875rem;
  padding-right: 0.875rem;
}
.px-4 {
  padding-left: 1rem;
  padding-right: 1rem;
}
.px-5 {
  padding-left: 1.25rem;
  padding-right: 1.25rem;
}
.px-6 {
  padding-left: 1.5rem;
  padding-right: 1.5rem;
}
.py-0\.5 {
  padding-top: 0.125rem;
  padding-bottom: 0.125rem;
}
.py-1 {
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
}
.py-1\.5 {
  padding-top: 0.375rem;
  padding-bottom: 0.375rem;
}
.py-10 {
  padding-top: 2.5rem;
  padding-bottom: 2.5rem;
}
.py-16 {
  padding-top: 4rem;
  padding-bottom: 4rem;
}
.py-2 {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}
.py-2\.5 {
  padding-top: 0.625rem;
  padding-bottom: 0.625rem;
}
.py-3 {
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
}
.py-3\.5 {
  padding-top: 0.875rem;
  padding-bottom: 0.875rem;
}
.py-4 {
  padding-top: 1rem;
  padding-bottom: 1rem;
}
.py-5 {
  padding-top: 1.25rem;
  padding-bottom: 1.25rem;
}
.py-6 {
  padding-top: 1.5rem;
  padding-bottom: 1.5rem;
}
.py-7 {
  padding-top: 1.75rem;
  padding-bottom: 1.75rem;
}
.py-8 {
  padding-top: 2rem;
  padding-bottom: 2rem;
}
.pb-1 {
  padding-bottom: 0.25rem;
}
.pb-2\.5 {
  padding-bottom: 0.625rem;
}
.pb-3 {
  padding-bottom: 0.75rem;
}
.pb-4 {
  padding-bottom: 1rem;
}
.pb-6 {
  padding-bottom: 1.5rem;
}
.pl-2 {
  padding-left: 0.5rem;
}
.pl-4 {
  padding-left: 1rem;
}
.pl-8 {
  padding-left: 2rem;
}
.pr-1 {
  padding-right: 0.25rem;
}
.pr-10 {
  padding-right: 2.5rem;
}
.pr-16 {
  padding-right: 4rem;
}
.pr-2 {
  padding-right: 0.5rem;
}
.pr-2\.5 {
  padding-right: 0.625rem;
}
.pr-8 {
  padding-right: 2rem;
}
.pt-0 {
  padding-top: 0px;
}
.pt-1 {
  padding-top: 0.25rem;
}
.pt-2 {
  padding-top: 0.5rem;
}
.pt-3 {
  padding-top: 0.75rem;
}
.pt-4 {
  padding-top: 1rem;
}
.pt-5 {
  padding-top: 1.25rem;
}
.pt-6 {
  padding-top: 1.5rem;
}
.text-left {
  text-align: left;
}
.text-center {
  text-align: center;
}
.text-right {
  text-align: right;
}
.align-middle {
  vertical-align: middle;
}
.font-brand {
  font-family: Fraunces, Georgia, serif;
}
.font-mono {
  font-family: Geist Mono, ui-monospace, monospace;
}
.font-sans {
  font-family: DM Sans, system-ui, sans-serif;
}
.font-serif {
  font-family: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
}
.text-2xl {
  font-size: 1.5rem;
  line-height: 2rem;
}
.text-\[0\.65rem\] {
  font-size: 0.65rem;
}
.text-\[0\.8rem\] {
  font-size: 0.8rem;
}
.text-\[10px\] {
  font-size: 10px;
}
.text-\[11px\] {
  font-size: 11px;
}
.text-\[15px\] {
  font-size: 15px;
}
.text-\[9px\] {
  font-size: 9px;
}
.text-base {
  font-size: 1rem;
  line-height: 1.5rem;
}
.text-lg {
  font-size: 1.125rem;
  line-height: 1.75rem;
}
.text-sm {
  font-size: 0.875rem;
  line-height: 1.25rem;
}
.text-xl {
  font-size: 1.25rem;
  line-height: 1.75rem;
}
.text-xs {
  font-size: 0.75rem;
  line-height: 1rem;
}
.font-bold {
  font-weight: 700;
}
.font-medium {
  font-weight: 500;
}
.font-normal {
  font-weight: 400;
}
.font-semibold {
  font-weight: 600;
}
.uppercase {
  text-transform: uppercase;
}
.lowercase {
  text-transform: lowercase;
}
.italic {
  font-style: italic;
}
.tabular-nums {
  --tw-numeric-spacing: tabular-nums;
  font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);
}
.leading-none {
  line-height: 1;
}
.leading-relaxed {
  line-height: 1.625;
}
.leading-snug {
  line-height: 1.375;
}
.leading-tight {
  line-height: 1.25;
}
.tracking-\[0\.1em\] {
  letter-spacing: 0.1em;
}
.tracking-tight {
  letter-spacing: -0.025em;
}
.tracking-wide {
  letter-spacing: 0.025em;
}
.tracking-wider {
  letter-spacing: 0.05em;
}
.tracking-widest {
  letter-spacing: 0.1em;
}
.text-\[\#0f3d20\] {
  --tw-text-opacity: 1;
  color: rgb(15 61 32 / var(--tw-text-opacity, 1));
}
.text-\[oklch\(var\(--gap-severe\)\)\] {
  color: oklch(var(--gap-severe));
}
.text-\[oklch\(var\(--green-mid\)\)\] {
  color: oklch(var(--green-mid));
}
.text-\[oklch\(var\(--health-banner-fg\)\)\] {
  color: oklch(var(--health-banner-fg));
}
.text-\[oklch\(var\(--health-error\)\)\] {
  color: oklch(var(--health-error));
}
.text-\[oklch\(var\(--health-error-fg\)\)\] {
  color: oklch(var(--health-error-fg));
}
.text-\[oklch\(var\(--health-ok\)\)\] {
  color: oklch(var(--health-ok));
}
.text-\[oklch\(var\(--health-ok-fg\)\)\] {
  color: oklch(var(--health-ok-fg));
}
.text-\[oklch\(var\(--health-warn\)\)\] {
  color: oklch(var(--health-warn));
}
.text-\[oklch\(var\(--health-warn-fg\)\)\] {
  color: oklch(var(--health-warn-fg));
}
.text-\[oklch\(var\(--step-active-fg\)\)\] {
  color: oklch(var(--step-active-fg));
}
.text-accent-foreground {
  color: oklch(var(--accent-foreground));
}
.text-agri-amber {
  color: oklch(var(--amber));
}
.text-agri-cream-light {
  color: oklch(var(--cream-light));
}
.text-agri-cream-mid {
  color: oklch(var(--cream-mid));
}
.text-agri-green-mid {
  color: oklch(var(--green-mid));
}
.text-agri-soil {
  color: oklch(var(--soil));
}
.text-amber-500 {
  --tw-text-opacity: 1;
  color: rgb(245 158 11 / var(--tw-text-opacity, 1));
}
.text-amber-600 {
  --tw-text-opacity: 1;
  color: rgb(217 119 6 / var(--tw-text-opacity, 1));
}
.text-amber-700 {
  --tw-text-opacity: 1;
  color: rgb(180 83 9 / var(--tw-text-opacity, 1));
}
.text-blue-600 {
  --tw-text-opacity: 1;
  color: rgb(37 99 235 / var(--tw-text-opacity, 1));
}
.text-blue-700 {
  --tw-text-opacity: 1;
  color: rgb(29 78 216 / var(--tw-text-opacity, 1));
}
.text-card-foreground {
  color: oklch(var(--card-foreground));
}
.text-card-pin {
  color: oklch(var(--card-pin-ring));
}
.text-current {
  color: currentColor;
}
.text-destructive {
  --tw-text-opacity: 1;
  color: oklch(var(--destructive) / var(--tw-text-opacity, 1));
}
.text-destructive-foreground {
  color: oklch(var(--destructive-foreground));
}
.text-destructive\/70 {
  color: oklch(var(--destructive) / 0.7);
}
.text-destructive\/80 {
  color: oklch(var(--destructive) / 0.8);
}
.text-drawer-fg {
  color: oklch(var(--drawer-fg));
}
.text-drawer-muted {
  color: oklch(var(--drawer-muted));
}
.text-emerald-400 {
  --tw-text-opacity: 1;
  color: rgb(52 211 153 / var(--tw-text-opacity, 1));
}
.text-emerald-700 {
  --tw-text-opacity: 1;
  color: rgb(4 120 87 / var(--tw-text-opacity, 1));
}
.text-forecast-local {
  color: oklch(var(--forecast-local));
}
.text-forecast-world {
  color: oklch(var(--forecast-world));
}
.text-foreground {
  color: oklch(var(--foreground));
}
.text-frame-fill {
  color: oklch(var(--frame-fill));
}
.text-frame-fill-done {
  color: oklch(var(--frame-fill-done));
}
.text-gap-moderate {
  color: oklch(var(--gap-moderate));
}
.text-gray-400 {
  --tw-text-opacity: 1;
  color: rgb(156 163 175 / var(--tw-text-opacity, 1));
}
.text-gray-500 {
  --tw-text-opacity: 1;
  color: rgb(107 114 128 / var(--tw-text-opacity, 1));
}
.text-gray-600 {
  --tw-text-opacity: 1;
  color: rgb(75 85 99 / var(--tw-text-opacity, 1));
}
.text-gray-900 {
  --tw-text-opacity: 1;
  color: rgb(17 24 39 / var(--tw-text-opacity, 1));
}
.text-green-300 {
  --tw-text-opacity: 1;
  color: rgb(134 239 172 / var(--tw-text-opacity, 1));
}
.text-green-400 {
  --tw-text-opacity: 1;
  color: rgb(74 222 128 / var(--tw-text-opacity, 1));
}
.text-green-600 {
  --tw-text-opacity: 1;
  color: rgb(22 163 74 / var(--tw-text-opacity, 1));
}
.text-green-700 {
  --tw-text-opacity: 1;
  color: rgb(21 128 61 / var(--tw-text-opacity, 1));
}
.text-green-800 {
  --tw-text-opacity: 1;
  color: rgb(22 101 52 / var(--tw-text-opacity, 1));
}
.text-header {
  color: oklch(var(--header));
}
.text-indigo-100 {
  --tw-text-opacity: 1;
  color: rgb(224 231 255 / var(--tw-text-opacity, 1));
}
.text-indigo-200 {
  --tw-text-opacity: 1;
  color: rgb(199 210 254 / var(--tw-text-opacity, 1));
}
.text-indigo-300 {
  --tw-text-opacity: 1;
  color: rgb(165 180 252 / var(--tw-text-opacity, 1));
}
.text-indigo-300\/70 {
  color: rgb(165 180 252 / 0.7);
}
.text-indigo-400 {
  --tw-text-opacity: 1;
  color: rgb(129 140 248 / var(--tw-text-opacity, 1));
}
.text-indigo-400\/50 {
  color: rgb(129 140 248 / 0.5);
}
.text-indigo-400\/60 {
  color: rgb(129 140 248 / 0.6);
}
.text-indigo-400\/70 {
  color: rgb(129 140 248 / 0.7);
}
.text-indigo-600 {
  --tw-text-opacity: 1;
  color: rgb(79 70 229 / var(--tw-text-opacity, 1));
}
.text-inherit {
  color: inherit;
}
.text-layer-accent {
  color: oklch(var(--layer-accent));
}
.text-meta-fg {
  color: oklch(var(--meta-fg));
}
.text-mosaic {
  color: oklch(var(--mosaic));
}
.text-muted-foreground {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.text-muted-foreground\/50 {
  color: oklch(var(--muted-foreground) / 0.5);
}
.text-muted-foreground\/60 {
  color: oklch(var(--muted-foreground) / 0.6);
}
.text-muted-foreground\/70 {
  color: oklch(var(--muted-foreground) / 0.7);
}
.text-narrative-accent {
  color: oklch(var(--narrative-accent));
}
.text-narrative-muted {
  color: oklch(var(--narrative-muted));
}
.text-popover-foreground {
  color: oklch(var(--popover-foreground));
}
.text-primary {
  --tw-text-opacity: 1;
  color: oklch(var(--primary) / var(--tw-text-opacity, 1));
}
.text-primary-foreground {
  color: oklch(var(--primary-foreground));
}
.text-problem-zone {
  color: oklch(var(--problem-zone));
}
.text-red-300 {
  --tw-text-opacity: 1;
  color: rgb(252 165 165 / var(--tw-text-opacity, 1));
}
.text-red-400 {
  --tw-text-opacity: 1;
  color: rgb(248 113 113 / var(--tw-text-opacity, 1));
}
.text-red-500 {
  --tw-text-opacity: 1;
  color: rgb(239 68 68 / var(--tw-text-opacity, 1));
}
.text-red-600 {
  --tw-text-opacity: 1;
  color: rgb(220 38 38 / var(--tw-text-opacity, 1));
}
.text-red-700 {
  --tw-text-opacity: 1;
  color: rgb(185 28 28 / var(--tw-text-opacity, 1));
}
.text-red-800 {
  --tw-text-opacity: 1;
  color: rgb(153 27 27 / var(--tw-text-opacity, 1));
}
.text-report-ink {
  color: oklch(var(--report-ink));
}
.text-report-muted {
  color: oklch(var(--report-muted));
}
.text-secondary-foreground {
  color: oklch(var(--secondary-foreground));
}
.text-sev-high {
  color: oklch(var(--sev-high));
}
.text-sev-high-fg {
  color: oklch(var(--sev-high-fg));
}
.text-sev-low-fg {
  color: oklch(var(--sev-low-fg));
}
.text-sev-moderate-fg {
  color: oklch(var(--sev-moderate-fg));
}
.text-sev-severe-fg {
  color: oklch(var(--sev-severe-fg));
}
.text-sidebar-foreground {
  color: oklch(var(--sidebar-foreground));
}
.text-stressor-canopy-fg {
  color: oklch(var(--stressor-canopy-fg));
}
.text-stressor-chlorosis-fg {
  color: oklch(var(--stressor-chlorosis-fg));
}
.text-stressor-moisture-fg {
  color: oklch(var(--stressor-moisture-fg));
}
.text-white {
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}
.text-white\/50 {
  color: rgb(255 255 255 / 0.5);
}
.text-white\/55 {
  color: rgb(255 255 255 / 0.55);
}
.text-white\/60 {
  color: rgb(255 255 255 / 0.6);
}
.text-white\/70 {
  color: rgb(255 255 255 / 0.7);
}
.text-white\/80 {
  color: rgb(255 255 255 / 0.8);
}
.text-yellow-700 {
  --tw-text-opacity: 1;
  color: rgb(161 98 7 / var(--tw-text-opacity, 1));
}
.text-zone-healthy {
  color: oklch(var(--zone-healthy));
}
.text-zone-label {
  color: oklch(var(--zone-label));
}
.text-zone-moderate {
  color: oklch(var(--zone-moderate));
}
.text-zone-stress {
  color: oklch(var(--zone-stress));
}
.underline-offset-4 {
  text-underline-offset: 4px;
}
.antialiased {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.opacity-0 {
  opacity: 0;
}
.opacity-100 {
  opacity: 1;
}
.opacity-25 {
  opacity: 0.25;
}
.opacity-40 {
  opacity: 0.4;
}
.opacity-50 {
  opacity: 0.5;
}
.opacity-60 {
  opacity: 0.6;
}
.opacity-70 {
  opacity: 0.7;
}
.opacity-75 {
  opacity: 0.75;
}
.shadow {
  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-2xl {
  --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);
  --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-\[0_-4px_12px_-4px_rgba\(0\2c 0\2c 0\2c 0\.08\)\] {
  --tw-shadow: 0 -4px 12px -4px rgba(0,0,0,0.08);
  --tw-shadow-colored: 0 -4px 12px -4px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\] {
  --tw-shadow: 0 0 0 1px hsl(var(--sidebar-border));
  --tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-card {
  --tw-shadow: 0 1px 3px 0 oklch(0.22 0.04 145 / 0.08), 0 4px 16px -2px oklch(0.22 0.04 145 / 0.06);
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 4px 16px -2px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-card-agri {
  --tw-shadow: 0 2px 8px 0 oklch(0.28 0.09 148 / 0.15), 0 8px 24px -4px oklch(0.28 0.09 148 / 0.12);
  --tw-shadow-colored: 0 2px 8px 0 var(--tw-shadow-color), 0 8px 24px -4px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-card-hover {
  --tw-shadow: 0 2px 8px 0 oklch(0.22 0.04 145 / 0.10), 0 8px 24px -4px oklch(0.22 0.04 145 / 0.10);
  --tw-shadow-colored: 0 2px 8px 0 var(--tw-shadow-color), 0 8px 24px -4px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-lg {
  --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-md {
  --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-none {
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-sm {
  --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-xl {
  --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-xs {
  --tw-shadow: 0 1px 2px 0 rgba(0,0,0,0.05);
  --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-card {
  --tw-shadow-color: oklch(var(--card));
  --tw-shadow: var(--tw-shadow-colored);
}
.shadow-indigo-900\/40 {
  --tw-shadow-color: rgb(49 46 129 / 0.4);
  --tw-shadow: var(--tw-shadow-colored);
}
.outline-none {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.outline {
  outline-style: solid;
}
.\!ring {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color) !important;
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color) !important;
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000) !important;
}
.ring {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.ring-0 {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.ring-2 {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.ring-ring {
  --tw-ring-opacity: 1;
  --tw-ring-color: oklch(var(--ring) / var(--tw-ring-opacity, 1));
}
.ring-ring\/50 {
  --tw-ring-color: oklch(var(--ring) / 0.5);
}
.ring-sidebar-ring {
  --tw-ring-color: oklch(var(--sidebar-ring));
}
.ring-offset-background {
  --tw-ring-offset-color: oklch(var(--background));
}
.blur {
  --tw-blur: blur(8px);
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.drop-shadow {
  --tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / 0.1)) drop-shadow(0 1px 1px rgb(0 0 0 / 0.06));
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.filter {
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.backdrop-blur-md {
  --tw-backdrop-blur: blur(12px);
  backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
}
.backdrop-blur-sm {
  --tw-backdrop-blur: blur(4px);
  backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
}
.backdrop-filter {
  backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
}
.transition {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-\[color\2c box-shadow\] {
  transition-property: color,box-shadow;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-\[left\2c right\2c width\] {
  transition-property: left,right,width;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-\[margin\2c opacity\] {
  transition-property: margin,opacity;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-\[width\2c height\2c padding\] {
  transition-property: width,height,padding;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-\[width\] {
  transition-property: width;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-all {
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-colors {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-none {
  transition-property: none;
}
.transition-opacity {
  transition-property: opacity;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-shadow {
  transition-property: box-shadow;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-transform {
  transition-property: transform;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.duration-1000 {
  transition-duration: 1000ms;
}
.duration-150 {
  transition-duration: 150ms;
}
.duration-200 {
  transition-duration: 200ms;
}
.duration-300 {
  transition-duration: 300ms;
}
.duration-700 {
  transition-duration: 700ms;
}
.ease-in-out {
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.ease-linear {
  transition-timing-function: linear;
}
.ease-out {
  transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
.\@container\/card-header {
  container-type: inline-size;
  container-name: card-header;
}
@keyframes enter {

  from {
    opacity: var(--tw-enter-opacity, 1);
    transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));
  }
}
@keyframes exit {

  to {
    opacity: var(--tw-exit-opacity, 1);
    transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));
  }
}
.animate-in {
  animation-name: enter;
  animation-duration: 150ms;
  --tw-enter-opacity: initial;
  --tw-enter-scale: initial;
  --tw-enter-rotate: initial;
  --tw-enter-translate-x: initial;
  --tw-enter-translate-y: initial;
}
.fade-in-0 {
  --tw-enter-opacity: 0;
}
.zoom-in-95 {
  --tw-enter-scale: .95;
}
.duration-1000 {
  animation-duration: 1000ms;
}
.duration-150 {
  animation-duration: 150ms;
}
.duration-200 {
  animation-duration: 200ms;
}
.duration-300 {
  animation-duration: 300ms;
}
.duration-700 {
  animation-duration: 700ms;
}
.ease-in-out {
  animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.ease-linear {
  animation-timing-function: linear;
}
.ease-out {
  animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
.running {
  animation-play-state: running;
}
.disabled-with-tooltip {
  cursor: not-allowed;
  opacity: 0.5;
}
/* ── Stand Count summary badge ── */
.stand-badge {
    position: absolute;
    top: 1rem;
    left: 50%;
    transform: translateX(-50%);
    z-index: 400;
    display: flex;
    align-items: stretch;
    gap: 0;
    padding: 0.625rem 0.25rem;
    background: oklch(var(--stand-badge-bg) / 0.82);
    backdrop-filter: blur(10px) saturate(140%);
    -webkit-backdrop-filter: blur(10px) saturate(140%);
    color: oklch(var(--stand-badge-fg));
    border: 1px solid oklch(var(--stand-badge-border) / 0.4);
    border-radius: calc(var(--radius) + 6px);
    box-shadow: 0 4px 16px -2px oklch(0.16 0.03 145 / 0.35), 0 8px 32px -8px
      oklch(0.16 0.03 145 / 0.28);
    font-feature-settings: "tnum" 1;
    animation: badge-drop 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    pointer-events: auto;
  }
.stand-stat-col {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 0 1.1rem;
    min-width: 5.5rem;
    line-height: 1.1;
  }
.stand-stat-col .stand-stat-label {
    font-size: 0.625rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    opacity: 0.72;
    margin-bottom: 0.2rem;
  }
.stand-stat-col .stand-stat-value {
    font-size: 1.35rem;
    font-weight: 700;
    letter-spacing: -0.01em;
  }
.stand-stat-col .stand-stat-unit {
    font-size: 0.625rem;
    font-weight: 500;
    opacity: 0.6;
    margin-left: 0.15rem;
  }
.stand-divider {
    width: 1px;
    background: oklch(var(--stand-divider) / 0.35);
    margin: 0.15rem 0;
  }
/* ── Canopy centroid density markers ── */
.density-low {
    background: oklch(var(--density-low));
    border: 1.5px solid oklch(var(--density-low) / 0.9);
  }
.density-mid {
    background: oklch(var(--density-mid));
    border: 1.5px solid oklch(var(--density-mid) / 0.9);
  }
.density-high {
    background: oklch(var(--density-high));
    border: 1.5px solid oklch(var(--density-high) / 0.9);
  }
/* ── Critical Gap Zone dashed borders ── */
/* Distinct from FieldHealthGrid's solid white-stroke polygons */
.gap-zone-moderate {
    stroke: oklch(var(--gap-moderate));
    stroke-width: 2.5;
    stroke-dasharray: 8 5;
    stroke-linecap: round;
    fill: oklch(var(--gap-moderate) / 0.08);
    animation: gap-pulse 2.4s ease-in-out infinite;
  }
.gap-zone-severe {
    stroke: oklch(var(--gap-severe));
    stroke-width: 3;
    stroke-dasharray: 6 4;
    stroke-linecap: round;
    fill: oklch(var(--gap-severe) / 0.12);
    animation: gap-pulse 1.8s ease-in-out infinite;
  }
/* ── Field report surface ── */
.report-surface {
    background: oklch(var(--report-bg));
    color: oklch(var(--report-ink));
    border: 1px solid oklch(var(--report-rule));
    border-radius: calc(var(--radius) + 4px);
  }
.report-rule {
    border-color: oklch(var(--report-rule));
  }
/* ── Grid map zone health fills ── */
.zone-healthy {
    fill: oklch(var(--zone-healthy) / 0.55);
    stroke: oklch(var(--zone-healthy));
  }
.zone-moderate {
    fill: oklch(var(--zone-moderate) / 0.55);
    stroke: oklch(var(--zone-moderate));
  }
.zone-stress {
    fill: oklch(var(--zone-stress) / 0.55);
    stroke: oklch(var(--zone-stress));
  }
.zone-label {
    fill: oklch(var(--zone-label));
    font-family: var(--font-mono);
  }
/* ── Download box ── */
.download-box {
    background: oklch(var(--download-bg));
    border: 1px solid oklch(var(--download-border));
    border-radius: var(--radius);
  }
/* ── Flight comparison: zone-change highlight fills ── */
.change-improved {
    fill: oklch(var(--change-improved) / 0.5);
    stroke: oklch(var(--change-improved));
  }
.change-declined {
    fill: oklch(var(--change-declined) / 0.5);
    stroke: oklch(var(--change-declined));
  }
.change-unchanged {
    fill: oklch(var(--change-unchanged) / 0.35);
    stroke: oklch(var(--change-unchanged));
  }
/* Legend swatch + summary card surface */
.change-legend {
    color: oklch(var(--change-legend-fg));
    font-family: var(--font-mono);
  }
.change-summary-card {
    background: oklch(var(--change-summary-bg));
    border: 1px solid oklch(var(--border));
    border-radius: var(--radius);
    animation: change-reveal 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards;
  }
/* ── Market Forecast surfaces ── */
.forecast-surface {
    background: oklch(var(--forecast-surface));
    border: 1px solid oklch(var(--forecast-rule));
    border-radius: calc(var(--radius) + 2px);
  }
.forecast-local {
    color: oklch(var(--forecast-local));
    background: oklch(var(--forecast-local-soft));
  }
.forecast-world {
    color: oklch(var(--forecast-world));
    background: oklch(var(--forecast-world-soft));
  }
.market-value {
    color: oklch(var(--market-gold));
    background: oklch(var(--market-gold-soft));
  }
/* ── Qualitative outlook badges ── */
.outlook-favorable {
    color: oklch(var(--outlook-favorable));
    background: oklch(var(--outlook-favorable-soft));
  }
.outlook-neutral {
    color: oklch(var(--outlook-neutral));
    background: oklch(var(--outlook-neutral-soft));
  }
.outlook-unfavorable {
    color: oklch(var(--outlook-unfavorable));
    background: oklch(var(--outlook-unfavorable-soft));
  }
/* ── AI Multispectral Map module ── */
/* Generated map panel — elevated framed surface with spectral border */
.ms-panel {
    position: relative;
    background: oklch(var(--ms-surface));
    border: 1px solid oklch(var(--ms-border));
    border-radius: calc(var(--radius) + 4px);
    overflow: hidden;
  }
.ms-panel::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    border-radius: inherit;
    box-shadow: inset 0 1px 0 0 oklch(var(--spectral) / 0.18);
  }
/* Spectral accent text — AI multispectral labels/badges */
.spectral-text {
    color: oklch(var(--spectral));
  }
/* Spectral soft chip — status / tag surface */
.spectral-chip {
    color: oklch(var(--spectral));
    background: oklch(var(--spectral-soft));
  }
/* Spectral CTA — generate control gradient */
.spectral-gradient {
    background: var(--gradient-spectral);
    color: oklch(var(--spectral-fg));
  }
/* Scanning band shown over the panel while the map is generating */
.ms-scan {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 40%;
    background: linear-gradient(
      90deg,
      transparent,
      oklch(var(--spectral) / 0.16),
      transparent
    );
    animation: ms-scan 1.6s cubic-bezier(0.4, 0, 0.2, 1) infinite;
    pointer-events: none;
  }
/* Determinate progress bar track + fill */
.ms-progress-track {
    background: oklch(var(--muted));
    border-radius: 999px;
    overflow: hidden;
  }
.ms-progress-fill {
    height: 100%;
    background: var(--gradient-spectral);
    border-radius: 999px;
    transition: width 0.4s cubic-bezier(0.16, 1, 0.3, 1);
  }
/* ── Mosaic overlay module ── */
/* Floating map control surface — toggle + opacity slider for the stitched mosaic */
.mosaic-control {
    position: relative;
    background: oklch(var(--stand-badge-bg) / 0.82);
    backdrop-filter: blur(10px) saturate(140%);
    -webkit-backdrop-filter: blur(10px) saturate(140%);
    color: oklch(var(--stand-badge-fg));
    border: 1px solid oklch(var(--mosaic) / 0.35);
    border-radius: calc(var(--radius) + 6px);
    box-shadow: 0 4px 16px -2px oklch(0.16 0.03 145 / 0.35), 0 8px 32px -8px
      oklch(0.16 0.03 145 / 0.28);
    animation: card-fade 0.4s ease forwards;
  }
/* Mosaic accent text — stitching labels / layer id */
.mosaic-text {
    color: oklch(var(--mosaic));
  }
/* Mosaic soft chip — status / tag surface */
.mosaic-chip {
    color: oklch(var(--mosaic));
    background: oklch(var(--mosaic-soft));
  }
/* Mosaic stitch CTA — generate/stitch control gradient */
.mosaic-gradient {
    background: var(--gradient-mosaic);
    color: oklch(var(--mosaic-fg));
  }
/* Opacity slider track + thumb for the mosaic overlay */
.mosaic-slider {
    -webkit-appearance: none;
    -moz-appearance: none;
         appearance: none;
    height: 4px;
    border-radius: 999px;
    background: oklch(var(--mosaic-track));
    outline: none;
  }
.mosaic-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 14px;
    height: 14px;
    border-radius: 999px;
    background: oklch(var(--mosaic));
    border: 2px solid oklch(var(--mosaic-fg));
    cursor: pointer;
  }
.mosaic-slider::-moz-range-thumb {
    width: 14px;
    height: 14px;
    border-radius: 999px;
    background: oklch(var(--mosaic));
    border: 2px solid oklch(var(--mosaic-fg));
    cursor: pointer;
  }
/* ── Coverage-gap polygons (missed flight passes) ── */
.gap-zone-low {
    stroke: oklch(var(--gap-low));
    stroke-width: 2;
    stroke-dasharray: 8 5;
    stroke-linecap: round;
    fill: oklch(var(--gap-low) / 0.08);
    animation: gap-pulse 3s ease-in-out infinite;
  }
.gap-zone-moderate {
    stroke: oklch(var(--gap-moderate));
    stroke-width: 2.5;
    stroke-dasharray: 8 5;
    stroke-linecap: round;
    fill: oklch(var(--gap-moderate) / 0.1);
    animation: gap-pulse 2.4s ease-in-out infinite;
  }
.gap-zone-severe {
    stroke: oklch(var(--gap-severe));
    stroke-width: 3;
    stroke-dasharray: 6 4;
    stroke-linecap: round;
    fill: oklch(var(--gap-severe) / 0.14);
    animation: gap-pulse 1.8s ease-in-out infinite;
  }
/* ── Problem-zone markers (NDVI/NDRE cross-reference flags) ── */
.problem-zone-marker {
    color: oklch(var(--problem-zone));
    background: oklch(var(--problem-zone-soft));
    border: 1px solid oklch(var(--problem-zone) / 0.5);
  }
/* ── AI intelligence narrative panel ── */
/* Grower-facing field read — elevated framed surface with cyan AI border */
.narrative-panel {
    position: relative;
    background: oklch(var(--narrative-surface));
    border: 1px solid oklch(var(--narrative-border));
    border-radius: calc(var(--radius) + 4px);
    overflow: hidden;
  }
.narrative-panel::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    border-radius: inherit;
    box-shadow: inset 0 1px 0 0 oklch(var(--narrative-accent) / 0.18);
  }
.narrative-text {
    color: oklch(var(--narrative-accent));
  }
.narrative-muted {
    color: oklch(var(--narrative-muted));
  }
/* Health-read chips inside the narrative */
.narrative-healthy {
    color: oklch(var(--narrative-healthy));
    background: oklch(var(--narrative-healthy) / 0.14);
  }
.narrative-warning {
    color: oklch(var(--narrative-warning));
    background: oklch(var(--narrative-warning) / 0.14);
  }
.narrative-severe {
    color: oklch(var(--narrative-severe));
    background: oklch(var(--narrative-severe) / 0.14);
  }
/* ── NDVI analysis layer ── */
/* Legend surface — framed card carrying the color-scale bar + index readout */
.ndvi-legend {
    background: oklch(var(--ndvi-surface));
    border: 1px solid oklch(var(--ndvi-border));
    border-radius: calc(var(--radius) + 4px);
    box-shadow: 0 1px 3px 0 oklch(0.22 0.04 145 / 0.08), 0 8px 28px -6px
      oklch(0.5 0.15 148 / 0.22);
    animation: legend-reveal 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards;
  }
.ndvi-text {
    color: oklch(var(--ndvi-accent));
  }
/* Color-scale bar rendered from the NDVI gradient */
.ndvi-scale {
    background: var(--gradient-ndvi);
  }
/* ── NDRE analysis layer ── */
.ndre-legend {
    background: oklch(var(--ndre-surface));
    border: 1px solid oklch(var(--ndre-border));
    border-radius: calc(var(--radius) + 4px);
    box-shadow: 0 1px 3px 0 oklch(0.22 0.04 145 / 0.08), 0 8px 28px -6px
      oklch(0.5 0.15 40 / 0.22);
    animation: legend-reveal 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards;
  }
.ndre-text {
    color: oklch(var(--ndre-accent));
  }
.ndre-scale {
    background: var(--gradient-ndre);
  }
/* Shared legend color-scale bar geometry */
.legend-scale {
    height: 8px;
    border-radius: 999px;
    border: 1px solid oklch(var(--border) / 0.5);
  }
/* Legend endpoint labels (low / high) in mono */
.legend-endpoint {
    font-family: var(--font-mono);
    font-size: 0.625rem;
    letter-spacing: 0.04em;
    color: oklch(var(--muted-foreground));
  }
/* ── Layer-generation control panel ── */
/* Panel for generating NDVI / NDRE analysis layers on top of the base map */
.layer-panel {
    background: oklch(var(--layer-surface));
    border: 1px solid oklch(var(--layer-border));
    border-radius: calc(var(--radius) + 4px);
    box-shadow: 0 1px 3px 0 oklch(0.22 0.04 145 / 0.08), 0 8px 28px -6px
      oklch(0.62 0.13 195 / 0.22);
  }
.layer-text {
    color: oklch(var(--layer-accent));
  }
.layer-muted {
    color: oklch(var(--layer-muted));
  }
/* Opacity slider shared by NDVI / NDRE layer controls */
.layer-slider {
    -webkit-appearance: none;
    -moz-appearance: none;
         appearance: none;
    height: 4px;
    border-radius: 999px;
    background: oklch(var(--layer-track));
    outline: none;
  }
.layer-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 14px;
    height: 14px;
    border-radius: 999px;
    background: oklch(var(--layer-accent));
    border: 2px solid oklch(var(--stand-badge-fg));
    cursor: pointer;
  }
.layer-slider::-moz-range-thumb {
    width: 14px;
    height: 14px;
    border-radius: 999px;
    background: oklch(var(--layer-accent));
    border: 2px solid oklch(var(--stand-badge-fg));
    cursor: pointer;
  }
/* ── Runtime health banner ── */
/* Status-driven banner surface — elevated framed bar with a status accent */
.health-banner {
    position: relative;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.625rem 0.875rem;
    background: oklch(var(--health-banner-surface));
    color: oklch(var(--health-banner-fg));
    border: 1px solid oklch(var(--health-banner-border));
    border-radius: calc(var(--radius) + 2px);
    box-shadow: 0 1px 3px 0 oklch(0.22 0.04 145 / 0.08), 0 8px 24px -4px
      oklch(0.22 0.04 145 / 0.1);
    animation: health-slide-in 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards;
  }
/* Status accent bar along the leading edge */
.health-banner::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 3px;
    border-radius: inherit 0 0 inherit;
  }
/* Status dot indicator */
.health-dot {
    width: 8px;
    height: 8px;
    border-radius: 999px;
    flex-shrink: 0;
  }
.health-dot--ok {
    background: oklch(var(--health-ok));
  }
.health-dot--warn {
    background: oklch(var(--health-warn));
  }
.health-dot--error {
    background: oklch(var(--health-error));
  }
/* Status-tinted chip (label / count badge) */
.health-chip--ok {
    color: oklch(var(--health-ok-fg));
    background: oklch(var(--health-ok-soft));
  }
.health-chip--warn {
    color: oklch(var(--health-warn-fg));
    background: oklch(var(--health-warn-soft));
  }
.health-chip--error {
    color: oklch(var(--health-error-fg));
    background: oklch(var(--health-error-soft));
  }
/* Health banner action button */
.health-cta {
    background: oklch(var(--health-cta));
    color: oklch(var(--health-cta-fg));
    border-radius: calc(var(--radius) - 2px);
    transition: opacity 0.2s ease;
  }
.health-cta:hover {
    opacity: 0.9;
  }
/* ── Help-agent diagnostic card ── */
/* Elevated framed surface with a cyan "assist" accent border */
.diag-card {
    position: relative;
    background: oklch(var(--diag-surface));
    border: 1px solid oklch(var(--diag-border));
    border-radius: calc(var(--radius) + 4px);
    overflow: hidden;
    animation: step-reveal 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards;
  }
.diag-card::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    border-radius: inherit;
    box-shadow: inset 0 1px 0 0 oklch(var(--diag-accent) / 0.18);
  }
.diag-text {
    color: oklch(var(--diag-accent));
  }
.diag-muted {
    color: oklch(var(--diag-muted));
  }
/* ── Numbered step indicator ── */
/* Circular step badge — idle / active / done / error states */
.step-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    border-radius: 999px;
    font-family: var(--font-mono);
    font-size: 0.75rem;
    font-weight: 600;
    line-height: 1;
    flex-shrink: 0;
    transition: background 0.2s ease, color 0.2s ease;
  }
.step-badge--idle {
    background: oklch(var(--step-idle));
    color: oklch(var(--step-idle-fg));
  }
.step-badge--active {
    background: oklch(var(--step-active));
    color: oklch(var(--step-active-fg));
    box-shadow: 0 0 0 3px oklch(var(--step-active) / 0.25);
  }
.step-badge--done {
    background: oklch(var(--step-done));
    color: oklch(var(--step-done-fg));
  }
.step-badge--error {
    background: oklch(var(--step-error));
    color: oklch(var(--step-error-fg));
  }
/* Connecting rail between steps */
.step-rail {
    width: 1.5rem;
    height: 2px;
    background: oklch(var(--diag-track));
    border-radius: 999px;
    flex-shrink: 0;
  }
.step-rail--done {
    background: oklch(var(--step-done));
  }
/* ── Repair flow progress bar ── */
.repair-progress-track {
    background: oklch(var(--diag-track));
    border-radius: 999px;
    overflow: hidden;
  }
.repair-progress-fill {
    height: 100%;
    background: oklch(var(--repair-progress-fill));
    border-radius: 999px;
    transition: width 0.4s cubic-bezier(0.16, 1, 0.3, 1);
  }
.repair-progress-fill--verify {
    animation: repair-progress 1.2s cubic-bezier(0.4, 0, 0.2, 1) forwards;
  }
/* ── Repair action buttons ── */
.repair-action {
    background: oklch(var(--repair-action));
    color: oklch(var(--repair-action-fg));
    border-radius: calc(var(--radius) - 2px);
    transition: opacity 0.2s ease;
  }
.repair-action:hover {
    opacity: 0.9;
  }
.repair-action:disabled {
    opacity: 0.5;
    cursor: not-allowed;
  }
.repair-action-soft {
    background: oklch(var(--repair-action-soft));
    color: oklch(var(--repair-action-soft-fg));
    border-radius: calc(var(--radius) - 2px);
    transition: opacity 0.2s ease;
  }
.repair-action-soft:hover {
    opacity: 0.85;
  }
/* ── Step success / error confirmation chips ── */
.repair-chip--success {
    color: oklch(var(--repair-success-fg));
    background: oklch(var(--repair-success-soft));
  }
.repair-chip--error {
    color: oklch(var(--repair-error-fg));
    background: oklch(var(--repair-error-soft));
  }
/* ── Hybrid ortho provenance badges ── */
/* One geometry, three semantic skins. The badge is the app's honesty
     contract: it states how the base layer under the cursor was produced.
     `.prov-badge__dot` is a solid state marker; `.prov-badge__glyph` carries
     the sparkle for generated layers. */
.prov-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.25rem 0.5rem;
    border-radius: 999px;
    border: 1px solid transparent;
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    line-height: 1.2;
    white-space: nowrap;
    transition: background 0.2s ease, border-color 0.2s ease;
  }
.prov-badge__dot {
    width: 6px;
    height: 6px;
    border-radius: 999px;
    flex-shrink: 0;
  }
.prov-badge__glyph {
    flex-shrink: 0;
    animation: gen-sparkle 2.6s ease-in-out infinite;
  }
/* Real photo composite — the trusted primary state (mosaic cyan-teal family) */
.prov-badge--real {
    color: oklch(var(--prov-real-fg));
    background: oklch(var(--prov-real-soft));
    border-color: oklch(var(--prov-real) / 0.4);
  }
.prov-badge--real .prov-badge__dot {
    background: oklch(var(--prov-real));
  }
/* AI-generated overlay — unmistakably violet, never the mosaic cyan */
.prov-badge--ai {
    color: oklch(var(--prov-ai-fg));
    background: oklch(var(--prov-ai-soft));
    border-color: oklch(var(--prov-ai) / 0.5);
    border-style: dashed;
  }
.prov-badge--ai .prov-badge__dot {
    background: oklch(var(--prov-ai));
  }
/* Satellite fallback — neutral and deliberately low emphasis */
.prov-badge--sat {
    color: oklch(var(--prov-sat-fg));
    background: oklch(var(--prov-sat-soft));
    border-color: oklch(var(--prov-border));
  }
.prov-badge--sat .prov-badge__dot {
    background: oklch(var(--prov-sat));
  }
/* Compact variant for dense control panels */
.prov-badge--sm {
    padding: 0.125rem 0.375rem;
    font-size: 0.625rem;
    gap: 0.25rem;
  }
/* ── Ortho build-health banner ── */
/* Reports the outcome of an ortho build. Shares the health-banner geometry
     language but carries its own tokens and count chips. */
.build-banner {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 0.75rem 0.875rem;
    background: oklch(var(--build-banner-surface));
    color: oklch(var(--build-banner-fg));
    border: 1px solid oklch(var(--build-banner-border));
    border-radius: calc(var(--radius) + 2px);
    box-shadow: 0 1px 3px 0 oklch(0.22 0.04 145 / 0.08), 0 8px 24px -4px
      oklch(0.22 0.04 145 / 0.1);
    animation: health-slide-in 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards;
  }
.build-banner::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 3px;
    border-radius: inherit 0 0 inherit;
  }
.build-banner__cause {
    color: oklch(var(--build-banner-muted));
    font-family: var(--font-mono);
    font-size: 0.6875rem;
    letter-spacing: 0.01em;
  }
/* Count chips — "12 included / 3 excluded" on a partial composite */
.build-count--in {
    color: oklch(var(--build-ok-fg));
    background: oklch(var(--build-ok-soft));
  }
.build-count--out {
    color: oklch(var(--build-warn-fg));
    background: oklch(var(--build-warn-soft));
  }
/* Primary repair action — "fix the real composite" always outranks generate */
.build-action {
    background: oklch(var(--build-action));
    color: oklch(var(--build-action-fg));
    border-radius: calc(var(--radius) - 2px);
    font-weight: 600;
    transition: opacity 0.2s ease;
  }
.build-action:hover {
    opacity: 0.9;
  }
.build-action:disabled {
    opacity: 0.5;
    cursor: not-allowed;
  }
/* Secondary "Generate AI overlay" action — violet outline, quieter weight */
.build-ai-action {
    background: oklch(var(--build-ai-action-soft));
    color: oklch(var(--build-ai-action-fg));
    border: 1px solid oklch(var(--build-ai-action) / 0.5);
    border-radius: calc(var(--radius) - 2px);
    font-weight: 600;
    transition: opacity 0.2s ease, background 0.2s ease;
  }
.build-ai-action:hover {
    opacity: 0.85;
  }
.build-ai-action:disabled {
    opacity: 0.5;
    cursor: not-allowed;
  }
/* ── AI overlay generation states ── */
.gen-panel {
    position: relative;
    background: oklch(var(--gen-surface));
    border: 1px solid oklch(var(--gen-border));
    border-radius: calc(var(--radius) + 4px);
    overflow: hidden;
    animation: step-reveal 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards;
  }
.gen-panel::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    border-radius: inherit;
    box-shadow: inset 0 1px 0 0 oklch(var(--gen-fill) / 0.2);
  }
.gen-text {
    color: oklch(var(--gen-fg));
  }
.gen-muted {
    color: oklch(var(--gen-muted));
  }
/* Indeterminate track + sweeping fill — no fake percentage */
.gen-track {
    position: relative;
    height: 4px;
    background: oklch(var(--gen-track));
    border-radius: 999px;
    overflow: hidden;
  }
.gen-fill {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 25%;
    background: var(--gradient-generate);
    border-radius: 999px;
    animation: gen-indeterminate 1.8s cubic-bezier(0.4, 0, 0.2, 1) infinite;
  }
/* Shimmering placeholder surface standing in for the not-yet-generated overlay */
.gen-shimmer {
    background: linear-gradient(
      90deg,
      oklch(var(--gen-track)) 0%,
      oklch(var(--gen-fill) / 0.28) 50%,
      oklch(var(--gen-track)) 100%
    );
    background-size: 200% 100%;
    animation: gen-shimmer 2.4s linear infinite;
  }
/* "This can take a moment" affordance — quiet, mono, never alarming */
.gen-hint {
    font-family: var(--font-mono);
    font-size: 0.6875rem;
    letter-spacing: 0.02em;
    color: oklch(var(--gen-muted));
  }
/* Provider error + retry */
.gen-error {
    color: oklch(var(--gen-error-fg));
    background: oklch(var(--gen-error-soft));
    border: 1px solid oklch(var(--gen-error) / 0.45);
    border-radius: calc(var(--radius) - 2px);
  }
.gen-retry {
    background: oklch(var(--gen-error));
    color: oklch(var(--wm-fg));
    border-radius: calc(var(--radius) - 2px);
    font-weight: 600;
    transition: opacity 0.2s ease;
  }
.gen-retry:hover {
    opacity: 0.9;
  }
/* ── On-map AI watermark ── */
/* Sits directly on the generated imagery. Dark scrim + light text so it stays
     legible over any map pixels. Non-interactive by default. */
.ai-watermark {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.1875rem 0.4375rem;
    background: oklch(var(--wm-scrim) / 0.62);
    backdrop-filter: blur(4px) saturate(120%);
    -webkit-backdrop-filter: blur(4px) saturate(120%);
    color: oklch(var(--wm-fg));
    border: 1px solid oklch(var(--wm-border) / 0.55);
    border-radius: 999px;
    font-family: var(--font-mono);
    font-size: 0.625rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    line-height: 1;
    pointer-events: none;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
    animation: wm-breathe 3.2s ease-in-out infinite;
  }
.ai-watermark__glyph {
    color: oklch(var(--wm-accent));
    flex-shrink: 0;
  }
/* Repeating tiled watermark for large generated surfaces */
.ai-watermark-tile {
    position: absolute;
    inset: 0;
    pointer-events: none;
    background-image: repeating-linear-gradient(
      -45deg,
      oklch(var(--wm-scrim) / 0.05) 0px,
      oklch(var(--wm-scrim) / 0.05) 2px,
      transparent 2px,
      transparent 14px
    );
  }
/* ══════════════════════════════════════════════════════════════
     SATELLITE-FIRST TARGETED DIAGNOSTIC SYSTEM
     ══════════════════════════════════════════════════════════════ */
/* ── Stress-zone severity scale ── */
/* Chips: soft surface + matching ink. Used in drawers, tables, legends. */
.sev-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.125rem 0.5rem;
    border-radius: 999px;
    border: 1px solid transparent;
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    line-height: 1.4;
    white-space: nowrap;
  }
.sev-chip--low {
    color: oklch(var(--sev-low-fg));
    background: oklch(var(--sev-low-soft));
    border-color: oklch(var(--sev-low) / 0.45);
  }
.sev-chip--moderate {
    color: oklch(var(--sev-moderate-fg));
    background: oklch(var(--sev-moderate-soft));
    border-color: oklch(var(--sev-moderate) / 0.45);
  }
.sev-chip--high {
    color: oklch(var(--sev-high-fg));
    background: oklch(var(--sev-high-soft));
    border-color: oklch(var(--sev-high) / 0.5);
  }
.sev-chip--severe {
    color: oklch(var(--sev-severe-fg));
    background: oklch(var(--sev-severe-soft));
    border-color: oklch(var(--sev-severe) / 0.55);
  }
/* Solid severity dot — legend swatch + table rank marker */
.sev-dot {
    width: 8px;
    height: 8px;
    border-radius: 999px;
    flex-shrink: 0;
  }
.sev-dot--low {
    background: oklch(var(--sev-low));
  }
.sev-dot--moderate {
    background: oklch(var(--sev-moderate));
  }
.sev-dot--high {
    background: oklch(var(--sev-high));
  }
.sev-dot--severe {
    background: oklch(var(--sev-severe));
  }
/* ── Stress-zone GeoJSON polygons on the satellite base ── */
/* Vector geometry only — no raster fill, no mosaic texture. Stroke weight
     and fill opacity escalate with severity; severe zones get a pulse. */
.stress-zone {
    stroke-linejoin: round;
    stroke-linecap: round;
  }
.stress-zone--low {
    stroke: oklch(var(--sev-low));
    stroke-width: 2;
    fill: oklch(var(--sev-low) / 0.22);
  }
.stress-zone--moderate {
    stroke: oklch(var(--sev-moderate));
    stroke-width: 2.5;
    fill: oklch(var(--sev-moderate) / 0.26);
  }
.stress-zone--high {
    stroke: oklch(var(--sev-high));
    stroke-width: 3;
    fill: oklch(var(--sev-high) / 0.3);
    animation: stress-pulse 2.6s ease-in-out infinite;
  }
.stress-zone--severe {
    stroke: oklch(var(--sev-severe));
    stroke-width: 3.5;
    fill: oklch(var(--sev-severe) / 0.36);
    animation: stress-pulse 1.9s ease-in-out infinite;
  }
/* Selected zone — dashed halo ring that survives any satellite pixels */
.stress-zone--selected {
    stroke-dasharray: 7 4;
    filter: drop-shadow(0 0 3px oklch(var(--diag-overlay-halo) / 0.9));
  }
/* Zone centroid label — mono, haloed so it reads over imagery */
.stress-zone-label {
    font-family: var(--font-mono);
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    fill: oklch(var(--diag-overlay-label));
    paint-order: stroke;
    stroke: oklch(var(--diag-overlay-halo) / 0.85);
    stroke-width: 3px;
    stroke-linejoin: round;
  }
/* Heatmap surface — translucent diagnostic density, never opaque raster */
.diag-heatmap {
    mix-blend-mode: multiply;
    pointer-events: none;
  }
.diag-heatmap--low {
    fill: oklch(var(--heat-low) / 0.3);
  }
.diag-heatmap--mid {
    fill: oklch(var(--heat-mid) / 0.36);
  }
.diag-heatmap--high {
    fill: oklch(var(--heat-high) / 0.42);
  }
.diag-heatmap--peak {
    fill: oklch(var(--heat-peak) / 0.48);
  }
/* Severity legend card — compact, framed, sits over the map */
.sev-legend {
    background: oklch(var(--sev-surface) / 0.94);
    backdrop-filter: blur(10px) saturate(140%);
    -webkit-backdrop-filter: blur(10px) saturate(140%);
    border: 1px solid oklch(var(--sev-border));
    border-radius: calc(var(--radius) + 2px);
    box-shadow: 0 1px 3px 0 oklch(0.22 0.04 145 / 0.1), 0 8px 24px -6px
      oklch(0.48 0.21 22 / 0.24);
    animation: legend-reveal 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards;
  }
.sev-legend__scale {
    height: 8px;
    border-radius: 999px;
    background: var(--gradient-severity);
    border: 1px solid oklch(var(--border) / 0.5);
  }
.sev-legend__label {
    font-family: var(--font-mono);
    font-size: 0.625rem;
    letter-spacing: 0.04em;
    color: oklch(var(--sev-muted));
  }
/* ── Stressor-type chips ── */
/* Three diagnostic signatures; icon + label always paired with color so
     the reading survives color-vision deficiency. */
.stressor-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.125rem 0.5rem;
    border-radius: calc(var(--radius) - 4px);
    border: 1px solid transparent;
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    line-height: 1.4;
    white-space: nowrap;
  }
.stressor-chip--chlorosis {
    color: oklch(var(--stressor-chlorosis-fg));
    background: oklch(var(--stressor-chlorosis-soft));
    border-color: oklch(var(--stressor-chlorosis) / 0.45);
  }
.stressor-chip--moisture {
    color: oklch(var(--stressor-moisture-fg));
    background: oklch(var(--stressor-moisture-soft));
    border-color: oklch(var(--stressor-moisture) / 0.45);
  }
.stressor-chip--canopy {
    color: oklch(var(--stressor-canopy-fg));
    background: oklch(var(--stressor-canopy-soft));
    border-color: oklch(var(--stressor-canopy) / 0.45);
  }
/* ── Slide-over detail drawer (right side) ── */
.drawer-scrim {
    position: fixed;
    inset: 0;
    z-index: 900;
    background: oklch(var(--drawer-scrim) / 0.42);
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
    animation: drawer-scrim-in 0.25s ease forwards;
  }
.drawer-panel {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    z-index: 901;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 26rem;
    background: oklch(var(--drawer-surface));
    color: oklch(var(--drawer-fg));
    border-left: 1px solid oklch(var(--drawer-border));
    box-shadow: -8px 0 32px -8px oklch(0.16 0.03 145 / 0.32);
    animation: drawer-slide-in 0.32s cubic-bezier(0.16, 1, 0.3, 1) forwards;
  }
.drawer-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.875rem 1rem;
    background: oklch(var(--drawer-header));
    border-bottom: 1px solid oklch(var(--drawer-rule));
  }
/* Leading severity accent bar on the drawer header */
.drawer-header--low {
    box-shadow: inset 3px 0 0 0 oklch(var(--sev-low));
  }
.drawer-header--moderate {
    box-shadow: inset 3px 0 0 0 oklch(var(--sev-moderate));
  }
.drawer-header--high {
    box-shadow: inset 3px 0 0 0 oklch(var(--sev-high));
  }
.drawer-header--severe {
    box-shadow: inset 3px 0 0 0 oklch(var(--sev-severe));
  }
.drawer-body {
    flex: 1;
    overflow-y: auto;
    padding: 1rem;
  }
/* ── Two-up image comparison (raw RGB | multispectral index) ── */
.compare-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.5rem;
  }
.compare-frame {
    position: relative;
    overflow: hidden;
    border: 1px solid oklch(var(--compare-frame));
    border-radius: calc(var(--radius) - 2px);
    background: oklch(var(--meta-bg));
  }
.compare-frame__img {
    display: block;
    width: 100%;
    aspect-ratio: 1 / 1;
    -o-object-fit: cover;
       object-fit: cover;
  }
/* Corner label — mono, dark scrim so it reads on any crop */
.compare-frame__label {
    position: absolute;
    left: 0;
    bottom: 0;
    padding: 0.125rem 0.375rem;
    background: oklch(var(--compare-label-bg) / 0.78);
    color: oklch(var(--compare-label-fg));
    font-family: var(--font-mono);
    font-size: 0.5625rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    border-top-right-radius: calc(var(--radius) - 4px);
  }
/* ── Metadata block (coordinates / severity / area) ── */
.meta-block {
    background: oklch(var(--meta-bg));
    border: 1px solid oklch(var(--meta-rule));
    border-radius: calc(var(--radius) - 2px);
  }
.meta-row {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.4375rem 0.625rem;
    border-bottom: 1px solid oklch(var(--meta-rule) / 0.7);
  }
.meta-row:last-child {
    border-bottom: none;
  }
.meta-key {
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: oklch(var(--meta-key));
    flex-shrink: 0;
  }
.meta-value {
    font-family: var(--font-mono);
    font-size: 0.75rem;
    font-weight: 600;
    color: oklch(var(--meta-fg));
    text-align: right;
    font-feature-settings: "tnum" 1;
    word-break: break-word;
  }
/* ── Per-frame processing progress strip ── */
.frame-strip {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 0.625rem 0.75rem;
    background: oklch(var(--frame-strip-surface));
    border: 1px solid oklch(var(--frame-strip-border));
    border-radius: calc(var(--radius) + 2px);
  }
.frame-strip__track {
    position: relative;
    height: 6px;
    background: oklch(var(--frame-track));
    border-radius: 999px;
    overflow: hidden;
  }
.frame-strip__fill {
    height: 100%;
    background: oklch(var(--frame-fill));
    border-radius: 999px;
    transition: width 0.35s cubic-bezier(0.16, 1, 0.3, 1);
  }
.frame-strip__fill--done {
    background: oklch(var(--frame-fill-done));
  }
/* Segment ticks — one per processing batch, drawn over the track */
.frame-strip__ticks {
    position: absolute;
    inset: 0;
    display: flex;
    pointer-events: none;
  }
.frame-strip__tick {
    flex: 1;
    border-right: 1px solid oklch(var(--frame-tick) / 0.8);
  }
.frame-strip__tick:last-child {
    border-right: none;
  }
.frame-strip__label {
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: oklch(var(--frame-label));
  }
.frame-strip__value {
    font-family: var(--font-mono);
    font-size: 0.6875rem;
    font-weight: 600;
    color: oklch(var(--frame-value));
    font-feature-settings: "tnum" 1;
  }
/* ── Field report: satellite-first diagnostic sections ── */
.rpt-section {
    background: oklch(var(--report-bg));
    border: 1px solid oklch(var(--rpt-section-rule));
    border-radius: calc(var(--radius) + 2px);
    overflow: hidden;
  }
.rpt-section__head {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.625rem 0.875rem;
    border-bottom: 1px solid oklch(var(--rpt-section-rule));
  }
.rpt-section__title {
    font-family: var(--font-display);
    font-size: 0.9375rem;
    font-weight: 600;
    letter-spacing: -0.01em;
    color: oklch(var(--report-ink));
  }
/* Section accents — one per report section, matched to its content */
.rpt-section--summary .rpt-section__head {
    box-shadow: inset 3px 0 0 0 oklch(var(--rpt-summary-accent));
    background: oklch(var(--rpt-summary-soft) / 0.5);
  }
.rpt-section--priority .rpt-section__head {
    box-shadow: inset 3px 0 0 0 oklch(var(--rpt-priority-accent));
    background: oklch(var(--rpt-priority-soft) / 0.5);
  }
.rpt-section--cards .rpt-section__head {
    box-shadow: inset 3px 0 0 0 oklch(var(--rpt-cards-accent));
    background: oklch(var(--rpt-cards-soft) / 0.5);
  }
.rpt-section--plan .rpt-section__head {
    box-shadow: inset 3px 0 0 0 oklch(var(--rpt-plan-accent));
    background: oklch(var(--rpt-plan-soft) / 0.5);
  }
/* Priority Issue Log — ranked table */
.rpt-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.75rem;
  }
.rpt-table thead th {
    padding: 0.4375rem 0.625rem;
    text-align: left;
    font-size: 0.5625rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: oklch(var(--report-muted));
    border-bottom: 1px solid oklch(var(--rpt-section-rule));
  }
.rpt-table tbody td {
    padding: 0.5rem 0.625rem;
    border-bottom: 1px solid oklch(var(--rpt-section-rule) / 0.6);
    vertical-align: middle;
    color: oklch(var(--report-ink));
  }
.rpt-table tbody tr:nth-child(even) {
    background: oklch(var(--rpt-rank-bg) / 0.6);
  }
.rpt-table tbody tr:last-child td {
    border-bottom: none;
  }
/* Rank cell — mono, tabular */
.rpt-table__rank {
    font-family: var(--font-mono);
    font-weight: 700;
    font-size: 0.6875rem;
    color: oklch(var(--report-muted));
    width: 2.5rem;
  }
/* GPS coordinate cell — always monospace */
.rpt-table__geo {
    font-family: var(--font-mono);
    font-size: 0.6875rem;
    font-weight: 500;
    letter-spacing: -0.01em;
    font-feature-settings: "tnum" 1;
    white-space: nowrap;
  }
.rpt-table__score {
    font-family: var(--font-mono);
    font-weight: 700;
    font-feature-settings: "tnum" 1;
  }
.rpt-table__area {
    font-family: var(--font-mono);
    font-size: 0.6875rem;
    color: oklch(var(--report-muted));
    white-space: nowrap;
  }
/* Visual Field Card — three-up (satellite pin | RGB cutout | index thumb) */
.field-card {
    background: oklch(var(--report-bg));
    border: 1px solid oklch(var(--card-frame));
    border-radius: calc(var(--radius) + 2px);
    overflow: hidden;
  }
.field-card__three-up {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 1px;
    background: oklch(var(--card-frame));
  }
.field-card__cell {
    position: relative;
    background: oklch(var(--meta-bg));
  }
.field-card__img {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    -o-object-fit: cover;
       object-fit: cover;
  }
/* Satellite context pin — ring marks the zone centroid over the tile */
.field-card__pin {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 14px;
    height: 14px;
    transform: translate(-50%, -50%);
    border: 2px solid oklch(var(--card-pin-ring));
    border-radius: 999px;
    box-shadow: 0 0 0 2px oklch(var(--diag-overlay-halo) / 0.85);
    pointer-events: none;
  }
.field-card__caption {
    font-family: var(--font-mono);
    font-size: 0.5625rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: oklch(var(--card-caption));
  }
/* AI Scouting Action Plan — checklist */
.plan-list {
    display: flex;
    flex-direction: column;
  }
.plan-item {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    padding: 0.5rem 0.125rem;
    border-bottom: 1px solid oklch(var(--plan-item-rule) / 0.7);
  }
.plan-item:last-child {
    border-bottom: none;
  }
.plan-check {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1rem;
    height: 1rem;
    margin-top: 0.0625rem;
    border-radius: 0.25rem;
    background: oklch(var(--plan-check-soft));
    color: oklch(var(--plan-check));
    border: 1px solid oklch(var(--plan-check) / 0.5);
    flex-shrink: 0;
  }
.plan-text {
    font-size: 0.8125rem;
    line-height: 1.45;
    color: oklch(var(--report-ink));
  }
/* ── Satellite base-layer provenance note ── */
/* States that the visible base is satellite imagery — never a composite.
     Neutral by design: it is a fact, not a warning. */
.sat-base-note {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.1875rem 0.5rem;
    background: oklch(var(--prov-sat-soft) / 0.92);
    color: oklch(var(--prov-sat-fg));
    border: 1px solid oklch(var(--prov-border));
    border-radius: 999px;
    font-family: var(--font-mono);
    font-size: 0.5625rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    line-height: 1.4;
    white-space: nowrap;
  }
/* ── Zonal health legend ── */
/* Compact card over the map: the three vigor bands plus the overlay toggle.
     Deliberately small so it never competes with the satellite imagery. */
.zone-legend {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    width: 12.5rem;
    padding: 0.625rem 0.75rem;
    background: oklch(var(--drawer-surface) / 0.94);
    color: oklch(var(--drawer-fg));
    border: 1px solid oklch(var(--drawer-border));
    border-radius: calc(var(--radius) + 2px);
    box-shadow: 0 6px 20px -8px oklch(0.16 0.03 145 / 0.4);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
  }
.zone-legend__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
  }
.zone-legend__title {
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: oklch(var(--drawer-muted));
  }
/* Pill switch — the overlay on/off control */
.zone-legend__switch {
    position: relative;
    flex-shrink: 0;
    width: 2rem;
    height: 1.125rem;
    padding: 0;
    border: 1px solid oklch(var(--drawer-border));
    border-radius: 999px;
    background: oklch(var(--drawer-rule));
    cursor: pointer;
    transition: background-color 0.2s ease;
  }
.zone-legend__switch--on {
    background: oklch(var(--sev-low));
    border-color: oklch(var(--sev-low));
  }
.zone-legend__switch:focus-visible {
    outline: none;
    box-shadow: 0 0 0 2px oklch(var(--drawer-accent));
  }
.zone-legend__switch-knob {
    position: absolute;
    top: 50%;
    left: 0.125rem;
    width: 0.8125rem;
    height: 0.8125rem;
    border-radius: 999px;
    background: oklch(var(--drawer-surface));
    transform: translateY(-50%);
    transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1);
  }
.zone-legend__switch--on .zone-legend__switch-knob {
    transform: translate(0.875rem, -50%);
  }
.zone-legend__bands {
    display: flex;
    flex-direction: column;
    gap: 0.3125rem;
    margin: 0;
    padding: 0;
    list-style: none;
  }
.zone-legend__band {
    display: flex;
    align-items: center;
    gap: 0.4375rem;
  }
.zone-legend__swatch {
    flex-shrink: 0;
    width: 0.75rem;
    height: 0.75rem;
    border-radius: 3px;
    /* The swatch shows the band at its true 40% overlay opacity. */
    opacity: 0.4;
    box-shadow: inset 0 0 0 1px oklch(var(--drawer-border));
  }
.zone-legend__band-text {
    display: flex;
    flex-direction: column;
    min-width: 0;
  }
.zone-legend__band-label {
    font-size: 0.6875rem;
    font-weight: 600;
    line-height: 1.2;
    color: oklch(var(--drawer-fg));
  }
.zone-legend__band-meaning {
    font-size: 0.5625rem;
    line-height: 1.3;
    color: oklch(var(--drawer-muted));
  }
.zone-legend__foot {
    margin: 0;
    padding-top: 0.375rem;
    border-top: 1px solid oklch(var(--drawer-rule));
    font-family: var(--font-mono);
    font-size: 0.5625rem;
    letter-spacing: 0.04em;
    color: oklch(var(--drawer-muted));
  }
/* ── Zone issue pins ── */
/* A severity-colored teardrop with a white core, so Red and Yellow pins are
     distinguishable at a glance and both read against satellite imagery. */
.zone-issue-pin {
    background: transparent;
    border: none;
  }
.zone-issue-pin__dot {
    display: block;
    border-radius: 999px;
    background: var(--pin-color);
    border: 2px solid oklch(0.99 0.005 100);
    box-shadow: 0 2px 6px -1px oklch(0.16 0.03 145 / 0.55);
    transition: transform 0.15s ease;
  }
.zone-issue-pin__dot--severe {
    border-radius: 999px 999px 999px 2px;
    transform: rotate(-45deg);
  }
.zone-issue-pin__dot--severe::after {
    content: "";
    position: absolute;
    inset: 30%;
    border-radius: 999px;
    background: oklch(0.99 0.005 100);
  }
.zone-issue-pin:hover .zone-issue-pin__dot {
    transform: scale(1.12);
  }
.zone-issue-pin:hover .zone-issue-pin__dot--severe {
    transform: rotate(-45deg) scale(1.12);
  }
/* ── AI agronomic explanation block ── */
.explain-block {
    padding: 0.625rem 0.75rem;
    background: oklch(var(--meta-bg));
    border: 1px solid oklch(var(--meta-rule));
    border-left: 3px solid oklch(var(--drawer-accent));
    border-radius: calc(var(--radius) - 2px);
  }
.explain-block--error {
    border-left-color: oklch(var(--sev-severe));
  }
/* Loading skeleton — layout-matched to the resolved prose block. */
.explain-skeleton {
    display: block;
    height: 0.5rem;
    margin-bottom: 0.375rem;
    border-radius: 999px;
    background: oklch(var(--drawer-rule));
    animation: explain-pulse 1.4s ease-in-out infinite;
  }
.explain-skeleton--short {
    width: 62%;
  }
@keyframes explain-pulse {
    0%,
    100% {
      opacity: 0.45;
    }
    50% {
      opacity: 0.9;
    }
  }
@media (prefers-reduced-motion: reduce) {
    .explain-skeleton {
      animation: none;
    }
    .zone-legend__switch-knob,
    .zone-issue-pin__dot {
      transition: none;
    }
  }
.\[--cell-size\:--spacing\(8\)\] {
  --cell-size: var(--spacing(8));
}

/* ── Self-hosted fonts ── */
@font-face {
  font-family: "DM Sans";
  src: url("/assets/fonts/DMSans.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Fraunces";
  src: url("/assets/fonts/Fraunces.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Geist Mono";
  src: url("/assets/fonts/GeistMono.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

@keyframes shimmer {
  0% {
    background-position: -200% center;
  }
  100% {
    background-position: 200% center;
  }
}

@keyframes badge-drop {
  0% {
    opacity: 0;
    transform: translate(-50%, -12px);
  }
  100% {
    opacity: 1;
    transform: translate(-50%, 0);
  }
}

/* Opacity-only entrance for draggable floating map cards. Unlike badge-drop it
   never sets `transform`, so it cannot fight framer-motion's drag transform
   (CSS animations override inline styles). */
@keyframes card-fade {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes gap-pulse {
  0%,
  100% {
    stroke-opacity: 0.85;
  }
  50% {
    stroke-opacity: 1;
  }
}

@keyframes change-reveal {
  from {
    opacity: 0;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* AI multispectral scan sweep — moves a spectral band across the panel
   while the backend is generating the map */
@keyframes ms-scan {
  0% {
    transform: translateX(-120%);
  }
  100% {
    transform: translateX(320%);
  }
}

/* Determinate progress bar fill */
@keyframes ms-progress {
  from {
    width: 0%;
  }
  to {
    width: 100%;
  }
}

/* Legend + layer-panel entrance — subtle rise + fade */
@keyframes legend-reveal {
  from {
    opacity: 0;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Runtime health banner — subtle slide-in from the top edge */
@keyframes health-slide-in {
  from {
    opacity: 0;
    transform: translateY(-14px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Repair step reveal — gentle rise + fade for each guided step */
@keyframes step-reveal {
  from {
    opacity: 0;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Repair progress fill — indeterminate sweep while a step verifies */
@keyframes repair-progress {
  from {
    width: 0%;
  }
  to {
    width: 100%;
  }
}

/* AI overlay generation — indeterminate bar sweep. Signals "working, unknown
   duration" rather than faking a percentage we cannot know. */
@keyframes gen-indeterminate {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(400%);
  }
}

/* AI overlay generation — slow violet shimmer across the generating surface */
@keyframes gen-shimmer {
  0% {
    background-position: -200% center;
  }
  100% {
    background-position: 200% center;
  }
}

/* Sparkle glyph — gentle twinkle that marks a generated (not captured) layer */
@keyframes gen-sparkle {
  0%,
  100% {
    opacity: 0.7;
    transform: scale(0.94);
  }
  50% {
    opacity: 1;
    transform: scale(1.06);
  }
}

/* On-map AI watermark — breathing scrim so it reads on any imagery without
   becoming a visual distraction over the field. */
@keyframes wm-breathe {
  0%,
  100% {
    opacity: 0.9;
  }
  50% {
    opacity: 1;
  }
}

/* Stress-zone polygon pulse — high/severe zones breathe their stroke opacity
   so the most urgent readings draw the eye without moving geometry. */
@keyframes stress-pulse {
  0%,
  100% {
    stroke-opacity: 0.78;
  }
  50% {
    stroke-opacity: 1;
  }
}

/* Detail drawer — slide in from the right edge */
@keyframes drawer-slide-in {
  from {
    transform: translateX(100%);
  }
  to {
    transform: translateX(0);
  }
}

/* Detail drawer scrim — fade in behind the panel */
@keyframes drawer-scrim-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

/* Geoman toolbar — hide the default PM toolbar since we use custom buttons */
.leaflet-pm-toolbar {
  display: none !important;
}

/* Print styles for Export to PDF */
@media print {
  body * {
    visibility: hidden;
  }
  .print-area,
  .print-area * {
    visibility: visible;
  }
  .print-area {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
  }
  .no-print {
    display: none !important;
  }
}
.selection\:bg-primary *::-moz-selection {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--primary) / var(--tw-bg-opacity, 1));
}
.selection\:bg-primary *::selection {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--primary) / var(--tw-bg-opacity, 1));
}
.selection\:text-primary-foreground *::-moz-selection {
  color: oklch(var(--primary-foreground));
}
.selection\:text-primary-foreground *::selection {
  color: oklch(var(--primary-foreground));
}
.selection\:bg-primary::-moz-selection {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--primary) / var(--tw-bg-opacity, 1));
}
.selection\:bg-primary::selection {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--primary) / var(--tw-bg-opacity, 1));
}
.selection\:text-primary-foreground::-moz-selection {
  color: oklch(var(--primary-foreground));
}
.selection\:text-primary-foreground::selection {
  color: oklch(var(--primary-foreground));
}
.file\:inline-flex::file-selector-button {
  display: inline-flex;
}
.file\:h-7::file-selector-button {
  height: 1.75rem;
}
.file\:border-0::file-selector-button {
  border-width: 0px;
}
.file\:bg-transparent::file-selector-button {
  background-color: transparent;
}
.file\:text-sm::file-selector-button {
  font-size: 0.875rem;
  line-height: 1.25rem;
}
.file\:font-medium::file-selector-button {
  font-weight: 500;
}
.file\:text-foreground::file-selector-button {
  color: oklch(var(--foreground));
}
.placeholder\:text-muted-foreground::-moz-placeholder {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.placeholder\:text-muted-foreground::placeholder {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.placeholder\:text-muted-foreground\/50::-moz-placeholder {
  color: oklch(var(--muted-foreground) / 0.5);
}
.placeholder\:text-muted-foreground\/50::placeholder {
  color: oklch(var(--muted-foreground) / 0.5);
}
.placeholder\:text-muted-foreground\/60::-moz-placeholder {
  color: oklch(var(--muted-foreground) / 0.6);
}
.placeholder\:text-muted-foreground\/60::placeholder {
  color: oklch(var(--muted-foreground) / 0.6);
}
.placeholder\:text-white\/40::-moz-placeholder {
  color: rgb(255 255 255 / 0.4);
}
.placeholder\:text-white\/40::placeholder {
  color: rgb(255 255 255 / 0.4);
}
.after\:absolute::after {
  content: var(--tw-content);
  position: absolute;
}
.after\:-inset-2::after {
  content: var(--tw-content);
  inset: -0.5rem;
}
.after\:inset-y-0::after {
  content: var(--tw-content);
  top: 0px;
  bottom: 0px;
}
.after\:left-1\/2::after {
  content: var(--tw-content);
  left: 50%;
}
.after\:w-1::after {
  content: var(--tw-content);
  width: 0.25rem;
}
.after\:w-\[2px\]::after {
  content: var(--tw-content);
  width: 2px;
}
.after\:-translate-x-1\/2::after {
  content: var(--tw-content);
  --tw-translate-x: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.first\:rounded-l-md:first-child {
  border-top-left-radius: calc(var(--radius) - 2px);
  border-bottom-left-radius: calc(var(--radius) - 2px);
}
.first\:border-l:first-child {
  border-left-width: 1px;
}
.last\:rounded-r-md:last-child {
  border-top-right-radius: calc(var(--radius) - 2px);
  border-bottom-right-radius: calc(var(--radius) - 2px);
}
.last\:border-b-0:last-child {
  border-bottom-width: 0px;
}
.focus-within\:border-white\/30:focus-within {
  border-color: rgb(255 255 255 / 0.3);
}
.focus-within\:bg-white\/20:focus-within {
  background-color: rgb(255 255 255 / 0.2);
}
.hover\:-translate-y-0\.5:hover {
  --tw-translate-y: -0.125rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.hover\:border-\[\#0f3d20\]\/30:hover {
  border-color: rgb(15 61 32 / 0.3);
}
.hover\:border-border:hover {
  border-color: oklch(var(--border));
}
.hover\:border-green-500\/60:hover {
  border-color: rgb(34 197 94 / 0.6);
}
.hover\:border-green-700:hover {
  --tw-border-opacity: 1;
  border-color: rgb(21 128 61 / var(--tw-border-opacity, 1));
}
.hover\:border-indigo-400\/40:hover {
  border-color: rgb(129 140 248 / 0.4);
}
.hover\:border-muted-foreground\/60:hover {
  border-color: oklch(var(--muted-foreground) / 0.6);
}
.hover\:border-primary\/50:hover {
  border-color: oklch(var(--primary) / 0.5);
}
.hover\:border-red-400\/50:hover {
  border-color: rgb(248 113 113 / 0.5);
}
.hover\:border-red-500\/60:hover {
  border-color: rgb(239 68 68 / 0.6);
}
.hover\:border-white\/25:hover {
  border-color: rgb(255 255 255 / 0.25);
}
.hover\:bg-\[\#0f3d20\]\/10:hover {
  background-color: rgb(15 61 32 / 0.1);
}
.hover\:bg-\[\#0f3d20\]\/5:hover {
  background-color: rgb(15 61 32 / 0.05);
}
.hover\:bg-accent:hover {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.hover\:bg-agri-green-deep:hover {
  background-color: oklch(var(--green-deep));
}
.hover\:bg-blue-50:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(239 246 255 / var(--tw-bg-opacity, 1));
}
.hover\:bg-destructive\/10:hover {
  background-color: oklch(var(--destructive) / 0.1);
}
.hover\:bg-destructive\/90:hover {
  background-color: oklch(var(--destructive) / 0.9);
}
.hover\:bg-drawer-header:hover {
  background-color: oklch(var(--drawer-header));
}
.hover\:bg-green-50:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(240 253 244 / var(--tw-bg-opacity, 1));
}
.hover\:bg-green-600\/25:hover {
  background-color: rgb(22 163 74 / 0.25);
}
.hover\:bg-green-700:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(21 128 61 / var(--tw-bg-opacity, 1));
}
.hover\:bg-indigo-700:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(67 56 202 / var(--tw-bg-opacity, 1));
}
.hover\:bg-indigo-700\/50:hover {
  background-color: rgb(67 56 202 / 0.5);
}
.hover\:bg-muted:hover {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--muted) / var(--tw-bg-opacity, 1));
}
.hover\:bg-muted\/20:hover {
  background-color: oklch(var(--muted) / 0.2);
}
.hover\:bg-muted\/50:hover {
  background-color: oklch(var(--muted) / 0.5);
}
.hover\:bg-primary\/90:hover {
  background-color: oklch(var(--primary) / 0.9);
}
.hover\:bg-red-100:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(254 226 226 / var(--tw-bg-opacity, 1));
}
.hover\:bg-red-50:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(254 242 242 / var(--tw-bg-opacity, 1));
}
.hover\:bg-red-600\/25:hover {
  background-color: rgb(220 38 38 / 0.25);
}
.hover\:bg-red-900\/60:hover {
  background-color: rgb(127 29 29 / 0.6);
}
.hover\:bg-secondary\/80:hover {
  background-color: oklch(var(--secondary) / 0.8);
}
.hover\:bg-sev-severe-soft:hover {
  background-color: oklch(var(--sev-severe-soft));
}
.hover\:bg-sidebar-accent:hover {
  background-color: oklch(var(--sidebar-accent));
}
.hover\:bg-white\/10:hover {
  background-color: rgb(255 255 255 / 0.1);
}
.hover\:bg-white\/15:hover {
  background-color: rgb(255 255 255 / 0.15);
}
.hover\:from-green-700:hover {
  --tw-gradient-from: #15803d var(--tw-gradient-from-position);
  --tw-gradient-to: rgb(21 128 61 / 0) var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
.hover\:to-indigo-700:hover {
  --tw-gradient-to: #4338ca var(--tw-gradient-to-position);
}
.hover\:text-accent-foreground:hover {
  color: oklch(var(--accent-foreground));
}
.hover\:text-destructive:hover {
  --tw-text-opacity: 1;
  color: oklch(var(--destructive) / var(--tw-text-opacity, 1));
}
.hover\:text-drawer-fg:hover {
  color: oklch(var(--drawer-fg));
}
.hover\:text-foreground:hover {
  color: oklch(var(--foreground));
}
.hover\:text-indigo-200:hover {
  --tw-text-opacity: 1;
  color: rgb(199 210 254 / var(--tw-text-opacity, 1));
}
.hover\:text-muted-foreground:hover {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.hover\:text-red-500:hover {
  --tw-text-opacity: 1;
  color: rgb(239 68 68 / var(--tw-text-opacity, 1));
}
.hover\:text-sidebar-accent-foreground:hover {
  color: oklch(var(--sidebar-accent-foreground));
}
.hover\:text-white:hover {
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}
.hover\:text-white\/90:hover {
  color: rgb(255 255 255 / 0.9);
}
.hover\:underline:hover {
  text-decoration-line: underline;
}
.hover\:opacity-100:hover {
  opacity: 1;
}
.hover\:opacity-90:hover {
  opacity: 0.9;
}
.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover {
  --tw-shadow: 0 0 0 1px hsl(var(--sidebar-accent));
  --tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.hover\:shadow-card-hover:hover {
  --tw-shadow: 0 2px 8px 0 oklch(0.22 0.04 145 / 0.10), 0 8px 24px -4px oklch(0.22 0.04 145 / 0.10);
  --tw-shadow-colored: 0 2px 8px 0 var(--tw-shadow-color), 0 8px 24px -4px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.hover\:shadow-lg:hover {
  --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.hover\:shadow-md:hover {
  --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.hover\:ring-4:hover {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.hover\:after\:bg-sidebar-border:hover::after {
  content: var(--tw-content);
  background-color: oklch(var(--sidebar-border));
}
.focus\:z-10:focus {
  z-index: 10;
}
.focus\:border-ring:focus {
  --tw-border-opacity: 1;
  border-color: oklch(var(--ring) / var(--tw-border-opacity, 1));
}
.focus\:bg-accent:focus {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.focus\:text-accent-foreground:focus {
  color: oklch(var(--accent-foreground));
}
.focus\:outline-none:focus {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.focus\:ring-2:focus {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus\:ring-\[\#0f3d20\]\/30:focus {
  --tw-ring-color: rgb(15 61 32 / 0.3);
}
.focus\:ring-primary\/30:focus {
  --tw-ring-color: oklch(var(--primary) / 0.3);
}
.focus\:ring-ring:focus {
  --tw-ring-opacity: 1;
  --tw-ring-color: oklch(var(--ring) / var(--tw-ring-opacity, 1));
}
.focus\:ring-offset-2:focus {
  --tw-ring-offset-width: 2px;
}
.focus-visible\:z-10:focus-visible {
  z-index: 10;
}
.focus-visible\:border-ring:focus-visible {
  --tw-border-opacity: 1;
  border-color: oklch(var(--ring) / var(--tw-border-opacity, 1));
}
.focus-visible\:outline-none:focus-visible {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.focus-visible\:outline-1:focus-visible {
  outline-width: 1px;
}
.focus-visible\:outline-ring:focus-visible {
  outline-color: oklch(var(--ring) / 1);
}
.focus-visible\:ring-1:focus-visible {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus-visible\:ring-2:focus-visible {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus-visible\:ring-4:focus-visible {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus-visible\:ring-\[3px\]:focus-visible {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus-visible\:ring-destructive\/20:focus-visible {
  --tw-ring-color: oklch(var(--destructive) / 0.2);
}
.focus-visible\:ring-drawer-accent:focus-visible {
  --tw-ring-color: oklch(var(--drawer-accent));
}
.focus-visible\:ring-green-500:focus-visible {
  --tw-ring-opacity: 1;
  --tw-ring-color: rgb(34 197 94 / var(--tw-ring-opacity, 1));
}
.focus-visible\:ring-ring:focus-visible {
  --tw-ring-opacity: 1;
  --tw-ring-color: oklch(var(--ring) / var(--tw-ring-opacity, 1));
}
.focus-visible\:ring-ring\/50:focus-visible {
  --tw-ring-color: oklch(var(--ring) / 0.5);
}
.focus-visible\:ring-offset-1:focus-visible {
  --tw-ring-offset-width: 1px;
}
.focus-visible\:ring-offset-2:focus-visible {
  --tw-ring-offset-width: 2px;
}
.active\:scale-\[0\.98\]:active {
  --tw-scale-x: 0.98;
  --tw-scale-y: 0.98;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.active\:cursor-grabbing:active {
  cursor: grabbing;
}
.active\:bg-green-800:active {
  --tw-bg-opacity: 1;
  background-color: rgb(22 101 52 / var(--tw-bg-opacity, 1));
}
.active\:bg-sidebar-accent:active {
  background-color: oklch(var(--sidebar-accent));
}
.active\:text-sidebar-accent-foreground:active {
  color: oklch(var(--sidebar-accent-foreground));
}
.disabled\:pointer-events-none:disabled {
  pointer-events: none;
}
.disabled\:cursor-not-allowed:disabled {
  cursor: not-allowed;
}
.disabled\:bg-indigo-400:disabled {
  --tw-bg-opacity: 1;
  background-color: rgb(129 140 248 / var(--tw-bg-opacity, 1));
}
.disabled\:opacity-50:disabled {
  opacity: 0.5;
}
.disabled\:opacity-60:disabled {
  opacity: 0.6;
}
.group\/menu-item:focus-within .group-focus-within\/menu-item\:opacity-100 {
  opacity: 1;
}
.group:hover .group-hover\:bg-primary\/15 {
  background-color: oklch(var(--primary) / 0.15);
}
.group:hover .group-hover\:text-\[\#0f3d20\] {
  --tw-text-opacity: 1;
  color: rgb(15 61 32 / var(--tw-text-opacity, 1));
}
.group\/menu-item:hover .group-hover\/menu-item\:opacity-100 {
  opacity: 1;
}
.peer\/menu-button:hover ~ .peer-hover\/menu-button\:text-sidebar-accent-foreground {
  color: oklch(var(--sidebar-accent-foreground));
}
.peer:disabled ~ .peer-disabled\:cursor-not-allowed {
  cursor: not-allowed;
}
.peer:disabled ~ .peer-disabled\:opacity-50 {
  opacity: 0.5;
}
.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg) {
  grid-template-columns: calc(var(--spacing) * 4) 1fr;
}
.has-\[\>svg\]\:gap-x-3:has(>svg) {
  -moz-column-gap: 0.75rem;
       column-gap: 0.75rem;
}
.has-\[\>svg\]\:px-2\.5:has(>svg) {
  padding-left: 0.625rem;
  padding-right: 0.625rem;
}
.has-\[\>svg\]\:px-3:has(>svg) {
  padding-left: 0.75rem;
  padding-right: 0.75rem;
}
.has-\[\>svg\]\:px-4:has(>svg) {
  padding-left: 1rem;
  padding-right: 1rem;
}
.aria-disabled\:pointer-events-none[aria-disabled="true"] {
  pointer-events: none;
}
.aria-disabled\:opacity-50[aria-disabled="true"] {
  opacity: 0.5;
}
.aria-selected\:text-muted-foreground[aria-selected="true"] {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.data-\[disabled\=true\]\:pointer-events-none[data-disabled="true"] {
  pointer-events: none;
}
.data-\[disabled\]\:pointer-events-none[data-disabled] {
  pointer-events: none;
}
.data-\[vaul-drawer-direction\=bottom\]\:inset-x-0[data-vaul-drawer-direction="bottom"] {
  left: 0px;
  right: 0px;
}
.data-\[vaul-drawer-direction\=left\]\:inset-y-0[data-vaul-drawer-direction="left"] {
  top: 0px;
  bottom: 0px;
}
.data-\[vaul-drawer-direction\=right\]\:inset-y-0[data-vaul-drawer-direction="right"] {
  top: 0px;
  bottom: 0px;
}
.data-\[vaul-drawer-direction\=top\]\:inset-x-0[data-vaul-drawer-direction="top"] {
  left: 0px;
  right: 0px;
}
.data-\[vaul-drawer-direction\=bottom\]\:bottom-0[data-vaul-drawer-direction="bottom"] {
  bottom: 0px;
}
.data-\[vaul-drawer-direction\=left\]\:left-0[data-vaul-drawer-direction="left"] {
  left: 0px;
}
.data-\[vaul-drawer-direction\=right\]\:right-0[data-vaul-drawer-direction="right"] {
  right: 0px;
}
.data-\[vaul-drawer-direction\=top\]\:top-0[data-vaul-drawer-direction="top"] {
  top: 0px;
}
.data-\[active\=true\]\:z-10[data-active="true"] {
  z-index: 10;
}
.data-\[vaul-drawer-direction\=bottom\]\:mt-24[data-vaul-drawer-direction="bottom"] {
  margin-top: 6rem;
}
.data-\[vaul-drawer-direction\=top\]\:mb-24[data-vaul-drawer-direction="top"] {
  margin-bottom: 6rem;
}
.data-\[orientation\=horizontal\]\:h-1\.5[data-orientation="horizontal"] {
  height: 0.375rem;
}
.data-\[orientation\=horizontal\]\:h-full[data-orientation="horizontal"] {
  height: 100%;
}
.data-\[orientation\=horizontal\]\:h-px[data-orientation="horizontal"] {
  height: 1px;
}
.data-\[orientation\=vertical\]\:h-full[data-orientation="vertical"] {
  height: 100%;
}
.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction="vertical"] {
  height: 1px;
}
.data-\[size\=default\]\:h-9[data-size="default"] {
  height: 2.25rem;
}
.data-\[size\=sm\]\:h-8[data-size="sm"] {
  height: 2rem;
}
.data-\[vaul-drawer-direction\=bottom\]\:max-h-\[80vh\][data-vaul-drawer-direction="bottom"] {
  max-height: 80vh;
}
.data-\[vaul-drawer-direction\=top\]\:max-h-\[80vh\][data-vaul-drawer-direction="top"] {
  max-height: 80vh;
}
.data-\[orientation\=vertical\]\:min-h-44[data-orientation="vertical"] {
  min-height: 11rem;
}
.data-\[orientation\=horizontal\]\:w-full[data-orientation="horizontal"] {
  width: 100%;
}
.data-\[orientation\=vertical\]\:w-1\.5[data-orientation="vertical"] {
  width: 0.375rem;
}
.data-\[orientation\=vertical\]\:w-auto[data-orientation="vertical"] {
  width: auto;
}
.data-\[orientation\=vertical\]\:w-full[data-orientation="vertical"] {
  width: 100%;
}
.data-\[orientation\=vertical\]\:w-px[data-orientation="vertical"] {
  width: 1px;
}
.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction="vertical"] {
  width: 100%;
}
.data-\[vaul-drawer-direction\=left\]\:w-3\/4[data-vaul-drawer-direction="left"] {
  width: 75%;
}
.data-\[vaul-drawer-direction\=right\]\:w-3\/4[data-vaul-drawer-direction="right"] {
  width: 75%;
}
.data-\[side\=bottom\]\:translate-y-1[data-side="bottom"] {
  --tw-translate-y: 0.25rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.data-\[side\=left\]\:-translate-x-1[data-side="left"] {
  --tw-translate-x: -0.25rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.data-\[side\=right\]\:translate-x-1[data-side="right"] {
  --tw-translate-x: 0.25rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.data-\[side\=top\]\:-translate-y-1[data-side="top"] {
  --tw-translate-y: -0.25rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state="checked"] {
  --tw-translate-x: calc(100% - 2px);
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.data-\[state\=unchecked\]\:translate-x-0[data-state="unchecked"] {
  --tw-translate-x: 0px;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
@keyframes accordion-up {

  from {
    height: var(--radix-accordion-content-height);
  }

  to {
    height: 0;
  }
}
.data-\[state\=closed\]\:animate-accordion-up[data-state="closed"] {
  animation: accordion-up 0.2s ease-out;
}
@keyframes accordion-down {

  from {
    height: 0;
  }

  to {
    height: var(--radix-accordion-content-height);
  }
}
.data-\[state\=open\]\:animate-accordion-down[data-state="open"] {
  animation: accordion-down 0.2s ease-out;
}
.data-\[orientation\=vertical\]\:flex-col[data-orientation="vertical"] {
  flex-direction: column;
}
.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction="vertical"] {
  flex-direction: column;
}
.data-\[range-end\=true\]\:rounded-md[data-range-end="true"] {
  border-radius: calc(var(--radius) - 2px);
}
.data-\[range-middle\=true\]\:rounded-none[data-range-middle="true"] {
  border-radius: 0px;
}
.data-\[range-start\=true\]\:rounded-md[data-range-start="true"] {
  border-radius: calc(var(--radius) - 2px);
}
.data-\[selected\=true\]\:rounded-none[data-selected="true"] {
  border-radius: 0px;
}
.data-\[range-end\=true\]\:rounded-r-md[data-range-end="true"] {
  border-top-right-radius: calc(var(--radius) - 2px);
  border-bottom-right-radius: calc(var(--radius) - 2px);
}
.data-\[range-start\=true\]\:rounded-l-md[data-range-start="true"] {
  border-top-left-radius: calc(var(--radius) - 2px);
  border-bottom-left-radius: calc(var(--radius) - 2px);
}
.data-\[vaul-drawer-direction\=bottom\]\:rounded-t-lg[data-vaul-drawer-direction="bottom"] {
  border-top-left-radius: var(--radius);
  border-top-right-radius: var(--radius);
}
.data-\[vaul-drawer-direction\=top\]\:rounded-b-lg[data-vaul-drawer-direction="top"] {
  border-bottom-right-radius: var(--radius);
  border-bottom-left-radius: var(--radius);
}
.data-\[variant\=outline\]\:border-l-0[data-variant="outline"] {
  border-left-width: 0px;
}
.data-\[vaul-drawer-direction\=bottom\]\:border-t[data-vaul-drawer-direction="bottom"] {
  border-top-width: 1px;
}
.data-\[vaul-drawer-direction\=left\]\:border-r[data-vaul-drawer-direction="left"] {
  border-right-width: 1px;
}
.data-\[vaul-drawer-direction\=right\]\:border-l[data-vaul-drawer-direction="right"] {
  border-left-width: 1px;
}
.data-\[vaul-drawer-direction\=top\]\:border-b[data-vaul-drawer-direction="top"] {
  border-bottom-width: 1px;
}
.data-\[active\=true\]\:border-ring[data-active="true"] {
  --tw-border-opacity: 1;
  border-color: oklch(var(--ring) / var(--tw-border-opacity, 1));
}
.data-\[state\=checked\]\:border-primary[data-state="checked"] {
  --tw-border-opacity: 1;
  border-color: oklch(var(--primary) / var(--tw-border-opacity, 1));
}
.data-\[active\=true\]\:bg-accent\/50[data-active="true"] {
  background-color: oklch(var(--accent) / 0.5);
}
.data-\[active\=true\]\:bg-sidebar-accent[data-active="true"] {
  background-color: oklch(var(--sidebar-accent));
}
.data-\[range-end\=true\]\:bg-primary[data-range-end="true"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--primary) / var(--tw-bg-opacity, 1));
}
.data-\[range-middle\=true\]\:bg-accent[data-range-middle="true"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.data-\[range-start\=true\]\:bg-primary[data-range-start="true"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--primary) / var(--tw-bg-opacity, 1));
}
.data-\[selected-single\=true\]\:bg-primary[data-selected-single="true"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--primary) / var(--tw-bg-opacity, 1));
}
.data-\[selected\=true\]\:bg-accent[data-selected="true"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.data-\[state\=active\]\:bg-background[data-state="active"] {
  background-color: oklch(var(--background));
}
.data-\[state\=checked\]\:bg-primary[data-state="checked"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--primary) / var(--tw-bg-opacity, 1));
}
.data-\[state\=on\]\:bg-accent[data-state="on"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.data-\[state\=open\]\:bg-accent[data-state="open"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.data-\[state\=open\]\:bg-accent\/50[data-state="open"] {
  background-color: oklch(var(--accent) / 0.5);
}
.data-\[state\=open\]\:bg-secondary[data-state="open"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--secondary) / var(--tw-bg-opacity, 1));
}
.data-\[state\=selected\]\:bg-muted[data-state="selected"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--muted) / var(--tw-bg-opacity, 1));
}
.data-\[state\=unchecked\]\:bg-input[data-state="unchecked"] {
  background-color: oklch(var(--input));
}
.data-\[inset\]\:pl-8[data-inset] {
  padding-left: 2rem;
}
.data-\[active\=true\]\:font-medium[data-active="true"] {
  font-weight: 500;
}
.data-\[active\=true\]\:text-accent-foreground[data-active="true"] {
  color: oklch(var(--accent-foreground));
}
.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active="true"] {
  color: oklch(var(--sidebar-accent-foreground));
}
.data-\[error\=true\]\:text-destructive[data-error="true"] {
  --tw-text-opacity: 1;
  color: oklch(var(--destructive) / var(--tw-text-opacity, 1));
}
.data-\[placeholder\]\:text-muted-foreground[data-placeholder] {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.data-\[range-end\=true\]\:text-primary-foreground[data-range-end="true"] {
  color: oklch(var(--primary-foreground));
}
.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle="true"] {
  color: oklch(var(--accent-foreground));
}
.data-\[range-start\=true\]\:text-primary-foreground[data-range-start="true"] {
  color: oklch(var(--primary-foreground));
}
.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single="true"] {
  color: oklch(var(--primary-foreground));
}
.data-\[selected\=true\]\:text-accent-foreground[data-selected="true"] {
  color: oklch(var(--accent-foreground));
}
.data-\[state\=checked\]\:text-primary-foreground[data-state="checked"] {
  color: oklch(var(--primary-foreground));
}
.data-\[state\=on\]\:text-accent-foreground[data-state="on"] {
  color: oklch(var(--accent-foreground));
}
.data-\[state\=open\]\:text-accent-foreground[data-state="open"] {
  color: oklch(var(--accent-foreground));
}
.data-\[state\=open\]\:text-muted-foreground[data-state="open"] {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.data-\[variant\=destructive\]\:text-destructive[data-variant="destructive"] {
  --tw-text-opacity: 1;
  color: oklch(var(--destructive) / var(--tw-text-opacity, 1));
}
.data-\[disabled\=true\]\:opacity-50[data-disabled="true"] {
  opacity: 0.5;
}
.data-\[disabled\]\:opacity-50[data-disabled] {
  opacity: 0.5;
}
.data-\[state\=open\]\:opacity-100[data-state="open"] {
  opacity: 1;
}
.data-\[state\=active\]\:shadow-sm[data-state="active"] {
  --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.data-\[variant\=outline\]\:shadow-xs[data-variant="outline"] {
  --tw-shadow: 0 1px 2px 0 rgba(0,0,0,0.05);
  --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.data-\[active\=true\]\:ring-\[3px\][data-active="true"] {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.data-\[active\=true\]\:ring-ring\/50[data-active="true"] {
  --tw-ring-color: oklch(var(--ring) / 0.5);
}
.data-\[state\=closed\]\:duration-300[data-state="closed"] {
  transition-duration: 300ms;
}
.data-\[state\=open\]\:duration-500[data-state="open"] {
  transition-duration: 500ms;
}
.data-\[motion\^\=from-\]\:animate-in[data-motion^="from-"] {
  animation-name: enter;
  animation-duration: 150ms;
  --tw-enter-opacity: initial;
  --tw-enter-scale: initial;
  --tw-enter-rotate: initial;
  --tw-enter-translate-x: initial;
  --tw-enter-translate-y: initial;
}
.data-\[state\=open\]\:animate-in[data-state="open"] {
  animation-name: enter;
  animation-duration: 150ms;
  --tw-enter-opacity: initial;
  --tw-enter-scale: initial;
  --tw-enter-rotate: initial;
  --tw-enter-translate-x: initial;
  --tw-enter-translate-y: initial;
}
.data-\[state\=visible\]\:animate-in[data-state="visible"] {
  animation-name: enter;
  animation-duration: 150ms;
  --tw-enter-opacity: initial;
  --tw-enter-scale: initial;
  --tw-enter-rotate: initial;
  --tw-enter-translate-x: initial;
  --tw-enter-translate-y: initial;
}
.data-\[motion\^\=to-\]\:animate-out[data-motion^="to-"] {
  animation-name: exit;
  animation-duration: 150ms;
  --tw-exit-opacity: initial;
  --tw-exit-scale: initial;
  --tw-exit-rotate: initial;
  --tw-exit-translate-x: initial;
  --tw-exit-translate-y: initial;
}
.data-\[state\=closed\]\:animate-out[data-state="closed"] {
  animation-name: exit;
  animation-duration: 150ms;
  --tw-exit-opacity: initial;
  --tw-exit-scale: initial;
  --tw-exit-rotate: initial;
  --tw-exit-translate-x: initial;
  --tw-exit-translate-y: initial;
}
.data-\[state\=hidden\]\:animate-out[data-state="hidden"] {
  animation-name: exit;
  animation-duration: 150ms;
  --tw-exit-opacity: initial;
  --tw-exit-scale: initial;
  --tw-exit-rotate: initial;
  --tw-exit-translate-x: initial;
  --tw-exit-translate-y: initial;
}
.data-\[motion\^\=from-\]\:fade-in[data-motion^="from-"] {
  --tw-enter-opacity: 0;
}
.data-\[motion\^\=to-\]\:fade-out[data-motion^="to-"] {
  --tw-exit-opacity: 0;
}
.data-\[state\=closed\]\:fade-out-0[data-state="closed"] {
  --tw-exit-opacity: 0;
}
.data-\[state\=hidden\]\:fade-out[data-state="hidden"] {
  --tw-exit-opacity: 0;
}
.data-\[state\=open\]\:fade-in-0[data-state="open"] {
  --tw-enter-opacity: 0;
}
.data-\[state\=visible\]\:fade-in[data-state="visible"] {
  --tw-enter-opacity: 0;
}
.data-\[state\=closed\]\:zoom-out-95[data-state="closed"] {
  --tw-exit-scale: .95;
}
.data-\[state\=open\]\:zoom-in-90[data-state="open"] {
  --tw-enter-scale: .9;
}
.data-\[state\=open\]\:zoom-in-95[data-state="open"] {
  --tw-enter-scale: .95;
}
.data-\[motion\=from-end\]\:slide-in-from-right-52[data-motion="from-end"] {
  --tw-enter-translate-x: 13rem;
}
.data-\[motion\=from-start\]\:slide-in-from-left-52[data-motion="from-start"] {
  --tw-enter-translate-x: -13rem;
}
.data-\[motion\=to-end\]\:slide-out-to-right-52[data-motion="to-end"] {
  --tw-exit-translate-x: 13rem;
}
.data-\[motion\=to-start\]\:slide-out-to-left-52[data-motion="to-start"] {
  --tw-exit-translate-x: -13rem;
}
.data-\[side\=bottom\]\:slide-in-from-top-2[data-side="bottom"] {
  --tw-enter-translate-y: -0.5rem;
}
.data-\[side\=left\]\:slide-in-from-right-2[data-side="left"] {
  --tw-enter-translate-x: 0.5rem;
}
.data-\[side\=right\]\:slide-in-from-left-2[data-side="right"] {
  --tw-enter-translate-x: -0.5rem;
}
.data-\[side\=top\]\:slide-in-from-bottom-2[data-side="top"] {
  --tw-enter-translate-y: 0.5rem;
}
.data-\[state\=closed\]\:slide-out-to-bottom[data-state="closed"] {
  --tw-exit-translate-y: 100%;
}
.data-\[state\=closed\]\:slide-out-to-left[data-state="closed"] {
  --tw-exit-translate-x: -100%;
}
.data-\[state\=closed\]\:slide-out-to-right[data-state="closed"] {
  --tw-exit-translate-x: 100%;
}
.data-\[state\=closed\]\:slide-out-to-top[data-state="closed"] {
  --tw-exit-translate-y: -100%;
}
.data-\[state\=open\]\:slide-in-from-bottom[data-state="open"] {
  --tw-enter-translate-y: 100%;
}
.data-\[state\=open\]\:slide-in-from-left[data-state="open"] {
  --tw-enter-translate-x: -100%;
}
.data-\[state\=open\]\:slide-in-from-right[data-state="open"] {
  --tw-enter-translate-x: 100%;
}
.data-\[state\=open\]\:slide-in-from-top[data-state="open"] {
  --tw-enter-translate-y: -100%;
}
.data-\[state\=closed\]\:duration-300[data-state="closed"] {
  animation-duration: 300ms;
}
.data-\[state\=open\]\:duration-500[data-state="open"] {
  animation-duration: 500ms;
}
.\*\:data-\[slot\=select-value\]\:line-clamp-1[data-slot="select-value"] > * {
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 1;
}
.\*\:data-\[slot\=select-value\]\:flex[data-slot="select-value"] > * {
  display: flex;
}
.\*\:data-\[slot\=select-value\]\:items-center[data-slot="select-value"] > * {
  align-items: center;
}
.\*\:data-\[slot\=select-value\]\:gap-2[data-slot="select-value"] > * {
  gap: 0.5rem;
}
.\*\:data-\[slot\=alert-description\]\:text-destructive\/90[data-slot="alert-description"] > * {
  color: oklch(var(--destructive) / 0.9);
}
.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction="vertical"]::after {
  content: var(--tw-content);
  left: 0px;
}
.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction="vertical"]::after {
  content: var(--tw-content);
  height: 0.25rem;
}
.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction="vertical"]::after {
  content: var(--tw-content);
  width: 100%;
}
.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction="vertical"]::after {
  content: var(--tw-content);
  --tw-translate-y: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction="vertical"]::after {
  content: var(--tw-content);
  --tw-translate-x: 0px;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.data-\[variant\=outline\]\:first\:border-l:first-child[data-variant="outline"] {
  border-left-width: 1px;
}
.data-\[active\=true\]\:hover\:bg-accent:hover[data-active="true"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.data-\[state\=open\]\:hover\:bg-accent:hover[data-state="open"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.data-\[state\=open\]\:hover\:bg-sidebar-accent:hover[data-state="open"] {
  background-color: oklch(var(--sidebar-accent));
}
.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground:hover[data-state="open"] {
  color: oklch(var(--sidebar-accent-foreground));
}
.data-\[active\=true\]\:focus\:bg-accent:focus[data-active="true"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.data-\[state\=open\]\:focus\:bg-accent:focus[data-state="open"] {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
.data-\[variant\=destructive\]\:focus\:bg-destructive\/10:focus[data-variant="destructive"] {
  background-color: oklch(var(--destructive) / 0.1);
}
.data-\[variant\=destructive\]\:focus\:text-destructive:focus[data-variant="destructive"] {
  --tw-text-opacity: 1;
  color: oklch(var(--destructive) / var(--tw-text-opacity, 1));
}
.group[data-disabled="true"] .group-data-\[disabled\=true\]\:pointer-events-none {
  pointer-events: none;
}
.group\/day[data-focused="true"] .group-data-\[focused\=true\]\/day\:relative {
  position: relative;
}
.group[data-collapsible="offcanvas"] .group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\] {
  left: calc(var(--sidebar-width) * -1);
}
.group[data-collapsible="offcanvas"] .group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\] {
  right: calc(var(--sidebar-width) * -1);
}
.group[data-side="left"] .group-data-\[side\=left\]\:-right-4 {
  right: -1rem;
}
.group[data-side="right"] .group-data-\[side\=right\]\:left-0 {
  left: 0px;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:top-full {
  top: 100%;
}
.group\/day[data-focused="true"] .group-data-\[focused\=true\]\/day\:z-10 {
  z-index: 10;
}
.group[data-collapsible="icon"] .group-data-\[collapsible\=icon\]\:-mt-8 {
  margin-top: -2rem;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:mt-1\.5 {
  margin-top: 0.375rem;
}
.group\/drawer-content[data-vaul-drawer-direction="bottom"] .group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:block {
  display: block;
}
.group[data-collapsible="icon"] .group-data-\[collapsible\=icon\]\:hidden {
  display: none;
}
.group[data-collapsible="icon"] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\] {
  width: calc(var(--sidebar-width-icon) + (--spacing(4)));
}
.group[data-collapsible="icon"] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\] {
  width: calc(var(--sidebar-width-icon) + (--spacing(4)) + 2px);
}
.group[data-collapsible="offcanvas"] .group-data-\[collapsible\=offcanvas\]\:w-0 {
  width: 0px;
}
.group[data-collapsible="offcanvas"] .group-data-\[collapsible\=offcanvas\]\:translate-x-0 {
  --tw-translate-x: 0px;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.group[data-side="right"] .group-data-\[side\=right\]\:rotate-180 {
  --tw-rotate: 180deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.group[data-state="open"] .group-data-\[state\=open\]\:rotate-180 {
  --tw-rotate: 180deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.group[data-collapsible="icon"] .group-data-\[collapsible\=icon\]\:overflow-hidden {
  overflow: hidden;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:overflow-hidden {
  overflow: hidden;
}
.group[data-variant="floating"] .group-data-\[variant\=floating\]\:rounded-lg {
  border-radius: var(--radius);
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:rounded-md {
  border-radius: calc(var(--radius) - 2px);
}
.group[data-variant="floating"] .group-data-\[variant\=floating\]\:border {
  border-width: 1px;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:border {
  border-width: 1px;
}
.group[data-side="left"] .group-data-\[side\=left\]\:border-r {
  border-right-width: 1px;
}
.group[data-side="right"] .group-data-\[side\=right\]\:border-l {
  border-left-width: 1px;
}
.group\/day[data-focused="true"] .group-data-\[focused\=true\]\/day\:border-ring {
  --tw-border-opacity: 1;
  border-color: oklch(var(--ring) / var(--tw-border-opacity, 1));
}
.group[data-variant="floating"] .group-data-\[variant\=floating\]\:border-sidebar-border {
  border-color: oklch(var(--sidebar-border));
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:bg-popover {
  background-color: oklch(var(--popover));
}
.group\/drawer-content[data-vaul-drawer-direction="bottom"] .group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:text-center {
  text-align: center;
}
.group\/drawer-content[data-vaul-drawer-direction="top"] .group-data-\[vaul-drawer-direction\=top\]\/drawer-content\:text-center {
  text-align: center;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:text-popover-foreground {
  color: oklch(var(--popover-foreground));
}
.group[data-collapsible="icon"] .group-data-\[collapsible\=icon\]\:opacity-0 {
  opacity: 0;
}
.group[data-disabled="true"] .group-data-\[disabled\=true\]\:opacity-50 {
  opacity: 0.5;
}
.group[data-variant="floating"] .group-data-\[variant\=floating\]\:shadow-sm {
  --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:shadow {
  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.group\/day[data-focused="true"] .group-data-\[focused\=true\]\/day\:ring-\[3px\] {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.group\/day[data-focused="true"] .group-data-\[focused\=true\]\/day\:ring-ring\/50 {
  --tw-ring-color: oklch(var(--ring) / 0.5);
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:duration-200 {
  transition-duration: 200ms;
  animation-duration: 200ms;
}
.group[data-collapsible="offcanvas"] .group-data-\[collapsible\=offcanvas\]\:after\:left-full::after {
  content: var(--tw-content);
  left: 100%;
}
.group[data-collapsible="offcanvas"] .hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover {
  background-color: oklch(var(--sidebar));
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:animate-in[data-state="open"] {
  animation-name: enter;
  animation-duration: 150ms;
  --tw-enter-opacity: initial;
  --tw-enter-scale: initial;
  --tw-enter-rotate: initial;
  --tw-enter-translate-x: initial;
  --tw-enter-translate-y: initial;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:animate-out[data-state="closed"] {
  animation-name: exit;
  animation-duration: 150ms;
  --tw-exit-opacity: initial;
  --tw-exit-scale: initial;
  --tw-exit-rotate: initial;
  --tw-exit-translate-x: initial;
  --tw-exit-translate-y: initial;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:fade-out-0[data-state="closed"] {
  --tw-exit-opacity: 0;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:fade-in-0[data-state="open"] {
  --tw-enter-opacity: 0;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:zoom-out-95[data-state="closed"] {
  --tw-exit-scale: .95;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:zoom-in-95[data-state="open"] {
  --tw-enter-scale: .95;
}
.peer\/menu-button[data-size="default"] ~ .peer-data-\[size\=default\]\/menu-button\:top-1\.5 {
  top: 0.375rem;
}
.peer\/menu-button[data-size="lg"] ~ .peer-data-\[size\=lg\]\/menu-button\:top-2\.5 {
  top: 0.625rem;
}
.peer\/menu-button[data-size="sm"] ~ .peer-data-\[size\=sm\]\/menu-button\:top-1 {
  top: 0.25rem;
}
.peer\/menu-button[data-active="true"] ~ .peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground {
  color: oklch(var(--sidebar-accent-foreground));
}
.dark\:border-input:is(.dark *) {
  border-color: oklch(var(--input));
}
.dark\:bg-destructive\/60:is(.dark *) {
  background-color: oklch(var(--destructive) / 0.6);
}
.dark\:bg-white\/5:is(.dark *) {
  background-color: rgb(255 255 255 / 0.05);
}
.dark\:text-muted-foreground:is(.dark *) {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.dark\:hover\:bg-accent\/50:hover:is(.dark *) {
  background-color: oklch(var(--accent) / 0.5);
}
.dark\:hover\:text-accent-foreground:hover:is(.dark *) {
  color: oklch(var(--accent-foreground));
}
.dark\:focus-visible\:ring-destructive\/40:focus-visible:is(.dark *) {
  --tw-ring-color: oklch(var(--destructive) / 0.4);
}
.dark\:data-\[state\=active\]\:border-input[data-state="active"]:is(.dark *) {
  border-color: oklch(var(--input));
}
.dark\:data-\[state\=checked\]\:bg-primary[data-state="checked"]:is(.dark *) {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--primary) / var(--tw-bg-opacity, 1));
}
.dark\:data-\[state\=checked\]\:bg-primary-foreground[data-state="checked"]:is(.dark *) {
  background-color: oklch(var(--primary-foreground));
}
.dark\:data-\[state\=unchecked\]\:bg-foreground[data-state="unchecked"]:is(.dark *) {
  background-color: oklch(var(--foreground));
}
.dark\:data-\[state\=active\]\:text-foreground[data-state="active"]:is(.dark *) {
  color: oklch(var(--foreground));
}
.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:focus[data-variant="destructive"]:is(.dark *) {
  background-color: oklch(var(--destructive) / 0.2);
}
@media (min-width: 640px) {

  .sm\:block {
    display: block;
  }

  .sm\:inline {
    display: inline;
  }

  .sm\:flex {
    display: flex;
  }

  .sm\:hidden {
    display: none;
  }

  .sm\:w-auto {
    width: auto;
  }

  .sm\:max-w-lg {
    max-width: 32rem;
  }

  .sm\:max-w-sm {
    max-width: 24rem;
  }

  .sm\:flex-none {
    flex: none;
  }

  .sm\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .sm\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .sm\:flex-row {
    flex-direction: row;
  }

  .sm\:items-start {
    align-items: flex-start;
  }

  .sm\:items-center {
    align-items: center;
  }

  .sm\:justify-end {
    justify-content: flex-end;
  }

  .sm\:justify-between {
    justify-content: space-between;
  }

  .sm\:gap-2 {
    gap: 0.5rem;
  }

  .sm\:gap-2\.5 {
    gap: 0.625rem;
  }

  .sm\:px-6 {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
  }

  .sm\:px-8 {
    padding-left: 2rem;
    padding-right: 2rem;
  }

  .sm\:pl-2\.5 {
    padding-left: 0.625rem;
  }

  .sm\:pr-2\.5 {
    padding-right: 0.625rem;
  }

  .sm\:text-left {
    text-align: left;
  }

  .sm\:text-3xl {
    font-size: 1.875rem;
    line-height: 2.25rem;
  }

  .data-\[vaul-drawer-direction\=left\]\:sm\:max-w-sm[data-vaul-drawer-direction="left"] {
    max-width: 24rem;
  }

  .data-\[vaul-drawer-direction\=right\]\:sm\:max-w-sm[data-vaul-drawer-direction="right"] {
    max-width: 24rem;
  }
}
@media (min-width: 768px) {

  .md\:absolute {
    position: absolute;
  }

  .md\:block {
    display: block;
  }

  .md\:flex {
    display: flex;
  }

  .md\:w-\[var\(--radix-navigation-menu-viewport-width\)\] {
    width: var(--radix-navigation-menu-viewport-width);
  }

  .md\:w-auto {
    width: auto;
  }

  .md\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .md\:flex-row {
    flex-direction: row;
  }

  .md\:gap-1\.5 {
    gap: 0.375rem;
  }

  .md\:p-10 {
    padding: 2.5rem;
  }

  .md\:text-left {
    text-align: left;
  }

  .md\:text-3xl {
    font-size: 1.875rem;
    line-height: 2.25rem;
  }

  .md\:text-sm {
    font-size: 0.875rem;
    line-height: 1.25rem;
  }

  .md\:opacity-0 {
    opacity: 0;
  }

  .md\:after\:hidden::after {
    content: var(--tw-content);
    display: none;
  }

  .peer[data-variant="inset"] ~ .md\:peer-data-\[variant\=inset\]\:m-2 {
    margin: 0.5rem;
  }

  .peer[data-variant="inset"] ~ .md\:peer-data-\[variant\=inset\]\:ml-0 {
    margin-left: 0px;
  }

  .peer[data-variant="inset"][data-state="collapsed"] ~ .md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2 {
    margin-left: 0.5rem;
  }

  .peer[data-variant="inset"] ~ .md\:peer-data-\[variant\=inset\]\:rounded-xl {
    border-radius: calc(var(--radius) + 4px);
  }

  .peer[data-variant="inset"] ~ .md\:peer-data-\[variant\=inset\]\:shadow-sm {
    --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
    --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
    box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
  }
}
@media (min-width: 1024px) {

  .lg\:col-span-2 {
    grid-column: span 2 / span 2;
  }

  .lg\:inline {
    display: inline;
  }

  .lg\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .lg\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .lg\:grid-cols-\[1fr_360px\] {
    grid-template-columns: 1fr 360px;
  }

  .lg\:flex-row {
    flex-direction: row;
  }

  .lg\:items-center {
    align-items: center;
  }

  .lg\:justify-between {
    justify-content: space-between;
  }

  .lg\:px-8 {
    padding-left: 2rem;
    padding-right: 2rem;
  }
}
@media (min-width: 1280px) {

  .xl\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .xl\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .xl\:grid-cols-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .xl\:flex-row {
    flex-direction: row;
  }

  .xl\:items-center {
    align-items: center;
  }
}
.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button {
  border-top-left-radius: calc(var(--radius) - 2px);
  border-bottom-left-radius: calc(var(--radius) - 2px);
}
.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]) {
  padding-right: 0px;
}
.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button {
  border-top-right-radius: calc(var(--radius) - 2px);
  border-bottom-right-radius: calc(var(--radius) - 2px);
}
.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox] {
  --tw-translate-y: 2px;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.\[\&\>button\]\:hidden>button {
  display: none;
}
.\[\&\>span\:last-child\]\:truncate>span:last-child {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.\[\&\>span\]\:text-xs>span {
  font-size: 0.75rem;
  line-height: 1rem;
}
.\[\&\>span\]\:opacity-70>span {
  opacity: 0.7;
}
.\[\&\>svg\]\:pointer-events-none>svg {
  pointer-events: none;
}
.\[\&\>svg\]\:size-3>svg {
  width: 0.75rem;
  height: 0.75rem;
}
.\[\&\>svg\]\:size-3\.5>svg {
  width: 0.875rem;
  height: 0.875rem;
}
.\[\&\>svg\]\:size-4>svg {
  width: 1rem;
  height: 1rem;
}
.\[\&\>svg\]\:h-2\.5>svg {
  height: 0.625rem;
}
.\[\&\>svg\]\:h-3>svg {
  height: 0.75rem;
}
.\[\&\>svg\]\:w-2\.5>svg {
  width: 0.625rem;
}
.\[\&\>svg\]\:w-3>svg {
  width: 0.75rem;
}
.\[\&\>svg\]\:shrink-0>svg {
  flex-shrink: 0;
}
.\[\&\>svg\]\:translate-y-0\.5>svg {
  --tw-translate-y: 0.125rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.\[\&\>svg\]\:text-current>svg {
  color: currentColor;
}
.\[\&\>svg\]\:text-muted-foreground>svg {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.\[\&\>svg\]\:text-sidebar-accent-foreground>svg {
  color: oklch(var(--sidebar-accent-foreground));
}
.\[\&\>tr\]\:last\:border-b-0:last-child>tr {
  border-bottom-width: 0px;
}
.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div {
  --tw-rotate: 90deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg {
  --tw-rotate: 180deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text {
  fill: oklch(var(--muted-foreground) / 1);
}
.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor {
  stroke: oklch(var(--border));
}
.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke='#fff'] {
  stroke: transparent;
}
.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke='#ccc'] {
  stroke: oklch(var(--border));
}
.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector {
  fill: oklch(var(--muted) / 1);
}
.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor {
  fill: oklch(var(--muted) / 1);
}
.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke='#ccc'] {
  stroke: oklch(var(--border));
}
.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke='#fff'] {
  stroke: transparent;
}
.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading] {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}
.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading] {
  padding-top: 0.375rem;
  padding-bottom: 0.375rem;
}
.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading] {
  font-size: 0.75rem;
  line-height: 1rem;
}
.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading] {
  font-weight: 500;
}
.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading] {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden]) ~[cmdk-group] {
  padding-top: 0px;
}
.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group] {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}
.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg {
  height: 1.25rem;
}
.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg {
  width: 1.25rem;
}
.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input] {
  height: 3rem;
}
.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item] {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}
.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item] {
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
}
.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg {
  height: 1.25rem;
}
.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg {
  width: 1.25rem;
}
.\[\&_button\]\:h-8 button {
  height: 2rem;
}
.\[\&_button\]\:border-white\/20 button {
  border-color: rgb(255 255 255 / 0.2);
}
.\[\&_button\]\:bg-white\/10 button {
  background-color: rgb(255 255 255 / 0.1);
}
.\[\&_button\]\:text-white button {
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}
.\[\&_button\]\:hover\:bg-white\/20:hover button {
  background-color: rgb(255 255 255 / 0.2);
}
.\[\&_button\]\:hover\:text-white:hover button {
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}
.\[\&_p\]\:leading-relaxed p {
  line-height: 1.625;
}
.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*='size-']) {
  width: 1rem;
  height: 1rem;
}
.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*='text-']) {
  --tw-text-opacity: 1;
  color: oklch(var(--muted-foreground) / var(--tw-text-opacity, 1));
}
.\[\&_svg\]\:pointer-events-none svg {
  pointer-events: none;
}
.\[\&_svg\]\:shrink-0 svg {
  flex-shrink: 0;
}
.\[\&_tr\:last-child\]\:border-0 tr:last-child {
  border-width: 0px;
}
.\[\&_tr\]\:border-b tr {
  border-bottom-width: 1px;
}
[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2 {
  right: -0.5rem;
}
[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize {
  cursor: e-resize;
}
[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2 {
  left: -0.5rem;
}
[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize {
  cursor: w-resize;
}
[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent {
  background-color: transparent;
}
[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent {
  background-color: transparent;
}
a.\[a\&\]\:hover\:bg-accent:hover {
  --tw-bg-opacity: 1;
  background-color: oklch(var(--accent) / var(--tw-bg-opacity, 1));
}
a.\[a\&\]\:hover\:bg-destructive\/90:hover {
  background-color: oklch(var(--destructive) / 0.9);
}
a.\[a\&\]\:hover\:bg-primary\/90:hover {
  background-color: oklch(var(--primary) / 0.9);
}
a.\[a\&\]\:hover\:bg-secondary\/90:hover {
  background-color: oklch(var(--secondary) / 0.9);
}
a.\[a\&\]\:hover\:text-accent-foreground:hover {
  color: oklch(var(--accent-foreground));
}
