/* enoki full stylesheet. Consumers import this once. */

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

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

/* anton-latin-400-normal */
@font-face {
  font-family: 'Anton';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/fonts/anton-latin-400-normal.woff2) format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* archivo-vietnamese-400-normal */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/fonts/archivo-vietnamese-400-normal.woff2) format('woff2');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

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

/* archivo-latin-400-normal */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/fonts/archivo-latin-400-normal.woff2) format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* archivo-vietnamese-500-normal */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(/fonts/archivo-vietnamese-500-normal.woff2) format('woff2');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

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

/* archivo-latin-500-normal */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(/fonts/archivo-latin-500-normal.woff2) format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* archivo-vietnamese-600-normal */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(/fonts/archivo-vietnamese-600-normal.woff2) format('woff2');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

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

/* archivo-latin-600-normal */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(/fonts/archivo-latin-600-normal.woff2) format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* archivo-vietnamese-700-normal */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url(/fonts/archivo-vietnamese-700-normal.woff2) format('woff2');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

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

/* archivo-latin-700-normal */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url(/fonts/archivo-latin-700-normal.woff2) format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* archivo-vietnamese-800-normal */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-display: swap;
  font-weight: 800;
  src: url(/fonts/archivo-vietnamese-800-normal.woff2) format('woff2');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

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

/* archivo-latin-800-normal */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-display: swap;
  font-weight: 800;
  src: url(/fonts/archivo-latin-800-normal.woff2) format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* source-serif-4-cyrillic-ext-400-normal */
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/fonts/source-serif-4-cyrillic-ext-400-normal.woff2) format('woff2');
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

/* source-serif-4-cyrillic-400-normal */
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/fonts/source-serif-4-cyrillic-400-normal.woff2) format('woff2');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

/* source-serif-4-greek-400-normal */
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/fonts/source-serif-4-greek-400-normal.woff2) format('woff2');
  unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
}

/* source-serif-4-vietnamese-400-normal */
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/fonts/source-serif-4-vietnamese-400-normal.woff2) format('woff2');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

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

/* source-serif-4-latin-400-normal */
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(/fonts/source-serif-4-latin-400-normal.woff2) format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* source-serif-4-cyrillic-ext-700-normal */
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url(/fonts/source-serif-4-cyrillic-ext-700-normal.woff2) format('woff2');
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

/* source-serif-4-cyrillic-700-normal */
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url(/fonts/source-serif-4-cyrillic-700-normal.woff2) format('woff2');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

/* source-serif-4-greek-700-normal */
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url(/fonts/source-serif-4-greek-700-normal.woff2) format('woff2');
  unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
}

/* source-serif-4-vietnamese-700-normal */
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url(/fonts/source-serif-4-vietnamese-700-normal.woff2) format('woff2');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* source-serif-4-latin-ext-700-normal */
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url(/fonts/source-serif-4-latin-ext-700-normal.woff2) format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* source-serif-4-latin-700-normal */
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url(/fonts/source-serif-4-latin-700-normal.woff2) format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* source-serif-4-cyrillic-ext-400-italic */
@font-face {
  font-family: 'Source Serif 4';
  font-style: italic;
  font-display: swap;
  font-weight: 400;
  src: url(/fonts/source-serif-4-cyrillic-ext-400-italic.woff2) format('woff2');
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

/* source-serif-4-cyrillic-400-italic */
@font-face {
  font-family: 'Source Serif 4';
  font-style: italic;
  font-display: swap;
  font-weight: 400;
  src: url(/fonts/source-serif-4-cyrillic-400-italic.woff2) format('woff2');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

/* source-serif-4-greek-400-italic */
@font-face {
  font-family: 'Source Serif 4';
  font-style: italic;
  font-display: swap;
  font-weight: 400;
  src: url(/fonts/source-serif-4-greek-400-italic.woff2) format('woff2');
  unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
}

/* source-serif-4-vietnamese-400-italic */
@font-face {
  font-family: 'Source Serif 4';
  font-style: italic;
  font-display: swap;
  font-weight: 400;
  src: url(/fonts/source-serif-4-vietnamese-400-italic.woff2) format('woff2');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* source-serif-4-latin-ext-400-italic */
@font-face {
  font-family: 'Source Serif 4';
  font-style: italic;
  font-display: swap;
  font-weight: 400;
  src: url(/fonts/source-serif-4-latin-ext-400-italic.woff2) format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* source-serif-4-latin-400-italic */
@font-face {
  font-family: 'Source Serif 4';
  font-style: italic;
  font-display: swap;
  font-weight: 400;
  src: url(/fonts/source-serif-4-latin-400-italic.woff2) format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

/* MapLibre GL chrome (canvas host, scale bar, attribution). Inlined by
   scripts/build-css.mjs because it lives in node_modules. */
.maplibregl-map{font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;overflow:hidden;position:relative;-webkit-tap-highlight-color:rgb(0 0 0/0)}.maplibregl-canvas{position:absolute;left:0;top:0}.maplibregl-map:fullscreen{width:100%;height:100%}.maplibregl-ctrl-group button.maplibregl-ctrl-compass{touch-action:none}.maplibregl-canvas-container.maplibregl-interactive,.maplibregl-ctrl-group button.maplibregl-ctrl-compass{cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none}.maplibregl-canvas-container.maplibregl-interactive.maplibregl-track-pointer{cursor:pointer}.maplibregl-canvas-container.maplibregl-interactive:active,.maplibregl-ctrl-group button.maplibregl-ctrl-compass:active{cursor:grabbing}.maplibregl-canvas-container.maplibregl-touch-zoom-rotate,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate .maplibregl-canvas{touch-action:pan-x pan-y}.maplibregl-canvas-container.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:pinch-zoom}.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:none}.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures,.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures .maplibregl-canvas{touch-action:pan-x pan-y}.maplibregl-ctrl-bottom-left,.maplibregl-ctrl-bottom-right,.maplibregl-ctrl-top-left,.maplibregl-ctrl-top-right{position:absolute;pointer-events:none;z-index:2}.maplibregl-ctrl-top-left{top:0;left:0}.maplibregl-ctrl-top-right{top:0;right:0}.maplibregl-ctrl-bottom-left{bottom:0;left:0}.maplibregl-ctrl-bottom-right{right:0;bottom:0}.maplibregl-ctrl{clear:both;pointer-events:auto;transform:translate(0)}.maplibregl-ctrl-top-left .maplibregl-ctrl{margin:10px 0 0 10px;float:left}.maplibregl-ctrl-top-right .maplibregl-ctrl{margin:10px 10px 0 0;float:right}.maplibregl-ctrl-bottom-left .maplibregl-ctrl{margin:0 0 10px 10px;float:left}.maplibregl-ctrl-bottom-right .maplibregl-ctrl{margin:0 10px 10px 0;float:right}.maplibregl-ctrl-group{border-radius:4px;background:#fff}.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px rgba(0,0,0,.1)}@media (forced-colors:active){.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px ButtonText}}.maplibregl-ctrl-group button{width:29px;height:29px;display:block;padding:0;outline:none;border:0;box-sizing:border-box;background-color:transparent;cursor:pointer}.maplibregl-ctrl-group button+button{border-top:1px solid #ddd}.maplibregl-ctrl button .maplibregl-ctrl-icon{display:block;width:100%;height:100%;background-repeat:no-repeat;background-position:50%}@media (forced-colors:active){.maplibregl-ctrl-icon{background-color:transparent}.maplibregl-ctrl-group button+button{border-top:1px solid ButtonText}}.maplibregl-ctrl button::-moz-focus-inner{border:0;padding:0}.maplibregl-ctrl-attrib-button:focus,.maplibregl-ctrl-group button:focus{box-shadow:0 0 2px 2px #0096ff}.maplibregl-ctrl button:disabled{cursor:not-allowed}.maplibregl-ctrl button:disabled .maplibregl-ctrl-icon{opacity:.25}@media (hover:hover){.maplibregl-ctrl button:not(:disabled):hover{background-color:rgba(0,0,0,.05)}}.maplibregl-ctrl button:not(:disabled):active{background-color:rgba(0,0,0,.05)}.maplibregl-ctrl-group button:focus:focus-visible{box-shadow:0 0 2px 2px #0096ff}.maplibregl-ctrl-group button:focus:not(:focus-visible){box-shadow:none}.maplibregl-ctrl-group button:focus:first-child{border-radius:4px 4px 0 0}.maplibregl-ctrl-group button:focus:last-child{border-radius:0 0 4px 4px}.maplibregl-ctrl-group button:focus:only-child{border-radius:inherit}.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%23333%22%20viewBox%3D%220%200%2029%2029%22%3E%3Cpath%20d%3D%22M10%2013c-.75%200-1.5.75-1.5%201.5S9.25%2016%2010%2016h9c.75%200%201.5-.75%201.5-1.5S19.75%2013%2019%2013z%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%23333%22%20viewBox%3D%220%200%2029%2029%22%3E%3Cpath%20d%3D%22M14.5%208.5c-.75%200-1.5.75-1.5%201.5v3h-3c-.75%200-1.5.75-1.5%201.5S9.25%2016%2010%2016h3v3c0%20.75.75%201.5%201.5%201.5S16%2019.75%2016%2019v-3h3c.75%200%201.5-.75%201.5-1.5S19.75%2013%2019%2013h-3v-3c0-.75-.75-1.5-1.5-1.5%22%2F%3E%3C%2Fsvg%3E")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%23fff%22%20viewBox%3D%220%200%2029%2029%22%3E%3Cpath%20d%3D%22M10%2013c-.75%200-1.5.75-1.5%201.5S9.25%2016%2010%2016h9c.75%200%201.5-.75%201.5-1.5S19.75%2013%2019%2013z%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%23fff%22%20viewBox%3D%220%200%2029%2029%22%3E%3Cpath%20d%3D%22M14.5%208.5c-.75%200-1.5.75-1.5%201.5v3h-3c-.75%200-1.5.75-1.5%201.5S9.25%2016%2010%2016h3v3c0%20.75.75%201.5%201.5%201.5S16%2019.75%2016%2019v-3h3c.75%200%201.5-.75%201.5-1.5S19.75%2013%2019%2013h-3v-3c0-.75-.75-1.5-1.5-1.5%22%2F%3E%3C%2Fsvg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20viewBox%3D%220%200%2029%2029%22%3E%3Cpath%20d%3D%22M10%2013c-.75%200-1.5.75-1.5%201.5S9.25%2016%2010%2016h9c.75%200%201.5-.75%201.5-1.5S19.75%2013%2019%2013z%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20viewBox%3D%220%200%2029%2029%22%3E%3Cpath%20d%3D%22M14.5%208.5c-.75%200-1.5.75-1.5%201.5v3h-3c-.75%200-1.5.75-1.5%201.5S9.25%2016%2010%2016h3v3c0%20.75.75%201.5%201.5%201.5S16%2019.75%2016%2019v-3h3c.75%200%201.5-.75%201.5-1.5S19.75%2013%2019%2013h-3v-3c0-.75-.75-1.5-1.5-1.5%22%2F%3E%3C%2Fsvg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%23333%22%20viewBox%3D%220%200%2029%2029%22%3E%3Cpath%20d%3D%22M24%2016v5.5c0%201.75-.75%202.5-2.5%202.5H16v-1l3-1.5-4-5.5%201-1%205.5%204%201.5-3zM6%2016l1.5%203%205.5-4%201%201-4%205.5%203%201.5v1H7.5C5.75%2024%205%2023.25%205%2021.5V16zm7-11v1l-3%201.5%204%205.5-1%201-5.5-4L6%2013H5V7.5C5%205.75%205.75%205%207.5%205zm11%202.5c0-1.75-.75-2.5-2.5-2.5H16v1l3%201.5-4%205.5%201%201%205.5-4%201.5%203h1z%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20viewBox%3D%220%200%2029%2029%22%3E%3Cpath%20d%3D%22M18.5%2016c-1.75%200-2.5.75-2.5%202.5V24h1l1.5-3%205.5%204%201-1-4-5.5%203-1.5v-1zM13%2018.5c0-1.75-.75-2.5-2.5-2.5H5v1l3%201.5L4%2024l1%201%205.5-4%201.5%203h1zm3-8c0%201.75.75%202.5%202.5%202.5H24v-1l-3-1.5L25%205l-1-1-5.5%204L17%205h-1zM10.5%2013c1.75%200%202.5-.75%202.5-2.5V5h-1l-1.5%203L5%204%204%205l4%205.5L5%2012v1z%22%2F%3E%3C%2Fsvg%3E")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%23fff%22%20viewBox%3D%220%200%2029%2029%22%3E%3Cpath%20d%3D%22M24%2016v5.5c0%201.75-.75%202.5-2.5%202.5H16v-1l3-1.5-4-5.5%201-1%205.5%204%201.5-3zM6%2016l1.5%203%205.5-4%201%201-4%205.5%203%201.5v1H7.5C5.75%2024%205%2023.25%205%2021.5V16zm7-11v1l-3%201.5%204%205.5-1%201-5.5-4L6%2013H5V7.5C5%205.75%205.75%205%207.5%205zm11%202.5c0-1.75-.75-2.5-2.5-2.5H16v1l3%201.5-4%205.5%201%201%205.5-4%201.5%203h1z%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%23fff%22%20viewBox%3D%220%200%2029%2029%22%3E%3Cpath%20d%3D%22M18.5%2016c-1.75%200-2.5.75-2.5%202.5V24h1l1.5-3%205.5%204%201-1-4-5.5%203-1.5v-1zM13%2018.5c0-1.75-.75-2.5-2.5-2.5H5v1l3%201.5L4%2024l1%201%205.5-4%201.5%203h1zm3-8c0%201.75.75%202.5%202.5%202.5H24v-1l-3-1.5L25%205l-1-1-5.5%204L17%205h-1zM10.5%2013c1.75%200%202.5-.75%202.5-2.5V5h-1l-1.5%203L5%204%204%205l4%205.5L5%2012v1z%22%2F%3E%3C%2Fsvg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20viewBox%3D%220%200%2029%2029%22%3E%3Cpath%20d%3D%22M24%2016v5.5c0%201.75-.75%202.5-2.5%202.5H16v-1l3-1.5-4-5.5%201-1%205.5%204%201.5-3zM6%2016l1.5%203%205.5-4%201%201-4%205.5%203%201.5v1H7.5C5.75%2024%205%2023.25%205%2021.5V16zm7-11v1l-3%201.5%204%205.5-1%201-5.5-4L6%2013H5V7.5C5%205.75%205.75%205%207.5%205zm11%202.5c0-1.75-.75-2.5-2.5-2.5H16v1l3%201.5-4%205.5%201%201%205.5-4%201.5%203h1z%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20viewBox%3D%220%200%2029%2029%22%3E%3Cpath%20d%3D%22M18.5%2016c-1.75%200-2.5.75-2.5%202.5V24h1l1.5-3%205.5%204%201-1-4-5.5%203-1.5v-1zM13%2018.5c0-1.75-.75-2.5-2.5-2.5H5v1l3%201.5L4%2024l1%201%205.5-4%201.5%203h1zm3-8c0%201.75.75%202.5%202.5%202.5H24v-1l-3-1.5L25%205l-1-1-5.5%204L17%205h-1zM10.5%2013c1.75%200%202.5-.75%202.5-2.5V5h-1l-1.5%203L5%204%204%205l4%205.5L5%2012v1z%22%2F%3E%3C%2Fsvg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%23333%22%20viewBox%3D%220%200%2029%2029%22%3E%3Cpath%20d%3D%22m10.5%2014%204-8%204%208z%22%2F%3E%3Cpath%20fill%3D%22%23ccc%22%20d%3D%22m10.5%2016%204%208%204-8z%22%2F%3E%3C%2Fsvg%3E")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%23fff%22%20viewBox%3D%220%200%2029%2029%22%3E%3Cpath%20d%3D%22m10.5%2014%204-8%204%208z%22%2F%3E%3Cpath%20fill%3D%22%23ccc%22%20d%3D%22m10.5%2016%204%208%204-8z%22%2F%3E%3C%2Fsvg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20viewBox%3D%220%200%2029%2029%22%3E%3Cpath%20d%3D%22m10.5%2014%204-8%204%208z%22%2F%3E%3Cpath%20fill%3D%22%23ccc%22%20d%3D%22m10.5%2016%204%208%204-8z%22%2F%3E%3C%2Fsvg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-globe .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2222%22%20height%3D%2222%22%20fill%3D%22none%22%20stroke%3D%22%23333%22%20viewBox%3D%220%200%2022%2022%22%3E%3Ccircle%20cx%3D%2211%22%20cy%3D%2211%22%20r%3D%228.5%22%2F%3E%3Cpath%20d%3D%22M17.5%2011c0%204.819-3.02%208.5-6.5%208.5S4.5%2015.819%204.5%2011%207.52%202.5%2011%202.5s6.5%203.681%206.5%208.5Z%22%2F%3E%3Cpath%20d%3D%22M13.5%2011c0%202.447-.331%204.64-.853%206.206-.262.785-.562%201.384-.872%201.777-.314.399-.58.517-.775.517s-.461-.118-.775-.517c-.31-.393-.61-.992-.872-1.777C8.831%2015.64%208.5%2013.446%208.5%2011s.331-4.64.853-6.206c.262-.785.562-1.384.872-1.777.314-.399.58-.517.775-.517s.461.118.775.517c.31.393.61.992.872%201.777.522%201.565.853%203.76.853%206.206Z%22%2F%3E%3Cpath%20d%3D%22M11%207.5c-1.909%200-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.3%201.3%200%200%201-.224-.138q.07-.058.224-.138c.299-.151.763-.302%201.379-.434C7.378%205.666%209.091%205.5%2011%205.5s3.622.166%204.845.428c.616.132%201.08.283%201.379.434.105.053.177.1.224.138q-.07.058-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428Zm0%209c-1.909%200-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.3%201.3%200%200%201-.224-.138%201.3%201.3%200%200%201%20.224-.138c.299-.151.763-.302%201.379-.434C7.378%2014.666%209.091%2014.5%2011%2014.5s3.622.166%204.845.428c.616.132%201.08.283%201.379.434.105.053.177.1.224.138a1.3%201.3%200%200%201-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428Zm0-4c-2.46%200-4.672-.222-6.255-.574-.796-.177-1.406-.38-1.805-.59a1.5%201.5%200%200%201-.39-.272.3.3%200%200%201-.047-.064.3.3%200%200%201%20.048-.064c.066-.073.189-.167.389-.272.399-.21%201.009-.413%201.805-.59C6.328%209.722%208.54%209.5%2011%209.5s4.672.222%206.256.574c.795.177%201.405.38%201.804.59.2.105.323.2.39.272a.3.3%200%200%201%20.047.064.3.3%200%200%201-.048.064%201.4%201.4%200%200%201-.389.272c-.399.21-1.009.413-1.804.59-1.584.352-3.796.574-6.256.574Zm-8.501-1.51v.002zm0%20.018v.002zm17.002.002v-.002zm0-.018v-.002z%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-globe-enabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2222%22%20height%3D%2222%22%20fill%3D%22none%22%20stroke%3D%22%2333b5e5%22%20viewBox%3D%220%200%2022%2022%22%3E%3Ccircle%20cx%3D%2211%22%20cy%3D%2211%22%20r%3D%228.5%22%2F%3E%3Cpath%20d%3D%22M17.5%2011c0%204.819-3.02%208.5-6.5%208.5S4.5%2015.819%204.5%2011%207.52%202.5%2011%202.5s6.5%203.681%206.5%208.5Z%22%2F%3E%3Cpath%20d%3D%22M13.5%2011c0%202.447-.331%204.64-.853%206.206-.262.785-.562%201.384-.872%201.777-.314.399-.58.517-.775.517s-.461-.118-.775-.517c-.31-.393-.61-.992-.872-1.777C8.831%2015.64%208.5%2013.446%208.5%2011s.331-4.64.853-6.206c.262-.785.562-1.384.872-1.777.314-.399.58-.517.775-.517s.461.118.775.517c.31.393.61.992.872%201.777.522%201.565.853%203.76.853%206.206Z%22%2F%3E%3Cpath%20d%3D%22M11%207.5c-1.909%200-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.3%201.3%200%200%201-.224-.138q.07-.058.224-.138c.299-.151.763-.302%201.379-.434C7.378%205.666%209.091%205.5%2011%205.5s3.622.166%204.845.428c.616.132%201.08.283%201.379.434.105.053.177.1.224.138q-.07.058-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428Zm0%209c-1.909%200-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.3%201.3%200%200%201-.224-.138%201.3%201.3%200%200%201%20.224-.138c.299-.151.763-.302%201.379-.434C7.378%2014.666%209.091%2014.5%2011%2014.5s3.622.166%204.845.428c.616.132%201.08.283%201.379.434.105.053.177.1.224.138a1.3%201.3%200%200%201-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428Zm0-4c-2.46%200-4.672-.222-6.255-.574-.796-.177-1.406-.38-1.805-.59a1.5%201.5%200%200%201-.39-.272.3.3%200%200%201-.047-.064.3.3%200%200%201%20.048-.064c.066-.073.189-.167.389-.272.399-.21%201.009-.413%201.805-.59C6.328%209.722%208.54%209.5%2011%209.5s4.672.222%206.256.574c.795.177%201.405.38%201.804.59.2.105.323.2.39.272a.3.3%200%200%201%20.047.064.3.3%200%200%201-.048.064%201.4%201.4%200%200%201-.389.272c-.399.21-1.009.413-1.804.59-1.584.352-3.796.574-6.256.574Zm-8.501-1.51v.002zm0%20.018v.002zm17.002.002v-.002zm0-.018v-.002z%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-terrain .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2222%22%20height%3D%2222%22%20fill%3D%22%23333%22%20viewBox%3D%220%200%2022%2022%22%3E%3Cpath%20d%3D%22m1.754%2013.406%204.453-4.851%203.09%203.09%203.281%203.277.969-.969-3.309-3.312%203.844-4.121%206.148%206.886h1.082v-.855l-7.207-8.07-4.84%205.187L6.169%206.57l-5.48%205.965v.871ZM.688%2016.844h20.625v1.375H.688Zm0%200%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-terrain-enabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2222%22%20height%3D%2222%22%20fill%3D%22%2333b5e5%22%20viewBox%3D%220%200%2022%2022%22%3E%3Cpath%20d%3D%22m1.754%2013.406%204.453-4.851%203.09%203.09%203.281%203.277.969-.969-3.309-3.312%203.844-4.121%206.148%206.886h1.082v-.855l-7.207-8.07-4.84%205.187L6.169%206.57l-5.48%205.965v.871ZM.688%2016.844h20.625v1.375H.688Zm0%200%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%23333%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M10%204C9%204%209%205%209%205v.1A5%205%200%200%200%205.1%209H5s-1%200-1%201%201%201%201%201h.1A5%205%200%200%200%209%2014.9v.1s0%201%201%201%201-1%201-1v-.1a5%205%200%200%200%203.9-3.9h.1s1%200%201-1-1-1-1-1h-.1A5%205%200%200%200%2011%205.1V5s0-1-1-1m0%202.5a3.5%203.5%200%201%201%200%207%203.5%203.5%200%201%201%200-7%22%2F%3E%3Ccircle%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%222%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%23aaa%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M10%204C9%204%209%205%209%205v.1A5%205%200%200%200%205.1%209H5s-1%200-1%201%201%201%201%201h.1A5%205%200%200%200%209%2014.9v.1s0%201%201%201%201-1%201-1v-.1a5%205%200%200%200%203.9-3.9h.1s1%200%201-1-1-1-1-1h-.1A5%205%200%200%200%2011%205.1V5s0-1-1-1m0%202.5a3.5%203.5%200%201%201%200%207%203.5%203.5%200%201%201%200-7%22%2F%3E%3Ccircle%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%222%22%2F%3E%3Cpath%20fill%3D%22red%22%20d%3D%22m14%205%201%201-9%209-1-1z%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%2333b5e5%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M10%204C9%204%209%205%209%205v.1A5%205%200%200%200%205.1%209H5s-1%200-1%201%201%201%201%201h.1A5%205%200%200%200%209%2014.9v.1s0%201%201%201%201-1%201-1v-.1a5%205%200%200%200%203.9-3.9h.1s1%200%201-1-1-1-1-1h-.1A5%205%200%200%200%2011%205.1V5s0-1-1-1m0%202.5a3.5%203.5%200%201%201%200%207%203.5%203.5%200%201%201%200-7%22%2F%3E%3Ccircle%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%222%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%23e58978%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M10%204C9%204%209%205%209%205v.1A5%205%200%200%200%205.1%209H5s-1%200-1%201%201%201%201%201h.1A5%205%200%200%200%209%2014.9v.1s0%201%201%201%201-1%201-1v-.1a5%205%200%200%200%203.9-3.9h.1s1%200%201-1-1-1-1-1h-.1A5%205%200%200%200%2011%205.1V5s0-1-1-1m0%202.5a3.5%203.5%200%201%201%200%207%203.5%203.5%200%201%201%200-7%22%2F%3E%3Ccircle%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%222%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%2333b5e5%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M10%204C9%204%209%205%209%205v.1A5%205%200%200%200%205.1%209H5s-1%200-1%201%201%201%201%201h.1A5%205%200%200%200%209%2014.9v.1s0%201%201%201%201-1%201-1v-.1a5%205%200%200%200%203.9-3.9h.1s1%200%201-1-1-1-1-1h-.1A5%205%200%200%200%2011%205.1V5s0-1-1-1m0%202.5a3.5%203.5%200%201%201%200%207%203.5%203.5%200%201%201%200-7%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%23e54e33%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M10%204C9%204%209%205%209%205v.1A5%205%200%200%200%205.1%209H5s-1%200-1%201%201%201%201%201h.1A5%205%200%200%200%209%2014.9v.1s0%201%201%201%201-1%201-1v-.1a5%205%200%200%200%203.9-3.9h.1s1%200%201-1-1-1-1-1h-.1A5%205%200%200%200%2011%205.1V5s0-1-1-1m0%202.5a3.5%203.5%200%201%201%200%207%203.5%203.5%200%201%201%200-7%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-waiting .maplibregl-ctrl-icon{animation:maplibregl-spin 2s linear infinite}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%23fff%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M10%204C9%204%209%205%209%205v.1A5%205%200%200%200%205.1%209H5s-1%200-1%201%201%201%201%201h.1A5%205%200%200%200%209%2014.9v.1s0%201%201%201%201-1%201-1v-.1a5%205%200%200%200%203.9-3.9h.1s1%200%201-1-1-1-1-1h-.1A5%205%200%200%200%2011%205.1V5s0-1-1-1m0%202.5a3.5%203.5%200%201%201%200%207%203.5%203.5%200%201%201%200-7%22%2F%3E%3Ccircle%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%222%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%23999%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M10%204C9%204%209%205%209%205v.1A5%205%200%200%200%205.1%209H5s-1%200-1%201%201%201%201%201h.1A5%205%200%200%200%209%2014.9v.1s0%201%201%201%201-1%201-1v-.1a5%205%200%200%200%203.9-3.9h.1s1%200%201-1-1-1-1-1h-.1A5%205%200%200%200%2011%205.1V5s0-1-1-1m0%202.5a3.5%203.5%200%201%201%200%207%203.5%203.5%200%201%201%200-7%22%2F%3E%3Ccircle%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%222%22%2F%3E%3Cpath%20fill%3D%22red%22%20d%3D%22m14%205%201%201-9%209-1-1z%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%2333b5e5%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M10%204C9%204%209%205%209%205v.1A5%205%200%200%200%205.1%209H5s-1%200-1%201%201%201%201%201h.1A5%205%200%200%200%209%2014.9v.1s0%201%201%201%201-1%201-1v-.1a5%205%200%200%200%203.9-3.9h.1s1%200%201-1-1-1-1-1h-.1A5%205%200%200%200%2011%205.1V5s0-1-1-1m0%202.5a3.5%203.5%200%201%201%200%207%203.5%203.5%200%201%201%200-7%22%2F%3E%3Ccircle%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%222%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%23e58978%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M10%204C9%204%209%205%209%205v.1A5%205%200%200%200%205.1%209H5s-1%200-1%201%201%201%201%201h.1A5%205%200%200%200%209%2014.9v.1s0%201%201%201%201-1%201-1v-.1a5%205%200%200%200%203.9-3.9h.1s1%200%201-1-1-1-1-1h-.1A5%205%200%200%200%2011%205.1V5s0-1-1-1m0%202.5a3.5%203.5%200%201%201%200%207%203.5%203.5%200%201%201%200-7%22%2F%3E%3Ccircle%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%222%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%2333b5e5%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M10%204C9%204%209%205%209%205v.1A5%205%200%200%200%205.1%209H5s-1%200-1%201%201%201%201%201h.1A5%205%200%200%200%209%2014.9v.1s0%201%201%201%201-1%201-1v-.1a5%205%200%200%200%203.9-3.9h.1s1%200%201-1-1-1-1-1h-.1A5%205%200%200%200%2011%205.1V5s0-1-1-1m0%202.5a3.5%203.5%200%201%201%200%207%203.5%203.5%200%201%201%200-7%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%23e54e33%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M10%204C9%204%209%205%209%205v.1A5%205%200%200%200%205.1%209H5s-1%200-1%201%201%201%201%201h.1A5%205%200%200%200%209%2014.9v.1s0%201%201%201%201-1%201-1v-.1a5%205%200%200%200%203.9-3.9h.1s1%200%201-1-1-1-1-1h-.1A5%205%200%200%200%2011%205.1V5s0-1-1-1m0%202.5a3.5%203.5%200%201%201%200%207%203.5%203.5%200%201%201%200-7%22%2F%3E%3C%2Fsvg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M10%204C9%204%209%205%209%205v.1A5%205%200%200%200%205.1%209H5s-1%200-1%201%201%201%201%201h.1A5%205%200%200%200%209%2014.9v.1s0%201%201%201%201-1%201-1v-.1a5%205%200%200%200%203.9-3.9h.1s1%200%201-1-1-1-1-1h-.1A5%205%200%200%200%2011%205.1V5s0-1-1-1m0%202.5a3.5%203.5%200%201%201%200%207%203.5%203.5%200%201%201%200-7%22%2F%3E%3Ccircle%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%222%22%2F%3E%3C%2Fsvg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2229%22%20height%3D%2229%22%20fill%3D%22%23666%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M10%204C9%204%209%205%209%205v.1A5%205%200%200%200%205.1%209H5s-1%200-1%201%201%201%201%201h.1A5%205%200%200%200%209%2014.9v.1s0%201%201%201%201-1%201-1v-.1a5%205%200%200%200%203.9-3.9h.1s1%200%201-1-1-1-1-1h-.1A5%205%200%200%200%2011%205.1V5s0-1-1-1m0%202.5a3.5%203.5%200%201%201%200%207%203.5%203.5%200%201%201%200-7%22%2F%3E%3Ccircle%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%222%22%2F%3E%3Cpath%20fill%3D%22red%22%20d%3D%22m14%205%201%201-9%209-1-1z%22%2F%3E%3C%2Fsvg%3E")}}@keyframes maplibregl-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}a.maplibregl-ctrl-logo{width:88px;height:23px;margin:0 0 -4px -4px;display:block;background-repeat:no-repeat;cursor:pointer;overflow:hidden;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2288%22%20height%3D%2223%22%20fill%3D%22none%22%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.4%22%20fill-rule%3D%22evenodd%22%20d%3D%22M17.408%2016.796h-1.827l2.501-12.095h.198l3.324%206.533.988%202.19.988-2.19%203.258-6.533h.181l2.6%2012.095h-1.81l-1.218-5.644-.362-1.71-.658%201.71-2.929%205.644h-.098l-2.914-5.644-.757-1.71-.345%201.71zm1.958-3.42-.726%203.663a1.255%201.255%200%200%201-1.232%201.011h-1.827a1.255%201.255%200%200%201-1.229-1.509l2.501-12.095a1.255%201.255%200%200%201%201.23-1.001h.197a1.25%201.25%200%200%201%201.12.685l3.19%206.273%203.125-6.263a1.25%201.25%200%200%201%201.123-.695h.181a1.255%201.255%200%200%201%201.227.991l1.443%206.71a5%205%200%200%201%20.314-.787l.009-.016a4.6%204.6%200%200%201%201.777-1.887c.782-.46%201.668-.667%202.611-.667a4.6%204.6%200%200%201%201.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255%201.255%200%200%201%201.212.925%201.255%201.255%200%200%201%201.212-.925h1.711c.284%200%20.545.094.755.252.613-.3%201.312-.45%202.075-.45%201.356%200%202.557.445%203.482%201.4q.47.48.763%201.064V4.701a1.255%201.255%200%200%201%201.255-1.255h1.86A1.255%201.255%200%200%201%2054.44%204.7v9.194h2.217c.19%200%20.37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42%202.42%200%200%201-.682-1.71c0-.665.267-1.253.735-1.7a2.45%202.45%200%200%201%201.722-.674%202.43%202.43%200%200%201%201.705.675q.318.302.504.683V4.7a1.255%201.255%200%200%201%201.255-1.255h1.744A1.255%201.255%200%200%201%2065.812%204.7v3.335a4.8%204.8%200%200%201%201.526-.246c.938%200%201.817.214%202.59.69a4.47%204.47%200%200%201%201.67%201.743v-.98a1.255%201.255%200%200%201%201.256-1.256h1.777c.233%200%20.451.064.639.174a3.4%203.4%200%200%201%201.567-.372c.346%200%20.861.02%201.285.232a1.25%201.25%200%200%201%20.689%201.004%204.7%204.7%200%200%201%20.853-.588c.795-.44%201.675-.647%202.61-.647%201.385%200%202.65.39%203.525%201.396.836.938%201.168%202.173%201.168%203.528q-.001.515-.056%201.051a1.255%201.255%200%200%201-.947%201.09l.408.952a1.255%201.255%200%200%201-.477%201.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06%200-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8%205.8%200%200%201-.548-2.512q0-.429.053-.843a1.3%201.3%200%200%201-.333-.086l-.166-.004c-.223%200-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255%201.255%200%200%201-1.256%201.256h-1.777a1.255%201.255%200%200%201-1.256-1.256V15.69l-.032.057a4.8%204.8%200%200%201-1.86%201.833%205.04%205.04%200%200%201-2.484.634%204.5%204.5%200%200%201-1.935-.424%201.25%201.25%200%200%201-.764.258h-1.71a1.255%201.255%200%200%201-1.256-1.255V7.687a2.4%202.4%200%200%201-.428.625c.253.23.412.561.412.93v7.553a1.255%201.255%200%200%201-1.256%201.255h-1.843a1.25%201.25%200%200%201-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255%201.255%200%200%201-1.256-1.255v-1.251l-.061.117a4.7%204.7%200%200%201-1.782%201.884%204.77%204.77%200%200%201-2.485.67%205.6%205.6%200%200%201-1.485-.188l.009%202.764a1.255%201.255%200%200%201-1.255%201.259h-1.729a1.255%201.255%200%200%201-1.255-1.255v-3.537a1.255%201.255%200%200%201-1.167.793h-1.679a1.25%201.25%200%200%201-.77-.263%204.5%204.5%200%200%201-1.945.429c-.885%200-1.724-.21-2.495-.632l-.017-.01a5%205%200%200%201-1.081-.836%201.255%201.255%200%200%201-1.254%201.312h-1.81a1.255%201.255%200%200%201-1.228-.99l-.782-3.625-2.044%203.939a1.25%201.25%200%200%201-1.115.676h-.098a1.25%201.25%200%200%201-1.116-.68l-2.061-3.994zM35.92%2016.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033%201.332h1.678V9.242h-1.694l-.033%201.267q-.133-.329-.526-.658l-.032-.028a3.2%203.2%200%200%200-.668-.428l-.27-.12a3.3%203.3%200%200%200-1.235-.23q-1.136-.001-1.974.493a3.36%203.36%200%200%200-1.3%201.382q-.445.89-.444%202.074%200%201.2.51%202.107a3.8%203.8%200%200%200%201.382%201.381%203.9%203.9%200%200%200%201.893.477q.795%200%201.455-.33zm-2.789-5.38q-.576.675-.575%201.762%200%201.102.559%201.794.576.675%201.645.675a2.25%202.25%200%200%200%20.934-.19%202.2%202.2%200%200%200%20.468-.29l.178-.161a2.2%202.2%200%200%200%20.397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2%202.2%200%200%200-.633-.709l-.13-.086-.047-.028a2.1%202.1%200%200%200-1.073-.285q-1.052%200-1.629.692zm2.316%202.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96%200%200%200-.353-.389.85.85%200%200%200-.464-.127c-.4%200-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945%200%20.506.122.801.27.99.097.11.266.224.68.224.303%200%20.504-.09.687-.269zm7.545%201.705a2.6%202.6%200%200%200%20.331.423q.319.33.755.548l.173.074q.65.255%201.49.255%201.02%200%201.844-.493a3.45%203.45%200%200%200%201.316-1.4q.493-.904.493-2.089%200-1.909-.988-2.913-.988-1.02-2.584-1.02-.898%200-1.575.347a3%203%200%200%200-.415.262l-.199.166a3.4%203.4%200%200%200-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296%201.119.297%201.07%200%201.645-.675.577-.69.576-1.762%200-1.119-.576-1.777-.558-.675-1.645-.675-.435%200-.835.16a2%202%200%200%200-.284.136%202%202%200%200%200-.363.254%202.2%202.2%200%200%200-.46.569l-.082.162a2.6%202.6%200%200%200-.213%201.072v.115q0%20.707.296%201.267l.135.211zm.964-.818a1.1%201.1%200%200%200%20.367.385.94.94%200%200%200%20.476.118c.423%200%20.59-.117.687-.23.159-.194.28-.478.28-.95%200-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1%201%200%200%200-.503.135l-.012.007a.86.86%200%200%200-.335.343c-.073.133-.132.324-.132.614v.115a1.4%201.4%200%200%200%20.14.66zm15.7-6.222q.347-.346.346-.856a1.05%201.05%200%200%200-.345-.79%201.18%201.18%200%200%200-.84-.329q-.51%200-.855.33a1.05%201.05%200%200%200-.346.79q0%20.51.346.855.345.346.856.346.51%200%20.839-.346zm4.337%209.314.033-1.332q.191.403.59.747l.098.081a4%204%200%200%200%20.316.224l.223.122a3.2%203.2%200%200%200%201.44.322%203.8%203.8%200%200%200%201.875-.477%203.5%203.5%200%200%200%201.382-1.366q.527-.89.526-2.09%200-1.184-.444-2.073a3.24%203.24%200%200%200-1.283-1.399q-.823-.51-1.942-.51a3.5%203.5%200%200%200-1.527.344l-.086.043-.165.09a3%203%200%200%200-.33.214q-.432.315-.656.707a2%202%200%200%200-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5%202.5%200%200%200%20.566.7q.117.098.245.18l.144.08a2.1%202.1%200%200%200%20.975.232q1.07%200%201.645-.675.576-.69.576-1.778%200-1.102-.576-1.777-.56-.691-1.645-.692a2.2%202.2%200%200%200-1.015.235q-.22.113-.415.282l-.15.142a2.1%202.1%200%200%200-.42.594q-.223.479-.223%201.1v.115q0%20.705.293%201.26zm2.616-.293c.157-.191.28-.479.28-.967%200-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87%200%200%200-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0%20.285.057.499.144.669a1.1%201.1%200%200%200%20.367.405c.137.082.28.123.455.123.423%200%20.59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493%200%20.642.099l.247-1.794q-.196-.099-.717-.099a2.3%202.3%200%200%200-.545.063%202%202%200%200%200-.411.148%202.2%202.2%200%200%200-.4.249%202.5%202.5%200%200%200-.485.499%202.7%202.7%200%200%200-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5%201.5%200%200%201%20.466-.636%202.5%202.5%200%200%201%20.399-.253%202%202%200%200%201%20.224-.099zm9.784%202.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46%203.46%200%200%200-1.4%201.382q-.493.906-.493%202.106%200%201.07.428%201.975.428.89%201.332%201.432.906.526%202.255.526.973%200%201.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954%200-1.497-.444a1.6%201.6%200%200%201-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1%201%200%200%200-.156-.176q-.46-.428-1.316-.428-.986%200-1.494.604-.379.45-.494%201.234zm-27.053%202.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22m19.63%2011.151-.757-1.71-.345%201.71-1.12%205.644h-1.827L18.083%204.7h.197l3.325%206.533.988%202.19.988-2.19L26.839%204.7h.181l2.6%2012.095h-1.81l-1.218-5.644-.362-1.71-.658%201.71-2.93%205.644h-.098l-2.913-5.644zm14.836%205.81q-1.02%200-1.893-.478a3.8%203.8%200%200%201-1.381-1.382q-.51-.906-.51-2.106%200-1.185.444-2.074a3.36%203.36%200%200%201%201.3-1.382q.839-.494%201.974-.494a3.3%203.3%200%200%201%201.234.231%203.3%203.3%200%200%201%20.97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02%201.053a3.17%203.17%200%200%201-1.662.444zm.296-1.482q.938%200%201.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2%202.2%200%200%200-.807-.872%202.1%202.1%200%200%200-1.119-.313q-1.053%200-1.629.692-.575.675-.575%201.76%200%201.103.559%201.795.577.675%201.645.675zm6.521-6.237h1.711v1.4q.906-1.597%202.83-1.597%201.596%200%202.584%201.02.988%201.005.988%202.914%200%201.185-.493%202.09a3.46%203.46%200%200%201-1.316%201.399%203.5%203.5%200%200%201-1.844.493q-.954%200-1.662-.329a2.67%202.67%200%200%201-1.086-.97l.017%205.134h-1.728zm4.048%206.22q1.07%200%201.645-.674.577-.69.576-1.762%200-1.119-.576-1.777-.558-.675-1.645-.675-.592%200-1.12.296-.51.28-.822.823-.296.527-.296%201.234v.115q0%20.708.296%201.267.313.543.823.855.51.296%201.119.297z%22%2F%3E%3Cpath%20fill%3D%22%23e1e3e9%22%20d%3D%22M51.325%204.7h1.86v10.45h3.473v1.646h-5.333zm7.12%204.542h1.843v7.553h-1.843zm.905-1.415a1.16%201.16%200%200%201-.856-.346%201.17%201.17%200%200%201-.346-.856%201.05%201.05%200%200%201%20.346-.79q.346-.329.856-.329.494%200%20.839.33a1.05%201.05%200%200%201%20.345.79%201.16%201.16%200%200%201-.345.855q-.33.346-.84.346zm7.875%209.133a3.17%203.17%200%200%201-1.662-.444q-.723-.46-1.004-1.053l-.033%201.332h-1.71V4.701h1.743v4.657l-.082%201.283q.279-.658%201.086-1.119a3.5%203.5%200%200%201%201.778-.477q1.119%200%201.942.51a3.24%203.24%200%200%201%201.283%201.4q.445.888.444%202.072%200%201.201-.526%202.09a3.5%203.5%200%200%201-1.382%201.366%203.8%203.8%200%200%201-1.876.477zm-.296-1.481q1.069%200%201.645-.675.577-.69.577-1.778%200-1.102-.577-1.776-.56-.691-1.645-.692a2.12%202.12%200%200%200-1.58.659q-.642.641-.642%201.694v.115q0%20.71.296%201.267a2.4%202.4%200%200%200%20.807.872%202.1%202.1%200%200%200%201.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14%202.14%200%200%201%201.349-.46q.527%200%20.724.098l-.247%201.794q-.149-.099-.642-.099-.774%200-1.416.494-.626.493-.626%201.58v3.883h-1.777V9.242zm9.534%207.718q-1.35%200-2.255-.526-.904-.543-1.332-1.432a4.6%204.6%200%200%201-.428-1.975q0-1.2.493-2.106a3.46%203.46%200%200%201%201.4-1.382q.889-.495%202.007-.494%201.744%200%202.584.97.855.956.856%202.7%200%20.444-.05.92h-5.43q.18%201.005.708%201.45.542.443%201.497.443.79%200%201.3-.131a4%204%200%200%200%20.938-.362l.542%201.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728%200-1.991%201.86z%22%2F%3E%3Cpath%20d%3D%22M5.074%2015.948a.484.657%200%200%200-.486.659v1.84a.484.657%200%200%200%20.486.659h4.101a.484.657%200%200%200%20.486-.659v-1.84a.484.657%200%200%200-.486-.659zm3.56%201.16H5.617v.838h3.017z%22%20style%3D%22fill%3A%23fff%3Bfill-rule%3Aevenodd%3Bstroke-width%3A1.03600001%22%2F%3E%3Cg%20style%3D%22stroke-width%3A1.12603545%22%3E%3Cpath%20d%3D%22M-9.408-1.416c-3.833-.025-7.056%202.912-7.08%206.615-.02%203.08%201.653%204.832%203.107%206.268.903.892%201.721%201.74%202.32%202.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87%201.87%200%200%200-.362%201.121l-.011%201.877c-.003.402.104.787.347%201.125.244.338.688.653%201.23.656l4.142.028c.542.003.99-.306%201.238-.641a1.87%201.87%200%200%200%20.363-1.121l.012-1.875a1.87%201.87%200%200%200-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145%201.425-1.983%202.348-2.87%201.473-1.414%203.18-3.149%203.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006%201.1v.002c3.274.02%205.92%202.532%205.9%205.6-.017%202.706-1.39%204.026-2.863%205.44-1.034.994-2.118%202.033-2.814%203.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34%200%200%201-.226.084.34.34%200%200%201-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067%202.7-5.545%205.975-5.523m-.02%202.826c-1.62-.01-2.944%201.315-2.955%202.96-.01%201.646%201.295%202.988%202.916%202.999h.002c1.621.01%202.943-1.316%202.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005%201.1c1.017.006%201.829.83%201.822%201.89s-.83%201.874-1.848%201.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874%201.848-1.868m-2.155%2011.857%204.14.025c.271.002.49.305.487.676l-.013%201.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668%22%20style%3D%22color%3A%23000%3Bfont-style%3Anormal%3Bfont-variant%3Anormal%3Bfont-weight%3A400%3Bfont-stretch%3Anormal%3Bfont-size%3Amedium%3Bline-height%3Anormal%3Bfont-family%3Asans-serif%3Bfont-variant-ligatures%3Anormal%3Bfont-variant-position%3Anormal%3Bfont-variant-caps%3Anormal%3Bfont-variant-numeric%3Anormal%3Bfont-variant-alternates%3Anormal%3Bfont-feature-settings%3Anormal%3Btext-indent%3A0%3Btext-align%3Astart%3Btext-decoration%3Anone%3Btext-decoration-line%3Anone%3Btext-decoration-style%3Asolid%3Btext-decoration-color%3A%23000%3Bletter-spacing%3Anormal%3Bword-spacing%3Anormal%3Btext-transform%3Anone%3Bwriting-mode%3Alr-tb%3Bdirection%3Altr%3Btext-orientation%3Amixed%3Bdominant-baseline%3Aauto%3Bbaseline-shift%3Abaseline%3Btext-anchor%3Astart%3Bwhite-space%3Anormal%3Bshape-padding%3A0%3Bclip-rule%3Aevenodd%3Bdisplay%3Ainline%3Boverflow%3Avisible%3Bvisibility%3Avisible%3Bopacity%3A1%3Bisolation%3Aauto%3Bmix-blend-mode%3Anormal%3Bcolor-interpolation%3AsRGB%3Bcolor-interpolation-filters%3AlinearRGB%3Bsolid-color%3A%23000%3Bsolid-opacity%3A1%3Bvector-effect%3Anone%3Bfill%3A%23000%3Bfill-opacity%3A.4%3Bfill-rule%3Aevenodd%3Bstroke%3Anone%3Bstroke-width%3A2.47727823%3Bstroke-linecap%3Abutt%3Bstroke-linejoin%3Amiter%3Bstroke-miterlimit%3A4%3Bstroke-dasharray%3Anone%3Bstroke-dashoffset%3A0%3Bstroke-opacity%3A1%3Bcolor-rendering%3Aauto%3Bimage-rendering%3Aauto%3Bshape-rendering%3Aauto%3Btext-rendering%3Aauto%22%20transform%3D%22translate(15.553%202.85)scale(.88807)%22%2F%3E%3Cpath%20d%3D%22M-9.415-.316C-12.69-.338-15.37%202.14-15.39%205.207c-.017%202.716%201.326%204.041%202.78%205.477%201.013%201%202.081%202.055%202.78%203.67l.092.076a.34.34%200%200%200%20.225.086.34.34%200%200%200%20.227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6%201.78-2.64%202.814-3.634%201.473-1.414%202.847-2.733%202.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057%208.784c1.621.011%202.944-1.315%202.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945%201.315-2.955%202.96s1.295%202.989%202.916%203%22%20style%3D%22clip-rule%3Aevenodd%3Bfill%3A%23e1e3e9%3Bfill-opacity%3A1%3Bfill-rule%3Aevenodd%3Bstroke%3Anone%3Bstroke-width%3A2.47727823%3Bstroke-miterlimit%3A4%3Bstroke-dasharray%3Anone%3Bstroke-opacity%3A.4%22%20transform%3D%22translate(15.553%202.85)scale(.88807)%22%2F%3E%3Cpath%20d%3D%22M-11.594%2015.465c-.27-.002-.492.297-.494.668l-.012%201.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z%22%20style%3D%22clip-rule%3Aevenodd%3Bfill%3A%23fff%3Bfill-opacity%3A1%3Bfill-rule%3Aevenodd%3Bstroke%3Anone%3Bstroke-width%3A2.47727823%3Bstroke-miterlimit%3A4%3Bstroke-dasharray%3Anone%3Bstroke-opacity%3A.4%22%20transform%3D%22translate(15.553%202.85)scale(.88807)%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}a.maplibregl-ctrl-logo.maplibregl-compact{width:14px}@media (forced-colors:active){a.maplibregl-ctrl-logo{background-color:transparent;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2288%22%20height%3D%2223%22%20fill%3D%22none%22%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.4%22%20fill-rule%3D%22evenodd%22%20d%3D%22M17.408%2016.796h-1.827l2.501-12.095h.198l3.324%206.533.988%202.19.988-2.19%203.258-6.533h.181l2.6%2012.095h-1.81l-1.218-5.644-.362-1.71-.658%201.71-2.929%205.644h-.098l-2.914-5.644-.757-1.71-.345%201.71zm1.958-3.42-.726%203.663a1.255%201.255%200%200%201-1.232%201.011h-1.827a1.255%201.255%200%200%201-1.229-1.509l2.501-12.095a1.255%201.255%200%200%201%201.23-1.001h.197a1.25%201.25%200%200%201%201.12.685l3.19%206.273%203.125-6.263a1.25%201.25%200%200%201%201.123-.695h.181a1.255%201.255%200%200%201%201.227.991l1.443%206.71a5%205%200%200%201%20.314-.787l.009-.016a4.6%204.6%200%200%201%201.777-1.887c.782-.46%201.668-.667%202.611-.667a4.6%204.6%200%200%201%201.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255%201.255%200%200%201%201.212.925%201.255%201.255%200%200%201%201.212-.925h1.711c.284%200%20.545.094.755.252.613-.3%201.312-.45%202.075-.45%201.356%200%202.557.445%203.482%201.4q.47.48.763%201.064V4.701a1.255%201.255%200%200%201%201.255-1.255h1.86A1.255%201.255%200%200%201%2054.44%204.7v9.194h2.217c.19%200%20.37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42%202.42%200%200%201-.682-1.71c0-.665.267-1.253.735-1.7a2.45%202.45%200%200%201%201.722-.674%202.43%202.43%200%200%201%201.705.675q.318.302.504.683V4.7a1.255%201.255%200%200%201%201.255-1.255h1.744A1.255%201.255%200%200%201%2065.812%204.7v3.335a4.8%204.8%200%200%201%201.526-.246c.938%200%201.817.214%202.59.69a4.47%204.47%200%200%201%201.67%201.743v-.98a1.255%201.255%200%200%201%201.256-1.256h1.777c.233%200%20.451.064.639.174a3.4%203.4%200%200%201%201.567-.372c.346%200%20.861.02%201.285.232a1.25%201.25%200%200%201%20.689%201.004%204.7%204.7%200%200%201%20.853-.588c.795-.44%201.675-.647%202.61-.647%201.385%200%202.65.39%203.525%201.396.836.938%201.168%202.173%201.168%203.528q-.001.515-.056%201.051a1.255%201.255%200%200%201-.947%201.09l.408.952a1.255%201.255%200%200%201-.477%201.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06%200-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8%205.8%200%200%201-.548-2.512q0-.429.053-.843a1.3%201.3%200%200%201-.333-.086l-.166-.004c-.223%200-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255%201.255%200%200%201-1.256%201.256h-1.777a1.255%201.255%200%200%201-1.256-1.256V15.69l-.032.057a4.8%204.8%200%200%201-1.86%201.833%205.04%205.04%200%200%201-2.484.634%204.5%204.5%200%200%201-1.935-.424%201.25%201.25%200%200%201-.764.258h-1.71a1.255%201.255%200%200%201-1.256-1.255V7.687a2.4%202.4%200%200%201-.428.625c.253.23.412.561.412.93v7.553a1.255%201.255%200%200%201-1.256%201.255h-1.843a1.25%201.25%200%200%201-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255%201.255%200%200%201-1.256-1.255v-1.251l-.061.117a4.7%204.7%200%200%201-1.782%201.884%204.77%204.77%200%200%201-2.485.67%205.6%205.6%200%200%201-1.485-.188l.009%202.764a1.255%201.255%200%200%201-1.255%201.259h-1.729a1.255%201.255%200%200%201-1.255-1.255v-3.537a1.255%201.255%200%200%201-1.167.793h-1.679a1.25%201.25%200%200%201-.77-.263%204.5%204.5%200%200%201-1.945.429c-.885%200-1.724-.21-2.495-.632l-.017-.01a5%205%200%200%201-1.081-.836%201.255%201.255%200%200%201-1.254%201.312h-1.81a1.255%201.255%200%200%201-1.228-.99l-.782-3.625-2.044%203.939a1.25%201.25%200%200%201-1.115.676h-.098a1.25%201.25%200%200%201-1.116-.68l-2.061-3.994zM35.92%2016.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033%201.332h1.678V9.242h-1.694l-.033%201.267q-.133-.329-.526-.658l-.032-.028a3.2%203.2%200%200%200-.668-.428l-.27-.12a3.3%203.3%200%200%200-1.235-.23q-1.136-.001-1.974.493a3.36%203.36%200%200%200-1.3%201.382q-.445.89-.444%202.074%200%201.2.51%202.107a3.8%203.8%200%200%200%201.382%201.381%203.9%203.9%200%200%200%201.893.477q.795%200%201.455-.33zm-2.789-5.38q-.576.675-.575%201.762%200%201.102.559%201.794.576.675%201.645.675a2.25%202.25%200%200%200%20.934-.19%202.2%202.2%200%200%200%20.468-.29l.178-.161a2.2%202.2%200%200%200%20.397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2%202.2%200%200%200-.633-.709l-.13-.086-.047-.028a2.1%202.1%200%200%200-1.073-.285q-1.052%200-1.629.692zm2.316%202.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96%200%200%200-.353-.389.85.85%200%200%200-.464-.127c-.4%200-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945%200%20.506.122.801.27.99.097.11.266.224.68.224.303%200%20.504-.09.687-.269zm7.545%201.705a2.6%202.6%200%200%200%20.331.423q.319.33.755.548l.173.074q.65.255%201.49.255%201.02%200%201.844-.493a3.45%203.45%200%200%200%201.316-1.4q.493-.904.493-2.089%200-1.909-.988-2.913-.988-1.02-2.584-1.02-.898%200-1.575.347a3%203%200%200%200-.415.262l-.199.166a3.4%203.4%200%200%200-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296%201.119.297%201.07%200%201.645-.675.577-.69.576-1.762%200-1.119-.576-1.777-.558-.675-1.645-.675-.435%200-.835.16a2%202%200%200%200-.284.136%202%202%200%200%200-.363.254%202.2%202.2%200%200%200-.46.569l-.082.162a2.6%202.6%200%200%200-.213%201.072v.115q0%20.707.296%201.267l.135.211zm.964-.818a1.1%201.1%200%200%200%20.367.385.94.94%200%200%200%20.476.118c.423%200%20.59-.117.687-.23.159-.194.28-.478.28-.95%200-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1%201%200%200%200-.503.135l-.012.007a.86.86%200%200%200-.335.343c-.073.133-.132.324-.132.614v.115a1.4%201.4%200%200%200%20.14.66zm15.7-6.222q.347-.346.346-.856a1.05%201.05%200%200%200-.345-.79%201.18%201.18%200%200%200-.84-.329q-.51%200-.855.33a1.05%201.05%200%200%200-.346.79q0%20.51.346.855.345.346.856.346.51%200%20.839-.346zm4.337%209.314.033-1.332q.191.403.59.747l.098.081a4%204%200%200%200%20.316.224l.223.122a3.2%203.2%200%200%200%201.44.322%203.8%203.8%200%200%200%201.875-.477%203.5%203.5%200%200%200%201.382-1.366q.527-.89.526-2.09%200-1.184-.444-2.073a3.24%203.24%200%200%200-1.283-1.399q-.823-.51-1.942-.51a3.5%203.5%200%200%200-1.527.344l-.086.043-.165.09a3%203%200%200%200-.33.214q-.432.315-.656.707a2%202%200%200%200-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5%202.5%200%200%200%20.566.7q.117.098.245.18l.144.08a2.1%202.1%200%200%200%20.975.232q1.07%200%201.645-.675.576-.69.576-1.778%200-1.102-.576-1.777-.56-.691-1.645-.692a2.2%202.2%200%200%200-1.015.235q-.22.113-.415.282l-.15.142a2.1%202.1%200%200%200-.42.594q-.223.479-.223%201.1v.115q0%20.705.293%201.26zm2.616-.293c.157-.191.28-.479.28-.967%200-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87%200%200%200-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0%20.285.057.499.144.669a1.1%201.1%200%200%200%20.367.405c.137.082.28.123.455.123.423%200%20.59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493%200%20.642.099l.247-1.794q-.196-.099-.717-.099a2.3%202.3%200%200%200-.545.063%202%202%200%200%200-.411.148%202.2%202.2%200%200%200-.4.249%202.5%202.5%200%200%200-.485.499%202.7%202.7%200%200%200-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5%201.5%200%200%201%20.466-.636%202.5%202.5%200%200%201%20.399-.253%202%202%200%200%201%20.224-.099zm9.784%202.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46%203.46%200%200%200-1.4%201.382q-.493.906-.493%202.106%200%201.07.428%201.975.428.89%201.332%201.432.906.526%202.255.526.973%200%201.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954%200-1.497-.444a1.6%201.6%200%200%201-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1%201%200%200%200-.156-.176q-.46-.428-1.316-.428-.986%200-1.494.604-.379.45-.494%201.234zm-27.053%202.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22m19.63%2011.151-.757-1.71-.345%201.71-1.12%205.644h-1.827L18.083%204.7h.197l3.325%206.533.988%202.19.988-2.19L26.839%204.7h.181l2.6%2012.095h-1.81l-1.218-5.644-.362-1.71-.658%201.71-2.93%205.644h-.098l-2.913-5.644zm14.836%205.81q-1.02%200-1.893-.478a3.8%203.8%200%200%201-1.381-1.382q-.51-.906-.51-2.106%200-1.185.444-2.074a3.36%203.36%200%200%201%201.3-1.382q.839-.494%201.974-.494a3.3%203.3%200%200%201%201.234.231%203.3%203.3%200%200%201%20.97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02%201.053a3.17%203.17%200%200%201-1.662.444zm.296-1.482q.938%200%201.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2%202.2%200%200%200-.807-.872%202.1%202.1%200%200%200-1.119-.313q-1.053%200-1.629.692-.575.675-.575%201.76%200%201.103.559%201.795.577.675%201.645.675zm6.521-6.237h1.711v1.4q.906-1.597%202.83-1.597%201.596%200%202.584%201.02.988%201.005.988%202.914%200%201.185-.493%202.09a3.46%203.46%200%200%201-1.316%201.399%203.5%203.5%200%200%201-1.844.493q-.954%200-1.662-.329a2.67%202.67%200%200%201-1.086-.97l.017%205.134h-1.728zm4.048%206.22q1.07%200%201.645-.674.577-.69.576-1.762%200-1.119-.576-1.777-.558-.675-1.645-.675-.592%200-1.12.296-.51.28-.822.823-.296.527-.296%201.234v.115q0%20.708.296%201.267.313.543.823.855.51.296%201.119.297z%22%2F%3E%3Cpath%20fill%3D%22%23e1e3e9%22%20d%3D%22M51.325%204.7h1.86v10.45h3.473v1.646h-5.333zm7.12%204.542h1.843v7.553h-1.843zm.905-1.415a1.16%201.16%200%200%201-.856-.346%201.17%201.17%200%200%201-.346-.856%201.05%201.05%200%200%201%20.346-.79q.346-.329.856-.329.494%200%20.839.33a1.05%201.05%200%200%201%20.345.79%201.16%201.16%200%200%201-.345.855q-.33.346-.84.346zm7.875%209.133a3.17%203.17%200%200%201-1.662-.444q-.723-.46-1.004-1.053l-.033%201.332h-1.71V4.701h1.743v4.657l-.082%201.283q.279-.658%201.086-1.119a3.5%203.5%200%200%201%201.778-.477q1.119%200%201.942.51a3.24%203.24%200%200%201%201.283%201.4q.445.888.444%202.072%200%201.201-.526%202.09a3.5%203.5%200%200%201-1.382%201.366%203.8%203.8%200%200%201-1.876.477zm-.296-1.481q1.069%200%201.645-.675.577-.69.577-1.778%200-1.102-.577-1.776-.56-.691-1.645-.692a2.12%202.12%200%200%200-1.58.659q-.642.641-.642%201.694v.115q0%20.71.296%201.267a2.4%202.4%200%200%200%20.807.872%202.1%202.1%200%200%200%201.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14%202.14%200%200%201%201.349-.46q.527%200%20.724.098l-.247%201.794q-.149-.099-.642-.099-.774%200-1.416.494-.626.493-.626%201.58v3.883h-1.777V9.242zm9.534%207.718q-1.35%200-2.255-.526-.904-.543-1.332-1.432a4.6%204.6%200%200%201-.428-1.975q0-1.2.493-2.106a3.46%203.46%200%200%201%201.4-1.382q.889-.495%202.007-.494%201.744%200%202.584.97.855.956.856%202.7%200%20.444-.05.92h-5.43q.18%201.005.708%201.45.542.443%201.497.443.79%200%201.3-.131a4%204%200%200%200%20.938-.362l.542%201.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728%200-1.991%201.86z%22%2F%3E%3Cpath%20d%3D%22M5.074%2015.948a.484.657%200%200%200-.486.659v1.84a.484.657%200%200%200%20.486.659h4.101a.484.657%200%200%200%20.486-.659v-1.84a.484.657%200%200%200-.486-.659zm3.56%201.16H5.617v.838h3.017z%22%20style%3D%22fill%3A%23fff%3Bfill-rule%3Aevenodd%3Bstroke-width%3A1.03600001%22%2F%3E%3Cg%20style%3D%22stroke-width%3A1.12603545%22%3E%3Cpath%20d%3D%22M-9.408-1.416c-3.833-.025-7.056%202.912-7.08%206.615-.02%203.08%201.653%204.832%203.107%206.268.903.892%201.721%201.74%202.32%202.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87%201.87%200%200%200-.362%201.121l-.011%201.877c-.003.402.104.787.347%201.125.244.338.688.653%201.23.656l4.142.028c.542.003.99-.306%201.238-.641a1.87%201.87%200%200%200%20.363-1.121l.012-1.875a1.87%201.87%200%200%200-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145%201.425-1.983%202.348-2.87%201.473-1.414%203.18-3.149%203.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006%201.1v.002c3.274.02%205.92%202.532%205.9%205.6-.017%202.706-1.39%204.026-2.863%205.44-1.034.994-2.118%202.033-2.814%203.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34%200%200%201-.226.084.34.34%200%200%201-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067%202.7-5.545%205.975-5.523m-.02%202.826c-1.62-.01-2.944%201.315-2.955%202.96-.01%201.646%201.295%202.988%202.916%202.999h.002c1.621.01%202.943-1.316%202.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005%201.1c1.017.006%201.829.83%201.822%201.89s-.83%201.874-1.848%201.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874%201.848-1.868m-2.155%2011.857%204.14.025c.271.002.49.305.487.676l-.013%201.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668%22%20style%3D%22color%3A%23000%3Bfont-style%3Anormal%3Bfont-variant%3Anormal%3Bfont-weight%3A400%3Bfont-stretch%3Anormal%3Bfont-size%3Amedium%3Bline-height%3Anormal%3Bfont-family%3Asans-serif%3Bfont-variant-ligatures%3Anormal%3Bfont-variant-position%3Anormal%3Bfont-variant-caps%3Anormal%3Bfont-variant-numeric%3Anormal%3Bfont-variant-alternates%3Anormal%3Bfont-feature-settings%3Anormal%3Btext-indent%3A0%3Btext-align%3Astart%3Btext-decoration%3Anone%3Btext-decoration-line%3Anone%3Btext-decoration-style%3Asolid%3Btext-decoration-color%3A%23000%3Bletter-spacing%3Anormal%3Bword-spacing%3Anormal%3Btext-transform%3Anone%3Bwriting-mode%3Alr-tb%3Bdirection%3Altr%3Btext-orientation%3Amixed%3Bdominant-baseline%3Aauto%3Bbaseline-shift%3Abaseline%3Btext-anchor%3Astart%3Bwhite-space%3Anormal%3Bshape-padding%3A0%3Bclip-rule%3Aevenodd%3Bdisplay%3Ainline%3Boverflow%3Avisible%3Bvisibility%3Avisible%3Bopacity%3A1%3Bisolation%3Aauto%3Bmix-blend-mode%3Anormal%3Bcolor-interpolation%3AsRGB%3Bcolor-interpolation-filters%3AlinearRGB%3Bsolid-color%3A%23000%3Bsolid-opacity%3A1%3Bvector-effect%3Anone%3Bfill%3A%23000%3Bfill-opacity%3A.4%3Bfill-rule%3Aevenodd%3Bstroke%3Anone%3Bstroke-width%3A2.47727823%3Bstroke-linecap%3Abutt%3Bstroke-linejoin%3Amiter%3Bstroke-miterlimit%3A4%3Bstroke-dasharray%3Anone%3Bstroke-dashoffset%3A0%3Bstroke-opacity%3A1%3Bcolor-rendering%3Aauto%3Bimage-rendering%3Aauto%3Bshape-rendering%3Aauto%3Btext-rendering%3Aauto%22%20transform%3D%22translate(15.553%202.85)scale(.88807)%22%2F%3E%3Cpath%20d%3D%22M-9.415-.316C-12.69-.338-15.37%202.14-15.39%205.207c-.017%202.716%201.326%204.041%202.78%205.477%201.013%201%202.081%202.055%202.78%203.67l.092.076a.34.34%200%200%200%20.225.086.34.34%200%200%200%20.227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6%201.78-2.64%202.814-3.634%201.473-1.414%202.847-2.733%202.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057%208.784c1.621.011%202.944-1.315%202.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945%201.315-2.955%202.96s1.295%202.989%202.916%203%22%20style%3D%22clip-rule%3Aevenodd%3Bfill%3A%23e1e3e9%3Bfill-opacity%3A1%3Bfill-rule%3Aevenodd%3Bstroke%3Anone%3Bstroke-width%3A2.47727823%3Bstroke-miterlimit%3A4%3Bstroke-dasharray%3Anone%3Bstroke-opacity%3A.4%22%20transform%3D%22translate(15.553%202.85)scale(.88807)%22%2F%3E%3Cpath%20d%3D%22M-11.594%2015.465c-.27-.002-.492.297-.494.668l-.012%201.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z%22%20style%3D%22clip-rule%3Aevenodd%3Bfill%3A%23fff%3Bfill-opacity%3A1%3Bfill-rule%3Aevenodd%3Bstroke%3Anone%3Bstroke-width%3A2.47727823%3Bstroke-miterlimit%3A4%3Bstroke-dasharray%3Anone%3Bstroke-opacity%3A.4%22%20transform%3D%22translate(15.553%202.85)scale(.88807)%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){a.maplibregl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2288%22%20height%3D%2223%22%20fill%3D%22none%22%3E%3Cpath%20fill%3D%22%23000%22%20fill-opacity%3D%22.4%22%20fill-rule%3D%22evenodd%22%20d%3D%22M17.408%2016.796h-1.827l2.501-12.095h.198l3.324%206.533.988%202.19.988-2.19%203.258-6.533h.181l2.6%2012.095h-1.81l-1.218-5.644-.362-1.71-.658%201.71-2.929%205.644h-.098l-2.914-5.644-.757-1.71-.345%201.71zm1.958-3.42-.726%203.663a1.255%201.255%200%200%201-1.232%201.011h-1.827a1.255%201.255%200%200%201-1.229-1.509l2.501-12.095a1.255%201.255%200%200%201%201.23-1.001h.197a1.25%201.25%200%200%201%201.12.685l3.19%206.273%203.125-6.263a1.25%201.25%200%200%201%201.123-.695h.181a1.255%201.255%200%200%201%201.227.991l1.443%206.71a5%205%200%200%201%20.314-.787l.009-.016a4.6%204.6%200%200%201%201.777-1.887c.782-.46%201.668-.667%202.611-.667a4.6%204.6%200%200%201%201.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255%201.255%200%200%201%201.212.925%201.255%201.255%200%200%201%201.212-.925h1.711c.284%200%20.545.094.755.252.613-.3%201.312-.45%202.075-.45%201.356%200%202.557.445%203.482%201.4q.47.48.763%201.064V4.701a1.255%201.255%200%200%201%201.255-1.255h1.86A1.255%201.255%200%200%201%2054.44%204.7v9.194h2.217c.19%200%20.37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42%202.42%200%200%201-.682-1.71c0-.665.267-1.253.735-1.7a2.45%202.45%200%200%201%201.722-.674%202.43%202.43%200%200%201%201.705.675q.318.302.504.683V4.7a1.255%201.255%200%200%201%201.255-1.255h1.744A1.255%201.255%200%200%201%2065.812%204.7v3.335a4.8%204.8%200%200%201%201.526-.246c.938%200%201.817.214%202.59.69a4.47%204.47%200%200%201%201.67%201.743v-.98a1.255%201.255%200%200%201%201.256-1.256h1.777c.233%200%20.451.064.639.174a3.4%203.4%200%200%201%201.567-.372c.346%200%20.861.02%201.285.232a1.25%201.25%200%200%201%20.689%201.004%204.7%204.7%200%200%201%20.853-.588c.795-.44%201.675-.647%202.61-.647%201.385%200%202.65.39%203.525%201.396.836.938%201.168%202.173%201.168%203.528q-.001.515-.056%201.051a1.255%201.255%200%200%201-.947%201.09l.408.952a1.255%201.255%200%200%201-.477%201.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06%200-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8%205.8%200%200%201-.548-2.512q0-.429.053-.843a1.3%201.3%200%200%201-.333-.086l-.166-.004c-.223%200-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255%201.255%200%200%201-1.256%201.256h-1.777a1.255%201.255%200%200%201-1.256-1.256V15.69l-.032.057a4.8%204.8%200%200%201-1.86%201.833%205.04%205.04%200%200%201-2.484.634%204.5%204.5%200%200%201-1.935-.424%201.25%201.25%200%200%201-.764.258h-1.71a1.255%201.255%200%200%201-1.256-1.255V7.687a2.4%202.4%200%200%201-.428.625c.253.23.412.561.412.93v7.553a1.255%201.255%200%200%201-1.256%201.255h-1.843a1.25%201.25%200%200%201-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255%201.255%200%200%201-1.256-1.255v-1.251l-.061.117a4.7%204.7%200%200%201-1.782%201.884%204.77%204.77%200%200%201-2.485.67%205.6%205.6%200%200%201-1.485-.188l.009%202.764a1.255%201.255%200%200%201-1.255%201.259h-1.729a1.255%201.255%200%200%201-1.255-1.255v-3.537a1.255%201.255%200%200%201-1.167.793h-1.679a1.25%201.25%200%200%201-.77-.263%204.5%204.5%200%200%201-1.945.429c-.885%200-1.724-.21-2.495-.632l-.017-.01a5%205%200%200%201-1.081-.836%201.255%201.255%200%200%201-1.254%201.312h-1.81a1.255%201.255%200%200%201-1.228-.99l-.782-3.625-2.044%203.939a1.25%201.25%200%200%201-1.115.676h-.098a1.25%201.25%200%200%201-1.116-.68l-2.061-3.994zM35.92%2016.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033%201.332h1.678V9.242h-1.694l-.033%201.267q-.133-.329-.526-.658l-.032-.028a3.2%203.2%200%200%200-.668-.428l-.27-.12a3.3%203.3%200%200%200-1.235-.23q-1.136-.001-1.974.493a3.36%203.36%200%200%200-1.3%201.382q-.445.89-.444%202.074%200%201.2.51%202.107a3.8%203.8%200%200%200%201.382%201.381%203.9%203.9%200%200%200%201.893.477q.795%200%201.455-.33zm-2.789-5.38q-.576.675-.575%201.762%200%201.102.559%201.794.576.675%201.645.675a2.25%202.25%200%200%200%20.934-.19%202.2%202.2%200%200%200%20.468-.29l.178-.161a2.2%202.2%200%200%200%20.397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2%202.2%200%200%200-.633-.709l-.13-.086-.047-.028a2.1%202.1%200%200%200-1.073-.285q-1.052%200-1.629.692zm2.316%202.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96%200%200%200-.353-.389.85.85%200%200%200-.464-.127c-.4%200-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945%200%20.506.122.801.27.99.097.11.266.224.68.224.303%200%20.504-.09.687-.269zm7.545%201.705a2.6%202.6%200%200%200%20.331.423q.319.33.755.548l.173.074q.65.255%201.49.255%201.02%200%201.844-.493a3.45%203.45%200%200%200%201.316-1.4q.493-.904.493-2.089%200-1.909-.988-2.913-.988-1.02-2.584-1.02-.898%200-1.575.347a3%203%200%200%200-.415.262l-.199.166a3.4%203.4%200%200%200-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296%201.119.297%201.07%200%201.645-.675.577-.69.576-1.762%200-1.119-.576-1.777-.558-.675-1.645-.675-.435%200-.835.16a2%202%200%200%200-.284.136%202%202%200%200%200-.363.254%202.2%202.2%200%200%200-.46.569l-.082.162a2.6%202.6%200%200%200-.213%201.072v.115q0%20.707.296%201.267l.135.211zm.964-.818a1.1%201.1%200%200%200%20.367.385.94.94%200%200%200%20.476.118c.423%200%20.59-.117.687-.23.159-.194.28-.478.28-.95%200-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1%201%200%200%200-.503.135l-.012.007a.86.86%200%200%200-.335.343c-.073.133-.132.324-.132.614v.115a1.4%201.4%200%200%200%20.14.66zm15.7-6.222q.347-.346.346-.856a1.05%201.05%200%200%200-.345-.79%201.18%201.18%200%200%200-.84-.329q-.51%200-.855.33a1.05%201.05%200%200%200-.346.79q0%20.51.346.855.345.346.856.346.51%200%20.839-.346zm4.337%209.314.033-1.332q.191.403.59.747l.098.081a4%204%200%200%200%20.316.224l.223.122a3.2%203.2%200%200%200%201.44.322%203.8%203.8%200%200%200%201.875-.477%203.5%203.5%200%200%200%201.382-1.366q.527-.89.526-2.09%200-1.184-.444-2.073a3.24%203.24%200%200%200-1.283-1.399q-.823-.51-1.942-.51a3.5%203.5%200%200%200-1.527.344l-.086.043-.165.09a3%203%200%200%200-.33.214q-.432.315-.656.707a2%202%200%200%200-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5%202.5%200%200%200%20.566.7q.117.098.245.18l.144.08a2.1%202.1%200%200%200%20.975.232q1.07%200%201.645-.675.576-.69.576-1.778%200-1.102-.576-1.777-.56-.691-1.645-.692a2.2%202.2%200%200%200-1.015.235q-.22.113-.415.282l-.15.142a2.1%202.1%200%200%200-.42.594q-.223.479-.223%201.1v.115q0%20.705.293%201.26zm2.616-.293c.157-.191.28-.479.28-.967%200-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87%200%200%200-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0%20.285.057.499.144.669a1.1%201.1%200%200%200%20.367.405c.137.082.28.123.455.123.423%200%20.59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493%200%20.642.099l.247-1.794q-.196-.099-.717-.099a2.3%202.3%200%200%200-.545.063%202%202%200%200%200-.411.148%202.2%202.2%200%200%200-.4.249%202.5%202.5%200%200%200-.485.499%202.7%202.7%200%200%200-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5%201.5%200%200%201%20.466-.636%202.5%202.5%200%200%201%20.399-.253%202%202%200%200%201%20.224-.099zm9.784%202.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46%203.46%200%200%200-1.4%201.382q-.493.906-.493%202.106%200%201.07.428%201.975.428.89%201.332%201.432.906.526%202.255.526.973%200%201.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954%200-1.497-.444a1.6%201.6%200%200%201-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1%201%200%200%200-.156-.176q-.46-.428-1.316-.428-.986%200-1.494.604-.379.45-.494%201.234zm-27.053%202.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z%22%2F%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22m19.63%2011.151-.757-1.71-.345%201.71-1.12%205.644h-1.827L18.083%204.7h.197l3.325%206.533.988%202.19.988-2.19L26.839%204.7h.181l2.6%2012.095h-1.81l-1.218-5.644-.362-1.71-.658%201.71-2.93%205.644h-.098l-2.913-5.644zm14.836%205.81q-1.02%200-1.893-.478a3.8%203.8%200%200%201-1.381-1.382q-.51-.906-.51-2.106%200-1.185.444-2.074a3.36%203.36%200%200%201%201.3-1.382q.839-.494%201.974-.494a3.3%203.3%200%200%201%201.234.231%203.3%203.3%200%200%201%20.97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02%201.053a3.17%203.17%200%200%201-1.662.444zm.296-1.482q.938%200%201.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2%202.2%200%200%200-.807-.872%202.1%202.1%200%200%200-1.119-.313q-1.053%200-1.629.692-.575.675-.575%201.76%200%201.103.559%201.795.577.675%201.645.675zm6.521-6.237h1.711v1.4q.906-1.597%202.83-1.597%201.596%200%202.584%201.02.988%201.005.988%202.914%200%201.185-.493%202.09a3.46%203.46%200%200%201-1.316%201.399%203.5%203.5%200%200%201-1.844.493q-.954%200-1.662-.329a2.67%202.67%200%200%201-1.086-.97l.017%205.134h-1.728zm4.048%206.22q1.07%200%201.645-.674.577-.69.576-1.762%200-1.119-.576-1.777-.558-.675-1.645-.675-.592%200-1.12.296-.51.28-.822.823-.296.527-.296%201.234v.115q0%20.708.296%201.267.313.543.823.855.51.296%201.119.297z%22%2F%3E%3Cpath%20fill%3D%22%23e1e3e9%22%20d%3D%22M51.325%204.7h1.86v10.45h3.473v1.646h-5.333zm7.12%204.542h1.843v7.553h-1.843zm.905-1.415a1.16%201.16%200%200%201-.856-.346%201.17%201.17%200%200%201-.346-.856%201.05%201.05%200%200%201%20.346-.79q.346-.329.856-.329.494%200%20.839.33a1.05%201.05%200%200%201%20.345.79%201.16%201.16%200%200%201-.345.855q-.33.346-.84.346zm7.875%209.133a3.17%203.17%200%200%201-1.662-.444q-.723-.46-1.004-1.053l-.033%201.332h-1.71V4.701h1.743v4.657l-.082%201.283q.279-.658%201.086-1.119a3.5%203.5%200%200%201%201.778-.477q1.119%200%201.942.51a3.24%203.24%200%200%201%201.283%201.4q.445.888.444%202.072%200%201.201-.526%202.09a3.5%203.5%200%200%201-1.382%201.366%203.8%203.8%200%200%201-1.876.477zm-.296-1.481q1.069%200%201.645-.675.577-.69.577-1.778%200-1.102-.577-1.776-.56-.691-1.645-.692a2.12%202.12%200%200%200-1.58.659q-.642.641-.642%201.694v.115q0%20.71.296%201.267a2.4%202.4%200%200%200%20.807.872%202.1%202.1%200%200%200%201.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14%202.14%200%200%201%201.349-.46q.527%200%20.724.098l-.247%201.794q-.149-.099-.642-.099-.774%200-1.416.494-.626.493-.626%201.58v3.883h-1.777V9.242zm9.534%207.718q-1.35%200-2.255-.526-.904-.543-1.332-1.432a4.6%204.6%200%200%201-.428-1.975q0-1.2.493-2.106a3.46%203.46%200%200%201%201.4-1.382q.889-.495%202.007-.494%201.744%200%202.584.97.855.956.856%202.7%200%20.444-.05.92h-5.43q.18%201.005.708%201.45.542.443%201.497.443.79%200%201.3-.131a4%204%200%200%200%20.938-.362l.542%201.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728%200-1.991%201.86z%22%2F%3E%3Cpath%20d%3D%22M5.074%2015.948a.484.657%200%200%200-.486.659v1.84a.484.657%200%200%200%20.486.659h4.101a.484.657%200%200%200%20.486-.659v-1.84a.484.657%200%200%200-.486-.659zm3.56%201.16H5.617v.838h3.017z%22%20style%3D%22fill%3A%23fff%3Bfill-rule%3Aevenodd%3Bstroke-width%3A1.03600001%22%2F%3E%3Cg%20style%3D%22stroke-width%3A1.12603545%22%3E%3Cpath%20d%3D%22M-9.408-1.416c-3.833-.025-7.056%202.912-7.08%206.615-.02%203.08%201.653%204.832%203.107%206.268.903.892%201.721%201.74%202.32%202.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87%201.87%200%200%200-.362%201.121l-.011%201.877c-.003.402.104.787.347%201.125.244.338.688.653%201.23.656l4.142.028c.542.003.99-.306%201.238-.641a1.87%201.87%200%200%200%20.363-1.121l.012-1.875a1.87%201.87%200%200%200-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145%201.425-1.983%202.348-2.87%201.473-1.414%203.18-3.149%203.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006%201.1v.002c3.274.02%205.92%202.532%205.9%205.6-.017%202.706-1.39%204.026-2.863%205.44-1.034.994-2.118%202.033-2.814%203.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34%200%200%201-.226.084.34.34%200%200%201-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067%202.7-5.545%205.975-5.523m-.02%202.826c-1.62-.01-2.944%201.315-2.955%202.96-.01%201.646%201.295%202.988%202.916%202.999h.002c1.621.01%202.943-1.316%202.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005%201.1c1.017.006%201.829.83%201.822%201.89s-.83%201.874-1.848%201.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874%201.848-1.868m-2.155%2011.857%204.14.025c.271.002.49.305.487.676l-.013%201.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668%22%20style%3D%22color%3A%23000%3Bfont-style%3Anormal%3Bfont-variant%3Anormal%3Bfont-weight%3A400%3Bfont-stretch%3Anormal%3Bfont-size%3Amedium%3Bline-height%3Anormal%3Bfont-family%3Asans-serif%3Bfont-variant-ligatures%3Anormal%3Bfont-variant-position%3Anormal%3Bfont-variant-caps%3Anormal%3Bfont-variant-numeric%3Anormal%3Bfont-variant-alternates%3Anormal%3Bfont-feature-settings%3Anormal%3Btext-indent%3A0%3Btext-align%3Astart%3Btext-decoration%3Anone%3Btext-decoration-line%3Anone%3Btext-decoration-style%3Asolid%3Btext-decoration-color%3A%23000%3Bletter-spacing%3Anormal%3Bword-spacing%3Anormal%3Btext-transform%3Anone%3Bwriting-mode%3Alr-tb%3Bdirection%3Altr%3Btext-orientation%3Amixed%3Bdominant-baseline%3Aauto%3Bbaseline-shift%3Abaseline%3Btext-anchor%3Astart%3Bwhite-space%3Anormal%3Bshape-padding%3A0%3Bclip-rule%3Aevenodd%3Bdisplay%3Ainline%3Boverflow%3Avisible%3Bvisibility%3Avisible%3Bopacity%3A1%3Bisolation%3Aauto%3Bmix-blend-mode%3Anormal%3Bcolor-interpolation%3AsRGB%3Bcolor-interpolation-filters%3AlinearRGB%3Bsolid-color%3A%23000%3Bsolid-opacity%3A1%3Bvector-effect%3Anone%3Bfill%3A%23000%3Bfill-opacity%3A.4%3Bfill-rule%3Aevenodd%3Bstroke%3Anone%3Bstroke-width%3A2.47727823%3Bstroke-linecap%3Abutt%3Bstroke-linejoin%3Amiter%3Bstroke-miterlimit%3A4%3Bstroke-dasharray%3Anone%3Bstroke-dashoffset%3A0%3Bstroke-opacity%3A1%3Bcolor-rendering%3Aauto%3Bimage-rendering%3Aauto%3Bshape-rendering%3Aauto%3Btext-rendering%3Aauto%22%20transform%3D%22translate(15.553%202.85)scale(.88807)%22%2F%3E%3Cpath%20d%3D%22M-9.415-.316C-12.69-.338-15.37%202.14-15.39%205.207c-.017%202.716%201.326%204.041%202.78%205.477%201.013%201%202.081%202.055%202.78%203.67l.092.076a.34.34%200%200%200%20.225.086.34.34%200%200%200%20.227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6%201.78-2.64%202.814-3.634%201.473-1.414%202.847-2.733%202.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057%208.784c1.621.011%202.944-1.315%202.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945%201.315-2.955%202.96s1.295%202.989%202.916%203%22%20style%3D%22clip-rule%3Aevenodd%3Bfill%3A%23e1e3e9%3Bfill-opacity%3A1%3Bfill-rule%3Aevenodd%3Bstroke%3Anone%3Bstroke-width%3A2.47727823%3Bstroke-miterlimit%3A4%3Bstroke-dasharray%3Anone%3Bstroke-opacity%3A.4%22%20transform%3D%22translate(15.553%202.85)scale(.88807)%22%2F%3E%3Cpath%20d%3D%22M-11.594%2015.465c-.27-.002-.492.297-.494.668l-.012%201.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z%22%20style%3D%22clip-rule%3Aevenodd%3Bfill%3A%23fff%3Bfill-opacity%3A1%3Bfill-rule%3Aevenodd%3Bstroke%3Anone%3Bstroke-width%3A2.47727823%3Bstroke-miterlimit%3A4%3Bstroke-dasharray%3Anone%3Bstroke-opacity%3A.4%22%20transform%3D%22translate(15.553%202.85)scale(.88807)%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}}.maplibregl-ctrl.maplibregl-ctrl-attrib{padding:0 5px;background-color:hsla(0,0%,100%,.5);margin:0}@media screen{.maplibregl-ctrl-attrib.maplibregl-compact{min-height:20px;padding:2px 24px 2px 0;margin:10px;position:relative;background-color:#fff;color:#000;border-radius:12px;box-sizing:content-box}.maplibregl-ctrl-attrib.maplibregl-compact-show{padding:2px 28px 2px 8px;visibility:visible}.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact-show,.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact-show{padding:2px 8px 2px 28px;border-radius:12px}.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-inner{display:none}.maplibregl-ctrl-attrib-button{display:none;cursor:pointer;position:absolute;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20fill-rule%3D%22evenodd%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M4%2010a6%206%200%201%200%2012%200%206%206%200%201%200-12%200m5-3a1%201%200%201%200%202%200%201%201%200%201%200-2%200m0%203a1%201%200%201%201%202%200v3a1%201%200%201%201-2%200%22%2F%3E%3C%2Fsvg%3E");background-color:hsla(0,0%,100%,.5);width:24px;height:24px;box-sizing:border-box;border-radius:12px;outline:none;top:0;right:0;border:0}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;list-style:none}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button::-webkit-details-marker{display:none}.maplibregl-ctrl-bottom-left .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-top-left .maplibregl-ctrl-attrib-button{left:0}.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-inner{display:block}.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-button{background-color:rgba(0,0,0,.05)}.maplibregl-ctrl-bottom-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;right:0}.maplibregl-ctrl-top-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{top:0;right:0}.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{top:0;left:0}.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;left:0}}@media screen and (forced-colors:active){.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23fff%22%20fill-rule%3D%22evenodd%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M4%2010a6%206%200%201%200%2012%200%206%206%200%201%200-12%200m5-3a1%201%200%201%200%202%200%201%201%200%201%200-2%200m0%203a1%201%200%201%201%202%200v3a1%201%200%201%201-2%200%22%2F%3E%3C%2Fsvg%3E")}}@media screen and (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20fill-rule%3D%22evenodd%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M4%2010a6%206%200%201%200%2012%200%206%206%200%201%200-12%200m5-3a1%201%200%201%200%202%200%201%201%200%201%200-2%200m0%203a1%201%200%201%201%202%200v3a1%201%200%201%201-2%200%22%2F%3E%3C%2Fsvg%3E")}}.maplibregl-ctrl-attrib a{color:rgba(0,0,0,.75);text-decoration:none}.maplibregl-ctrl-attrib a:hover{color:inherit;text-decoration:underline}.maplibregl-attrib-empty{display:none}.maplibregl-ctrl-scale{background-color:hsla(0,0%,100%,.75);font-size:10px;white-space:nowrap;border-color:#333;border-style:none solid solid;border-width:medium 2px 2px;padding:0 5px;color:#333;box-sizing:border-box}.maplibregl-popup{position:absolute;top:0;left:0;display:flex;will-change:transform;pointer-events:none}.maplibregl-popup-anchor-top,.maplibregl-popup-anchor-top-left,.maplibregl-popup-anchor-top-right{flex-direction:column}.maplibregl-popup-anchor-bottom,.maplibregl-popup-anchor-bottom-left,.maplibregl-popup-anchor-bottom-right{flex-direction:column-reverse}.maplibregl-popup-anchor-left{flex-direction:row}.maplibregl-popup-anchor-right{flex-direction:row-reverse}.maplibregl-popup-tip{width:0;height:0;border:10px solid transparent;z-index:1}.maplibregl-popup-anchor-top .maplibregl-popup-tip{align-self:center;border-top:none;border-bottom-color:#fff}.maplibregl-popup-anchor-top-left .maplibregl-popup-tip{align-self:flex-start;border-top:none;border-left:none;border-bottom-color:#fff}.maplibregl-popup-anchor-top-right .maplibregl-popup-tip{align-self:flex-end;border-top:none;border-right:none;border-bottom-color:#fff}.maplibregl-popup-anchor-bottom .maplibregl-popup-tip{align-self:center;border-bottom:none;border-top-color:#fff}.maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip{align-self:flex-start;border-bottom:none;border-left:none;border-top-color:#fff}.maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{align-self:flex-end;border-bottom:none;border-right:none;border-top-color:#fff}.maplibregl-popup-anchor-left .maplibregl-popup-tip{align-self:center;border-left:none;border-right-color:#fff}.maplibregl-popup-anchor-right .maplibregl-popup-tip{align-self:center;border-right:none;border-left-color:#fff}[dir=rtl] .maplibregl-popup-anchor-left{flex-direction:row-reverse}[dir=rtl] .maplibregl-popup-anchor-right{flex-direction:row}[dir=rtl] .maplibregl-popup-anchor-top-left .maplibregl-popup-tip{align-self:flex-end}[dir=rtl] .maplibregl-popup-anchor-top-right .maplibregl-popup-tip{align-self:flex-start}[dir=rtl] .maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip{align-self:flex-end}[dir=rtl] .maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{align-self:flex-start}.maplibregl-popup-close-button{position:absolute;right:0;top:0;border:0;border-radius:0 3px 0 0;cursor:pointer;background-color:transparent}.maplibregl-popup-close-button:hover{background-color:rgba(0,0,0,.05)}.maplibregl-popup-content{position:relative;background:#fff;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.1);padding:15px 10px;pointer-events:auto}.maplibregl-popup-anchor-top-left .maplibregl-popup-content{border-top-left-radius:0}.maplibregl-popup-anchor-top-right .maplibregl-popup-content{border-top-right-radius:0}.maplibregl-popup-anchor-bottom-left .maplibregl-popup-content{border-bottom-left-radius:0}.maplibregl-popup-anchor-bottom-right .maplibregl-popup-content{border-bottom-right-radius:0}.maplibregl-popup-track-pointer{display:none}.maplibregl-popup-track-pointer *{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.maplibregl-map:hover .maplibregl-popup-track-pointer{display:flex}.maplibregl-map:active .maplibregl-popup-track-pointer{display:none}.maplibregl-marker{position:absolute;top:0;left:0;will-change:transform;transition:opacity .2s}.maplibregl-marker-draggable{cursor:grab}.maplibregl-user-location-dot,.maplibregl-user-location-dot:before{background-color:#1da1f2;width:15px;height:15px;border-radius:50%}.maplibregl-user-location-dot:before{content:"";position:absolute;animation:maplibregl-user-location-dot-pulse 2s infinite}.maplibregl-user-location-dot:after{border-radius:50%;border:2px solid #fff;content:"";height:19px;left:-2px;position:absolute;top:-2px;width:19px;box-sizing:border-box;box-shadow:0 0 3px rgba(0,0,0,.35)}@media (prefers-reduced-motion:reduce){.maplibregl-user-location-dot:before{animation:none}}@keyframes maplibregl-user-location-dot-pulse{0%{transform:scale(1);opacity:1}70%{transform:scale(3);opacity:0}to{transform:scale(1);opacity:0}}.maplibregl-user-location-dot-stale{background-color:#aaa}.maplibregl-user-location-dot-stale:after{display:none}.maplibregl-user-location-accuracy-circle{background-color:#1da1f233;width:1px;height:1px;border-radius:100%}.maplibregl-crosshair,.maplibregl-crosshair .maplibregl-interactive,.maplibregl-crosshair .maplibregl-interactive:active{cursor:crosshair}.maplibregl-boxzoom{position:absolute;top:0;left:0;width:0;height:0;background:#fff;border:2px dotted #202020;opacity:.5}.maplibregl-cooperative-gesture-screen{background:rgba(0,0,0,.4);position:absolute;inset:0;display:flex;justify-content:center;align-items:center;color:#fff;padding:1rem;font-size:1.4em;line-height:1.2;opacity:0;pointer-events:none;transition:opacity 1s ease 1s;z-index:99999}.maplibregl-cooperative-gesture-screen.maplibregl-show{opacity:1;transition:opacity .05s}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:none}@media (hover:none),(pointer:coarse){.maplibregl-cooperative-gesture-screen .maplibregl-desktop-message{display:none}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:block}}.maplibregl-pseudo-fullscreen{position:fixed!important;width:100%!important;height:100%!important;top:0!important;left:0!important;z-index:99999}

/* enoki tokens. Values transcribed from design.md 3.1.
   Deviations (WCAG AA, decided 2026-08-22): paper accent darkened,
   carbon code pastels darkened. See design.md 3.1 notes. */

:root {
  /* -- paper (default) ------------------------------------------------ */
  --en-paper: #efe9db;
  --en-paper2: #e7ddc9;
  --en-paper3: #ddd0b6;
  --en-ink: #16130e;
  --en-ink2: #5a5140;
  --en-line: #16130e;
  --en-accent: #c21c00;
  --en-blue: #1546ff;
  --en-green: #0f8a46;
  --en-amber: #e08e05;
  --en-halo: rgba(194, 28, 0, 0.22);
  --en-grid: rgba(22, 19, 14, 0.06);
  --en-sh: #16130e;
  --en-code-sky: #8fd1ff;
  --en-code-mint: #9be0b6;
  --en-code-yellow: #ffd873;
  --en-code-dim: #8c8270;

  --en-sh-1: 1px 1px 0 var(--en-sh);
  --en-sh-2: 2px 2px 0 var(--en-sh);
  --en-sh-3: 3px 3px 0 var(--en-sh);
  --en-sh-4: 4px 4px 0 var(--en-sh);
  --en-sh-5: 5px 5px 0 var(--en-sh);
  --en-sh-6: 6px 6px 0 var(--en-sh);
  --en-sh-8: 8px 8px 0 var(--en-sh);
  color-scheme: light;
}

:root[data-theme="carbon"],
[data-theme="carbon"] {
  --en-paper: #141110;
  --en-paper2: #1d1813;
  --en-paper3: #27201a;
  --en-ink: #f1ead9;
  --en-ink2: #b8ac93;
  --en-line: #f1ead9;
  --en-accent: #ff5a3c;
  --en-blue: #6f92ff;
  --en-green: #37c579;
  --en-amber: #f0b429;
  --en-halo: rgba(255, 90, 60, 0.28);
  --en-grid: rgba(241, 234, 217, 0.05);
  --en-sh: rgba(0, 0, 0, 0.55);
  --en-code-sky: #006cb8;
  --en-code-mint: #257846;
  --en-code-yellow: #876200;
  --en-code-dim: #6f6553;

  --en-sh-1: 1px 1px 0 var(--en-sh);
  --en-sh-2: 2px 2px 0 var(--en-sh);
  --en-sh-3: 3px 3px 0 var(--en-sh);
  --en-sh-4: 4px 4px 0 var(--en-sh);
  --en-sh-5: 5px 5px 0 var(--en-sh);
  --en-sh-6: 6px 6px 0 var(--en-sh);
  --en-sh-8: 8px 8px 0 var(--en-sh);
  color-scheme: dark;
}

:root {
  /* type --------------------------------------------------------------- */
  --en-disp: "Anton", "Archivo", sans-serif;
  --en-ui: "Archivo", system-ui, sans-serif;
  --en-body: "Source Serif 4", Georgia, "Times New Roman", serif;
  --en-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;

  --en-f-hero: clamp(64px, 15vw, 190px);
  --en-f-h2: clamp(34px, 7vw, 64px);
  --en-f-stat: clamp(34px, 6vw, 54px);
  --en-f-stepnum: 30px;
  --en-f-brand: 26px;
  --en-f-sub: clamp(16px, 2.4vw, 21px);
  --en-f-lede: 16px;
  --en-f-step-body: 14px;
  --en-f-mono-14: 14px;
  --en-f-mono-13: 13px;
  --en-f-mono-12: 12px;
  --en-f-mono-11: 11px;
  --en-f-mono-10: 10px;
  --en-f-mono-9: 9px;
  --en-f-mono-8: 8.5px;
  --en-f-code: 12.5px;

  --en-tr-disp: 1px;
  --en-tr-mono: 1px;
  --en-tr-dense: 2px;
  --en-lh-hero: 0.82;
  --en-lh-h2: 0.9;
  --en-lh-brand: 0.95;
  --en-lh-body: 1.55;

  /* shape -------------------------------------------------------------- */
  --en-r: 0px;
  --en-r-svg: 4px;
  --en-bw: 2px;
  --en-bw-thin: 1.5px;

  /* geometry: interior scale. Padding tokens name the component they
     fit (design 6.5/7.1/7.2/7.8). Spacing tokens are the shared steps. */
  --en-sp-1: 4px;
  --en-sp-2: 8px;
  --en-sp-3: 12px;
  --en-sp-4: 16px;
  --en-sp-5: 24px;
  --en-sp-6: 32px;
  --en-p-bar: 9px 12px;
  --en-p-chip: 5px 9px;
  --en-p-stat: 16px 14px;
  --en-p-board: 20px 22px;
  --en-code-bg: var(--en-ink);
  --en-code-1: var(--en-paper);
  --en-lh-mono: 1.7;

  /* layout ------------------------------------------------------------- */
  --en-cell: 44px;
  --en-wrap-max: 1160px;
  --en-gutter: 26px;
  --en-sec-pad: 70px;
  --en-topbar-h: 37px;
  --en-rail-w: 220px;
  --en-prog-h: 3px;

  --en-z-grid: 0;
  --en-z-content: 1;
  --en-z-rail: 40;
  --en-z-prog: 60;
  --en-z-topbar: 70;
  --en-z-tip: 80;
  --en-z-overlay: 90;
  --en-z-toast: 100;

  /* motion ------------------------------------------------------------- */
  --en-ease-ui: ease;
  --en-ease-out: cubic-bezier(0.2, 0.9, 0.2, 1);
  --en-ease-pop: cubic-bezier(0.2, 1.4, 0.3, 1);
  --en-ease-step: steps(1, end);
  --en-ease-lin: linear;

  --en-d-press: 0.08s;
  --en-d-quick: 0.12s;
  --en-d-reveal: 0.7s;
  --en-d-reveal-delay: 0.09s;
  --en-d-draw: 1s;
  --en-d-draw-2: 0.7s;
  --en-d-pop: 0.4s;
  --en-d-blink: 1.1s;
  --en-d-breathe: 4s;
  --en-d-marquee: 26s;
  --en-d-beat: 620ms;
  --en-d-count: 1100ms;
  --en-d-tooltip: 0.12s;
}

/* enoki reset: the minimum the library needs from the document. */

*,
*::before,
*::after {
  box-sizing: border-box;
}

/* The UA default 8px body margin shows as a white strip around the
   paper background. The library owns the full page, so claim it. */
body {
  margin: 0;
}

html {
  scroll-behavior: smooth;
}

:focus-visible {
  outline: var(--en-bw) solid var(--en-accent);
  outline-offset: 2px;
}

/* Raw code elements fall back to the UA generic mono (SF Mono on Mac,
   Consolas on Windows). Claim them with the house mono so every code
   surface renders identically. Components that set their own font keep
   winning on specificity. */
code,
kbd,
pre,
samp {
  font-family: var(--en-mono);
}

::selection {
  background: var(--en-accent);
  color: var(--en-paper);
}

/* Reduced motion: kill library animation, keep final states. Scoped to the
   house class prefix as well as data-enoki: Radix portals render outside
   any data-enoki tree, and consumers must not need to attribute-stamp an
   element to get the contract. The final-state rules compound
   [class*='en-'] with the state class to keep (0,2,0) specificity, since
   the base rules in motion.css load after reset.css. */
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  [data-enoki],
  [data-enoki] *,
  [class*="en-"],
  [class*="en-"] * {
    /* biome-ignore lint/complexity/noImportantStyles: see above */
    animation: none !important;
    /* biome-ignore lint/complexity/noImportantStyles: see above */
    transition: none !important;
  }

  [class*="en-"].en-reveal {
    transform: none;
    opacity: 1;
  }

  [class*="en-"].en-draw {
    stroke-dasharray: none;
    stroke-dashoffset: 0;
  }

  [class*="en-"].en-blink,
  [class*="en-"].en-heartbeat {
    opacity: 1;
    transform: none;
  }

  [class*="en-"].en-marquee-track {
    transform: none;
  }

  [class*="en-"].en-btn:hover,
  [class*="en-"].en-btn:active {
    transform: none;
  }
}

/* enoki motion. Durations and easings live in tokens.css. */

@keyframes en-blink {
  50% {
    opacity: 0.15;
  }
}

@keyframes en-beat {
  0%,
  100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.35);
  }
}

@keyframes en-reveal {
  from {
    transform: translateY(26px);
    opacity: 0;
  }
  to {
    transform: none;
    opacity: 1;
  }
}

@keyframes en-draw {
  to {
    stroke-dashoffset: 0;
  }
}

@keyframes en-dialog-in {
  from {
    transform: translate(-50%, calc(-50% + 10px));
    opacity: 0;
  }
  to {
    transform: translate(-50%, -50%);
    opacity: 1;
  }
}

@keyframes en-dialog-out {
  from {
    transform: translate(-50%, -50%);
    opacity: 1;
  }
  to {
    transform: translate(-50%, calc(-50% + 10px));
    opacity: 0;
  }
}

@keyframes en-sheet-in {
  from {
    transform: translateX(40px);
    opacity: 0;
  }
  to {
    transform: none;
    opacity: 1;
  }
}

@keyframes en-sheet-in-left {
  from {
    transform: translateX(-40px);
    opacity: 0;
  }
  to {
    transform: none;
    opacity: 1;
  }
}

@keyframes en-fade {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes en-toast-in {
  from {
    transform: translateX(16px);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

@keyframes en-marquee {
  to {
    transform: translateX(-50%);
  }
}

.en-blink {
  animation: en-blink var(--en-d-blink) var(--en-ease-step) infinite;
}

.en-heartbeat {
  animation: en-beat var(--en-d-beat) var(--en-ease-pop) infinite;
}

/* Reveal gates the animation: the component adds .is-in when the element
   enters the viewport. Without .is-in the element stays hidden. */
.en-reveal {
  transform: translateY(26px);
  opacity: 0.001;
}

.en-reveal.is-in {
  animation: en-reveal var(--en-d-reveal) var(--en-ease-out)
    var(--en-reveal-delay, 0s) forwards;
}

.en-draw {
  stroke-dasharray: var(--en-draw-len, 300px);
  stroke-dashoffset: var(--en-draw-len, 300px);
  animation: en-draw var(--en-d-draw) var(--en-ease-out) forwards;
}

.en-marquee-track {
  display: inline-flex;
  gap: 48px;
  white-space: nowrap;
  will-change: transform;
  /* the track holds the two ticker halves at natural width; never compress,
     otherwise the halves overlap and loop with a seam */
  flex: none;
  animation: en-marquee var(--en-d-marquee) var(--en-ease-lin) infinite;
}

/* enoki type utilities. Compose family + size classes. */

.en-f-disp {
  font-family: var(--en-disp);
  text-transform: uppercase;
  letter-spacing: var(--en-tr-disp);
  font-weight: 400;
}

.en-f-mono {
  font-family: var(--en-mono);
  text-transform: uppercase;
  letter-spacing: var(--en-tr-mono);
  font-weight: 400;
}

.en-f-mono-bold {
  font-family: var(--en-mono);
  text-transform: uppercase;
  letter-spacing: var(--en-tr-mono);
  font-weight: 700;
}

.en-f-body {
  font-family: var(--en-body);
}

.en-track-dense {
  letter-spacing: var(--en-tr-dense);
}

.en-t-hero {
  font-size: var(--en-f-hero);
  line-height: var(--en-lh-hero);
}

.en-t-h2 {
  font-size: var(--en-f-h2);
  line-height: var(--en-lh-h2);
}

.en-t-stat {
  font-size: var(--en-f-stat);
  line-height: 1;
}

.en-t-stepnum {
  font-size: var(--en-f-stepnum);
  line-height: 1;
}

.en-t-brand {
  font-size: var(--en-f-brand);
  line-height: var(--en-lh-brand);
}

.en-t-sub {
  font-size: var(--en-f-sub);
}

.en-lh-body {
  line-height: var(--en-lh-body);
}

.en-s-8 {
  font-size: var(--en-f-mono-8);
}
.en-s-9 {
  font-size: var(--en-f-mono-9);
}
.en-s-10 {
  font-size: var(--en-f-mono-10);
}
.en-s-11 {
  font-size: var(--en-f-mono-11);
}
.en-s-12 {
  font-size: var(--en-f-mono-12);
}
.en-s-125 {
  font-size: var(--en-f-code);
}
.en-s-13 {
  font-size: var(--en-f-mono-13);
}
.en-s-14 {
  font-size: var(--en-f-mono-14);
}
.en-s-16 {
  font-size: var(--en-f-lede);
}

.en-hollow {
  color: transparent;
  -webkit-text-stroke: 2px var(--en-ink);
}

.en-mark-quiet {
  background: linear-gradient(transparent 62%, var(--en-paper3) 62%);
  padding: 0 2px;
}

.en-mark-hot {
  background: var(--en-accent);
  color: var(--en-paper);
  padding: 0 4px;
}

/* enoki layout: exposed grid, wrap, sections. */

.en-root {
  background: var(--en-paper);
  color: var(--en-ink);
  font-family: var(--en-ui);
  min-height: 100%;
}

.en-grid {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: var(--en-z-grid);
  background-image:
    linear-gradient(var(--en-grid) 1px, transparent 1px),
    linear-gradient(90deg, var(--en-grid) 1px, transparent 1px);
  background-size: var(--en-cell) var(--en-cell);
}

.en-grid--rel {
  position: absolute;
}

.en-wrap {
  width: 100%;
  max-width: var(--en-wrap-max);
  margin-inline: auto;
  padding-inline: var(--en-gutter);
  position: relative;
  z-index: var(--en-z-content);
}

@media (max-width: 600px) {
  .en-wrap {
    padding-inline: 16px;
  }
}

.en-sec {
  padding-block: var(--en-sec-pad);
  border-top: var(--en-bw) solid var(--en-ink);
  scroll-margin-top: 48px;
}

.en-sec:first-child {
  border-top: 0;
}

.en-shead {
  display: flex;
  align-items: flex-end;
  flex-wrap: wrap;
  gap: 16px;
  padding-bottom: 14px;
  margin-bottom: 8px;
  border-bottom: var(--en-bw) solid var(--en-line);
}

.en-shead-num {
  flex: none;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-14);
  font-weight: 700;
  line-height: 1;
  color: var(--en-accent);
  border: var(--en-bw) solid var(--en-line);
  background: var(--en-paper2);
  padding: 4px 8px;
}

.en-shead-title {
  font-family: var(--en-disp);
  text-transform: uppercase;
  letter-spacing: var(--en-tr-disp);
  font-weight: 400;
  font-size: var(--en-f-h2);
  line-height: var(--en-lh-h2);
  margin: 0;
}

.en-shead-blurb {
  margin: 0 0 3px auto;
  font-family: var(--en-body);
  font-size: 13px;
  line-height: var(--en-lh-body);
  color: var(--en-ink2);
  max-width: 280px;
}


/* Icon. Inherits currentColor, never its own palette. */

.en-icon {
  display: inline-block;
  vertical-align: middle;
  flex: none;
}

/* Button + IconButton. Spec 7.3 + 5.4: a key being pressed, not a spring.
   Exactly two weights: full .en-btn (shadow 6) and .en-btn--mini (shadow 3).
   Press: rest -> hover lift (+2/-2, shadow up 2) -> active sink (+3/+3,
   shadow down 4). 80ms ease, both transform and box-shadow. */

.en-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-13);
  font-weight: 700;
  letter-spacing: var(--en-tr-mono);
  text-transform: uppercase;
  line-height: 1;
  color: var(--en-paper);
  background: var(--en-accent);
  border: var(--en-bw) solid var(--en-line);
  border-radius: var(--en-r);
  padding: 13px 18px;
  box-shadow: var(--en-sh-6);
  cursor: pointer;
  white-space: nowrap;
  transition:
    transform var(--en-d-press) var(--en-ease-ui),
    box-shadow var(--en-d-press) var(--en-ease-ui);
}

.en-btn--ghost {
  color: var(--en-ink);
  background: var(--en-paper2);
}

.en-btn--on {
  color: var(--en-paper);
  background: var(--en-accent);
}

.en-btn--mini {
  padding: 7px 11px;
  font-size: var(--en-f-mono-11);
  box-shadow: var(--en-sh-3);
}

.en-btn--icon {
  padding: 12px;
}

.en-btn--icon.en-btn--mini {
  padding: 8px;
}

.en-btn:hover:not(:disabled) {
  transform: translate(-2px, -2px);
  box-shadow: var(--en-sh-8);
}

.en-btn:active:not(:disabled) {
  transform: translate(3px, 3px);
  box-shadow: var(--en-sh-2);
}

.en-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.en-btn:focus-visible {
  outline: var(--en-bw) solid var(--en-accent);
  outline-offset: 2px;
}

.en-btn-ic {
  display: inline-flex;
  align-items: center;
}

/* Field: label / control / hint / error. The mono label is the tab on the
   form ticket; the error is the red stamp. */

.en-field {
  display: grid;
  gap: 7px;
  align-content: start;
}

.en-field-label {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  font-weight: 700;
  letter-spacing: var(--en-tr-mono);
  text-transform: uppercase;
  color: var(--en-ink);
}

.en-field-hint {
  margin: 0;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  line-height: var(--en-lh-body);
  color: var(--en-ink2);
}

.en-field-error {
  margin: 0;
  display: flex;
  align-items: center;
  gap: 6px;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  font-weight: 700;
  letter-spacing: var(--en-tr-mono);
  text-transform: uppercase;
  color: var(--en-accent);
}

/* Input + Textarea ground. paper2 well, 2px line, mono. The control is a
   slot cut in the sheet; error re-inks the slot border in accent. */

.en-input {
  display: block;
  width: 100%;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-13);
  line-height: var(--en-lh-body);
  color: var(--en-ink);
  background: var(--en-paper2);
  border: var(--en-bw) solid var(--en-line);
  border-radius: var(--en-r);
  padding: 10px 12px;
}

.en-input::placeholder {
  color: var(--en-ink2);
}

.en-input:focus {
  outline: var(--en-bw) solid var(--en-accent);
  outline-offset: 2px;
}

.en-input--error {
  border-color: var(--en-accent);
}

textarea.en-input {
  min-height: 96px;
  resize: vertical;
}

/* Select: native control in a square slot, custom chevron riding the right
   edge. appearance:none, the chevron is ours, the dropdown stays the
   platform's. */

.en-select-wrap {
  position: relative;
  display: block;
}

.en-select {
  appearance: none;
  cursor: pointer;
  padding-right: 38px;
}

.en-select-ic {
  position: absolute;
  top: 50%;
  right: 12px;
  transform: translateY(-50%);
  display: inline-flex;
  color: var(--en-ink);
  pointer-events: none;
}

/* Checkbox + Radio. The native input stays in the tree, invisible but
   focusable; the box it drives is an 18px square slot. Checked re-inks the
   slot in accent. Focus draws the accent outline on the box, not the input. */

.en-check,
.en-radio {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  font-weight: 700;
  letter-spacing: var(--en-tr-mono);
  text-transform: uppercase;
  color: var(--en-ink);
  user-select: none;
}

.en-check input,
.en-radio input {
  position: absolute;
  width: 18px;
  height: 18px;
  margin: 0;
  opacity: 0;
  cursor: inherit;
}

.en-check-box,
.en-radio-box {
  display: grid;
  place-items: center;
  width: 18px;
  height: 18px;
  flex: none;
  color: var(--en-paper);
  background: var(--en-paper2);
  border: var(--en-bw) solid var(--en-line);
  border-radius: var(--en-r);
}

.en-check-box svg {
  opacity: 0;
}

.en-radio-dot {
  width: 8px;
  height: 8px;
  background: var(--en-paper);
  opacity: 0;
}

.en-check input:checked + .en-check-box,
.en-radio input:checked + .en-radio-box {
  background: var(--en-accent);
}

.en-check input:checked + .en-check-box svg,
.en-radio input:checked + .en-radio-box .en-radio-dot {
  opacity: 1;
}

.en-check input:focus-visible + .en-check-box,
.en-radio input:focus-visible + .en-radio-box {
  outline: var(--en-bw) solid var(--en-accent);
  outline-offset: 2px;
}

.en-check:has(input:disabled),
.en-radio:has(input:disabled) {
  opacity: 0.45;
  cursor: not-allowed;
}

/* Switch: a dead-man's lever. 2px track, square thumb, 80ms travel. The
   track floods with accent when on. */

.en-switch {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  font-weight: 700;
  letter-spacing: var(--en-tr-mono);
  text-transform: uppercase;
  color: var(--en-ink);
  user-select: none;
}

.en-switch input {
  position: absolute;
  width: 34px;
  height: 18px;
  margin: 0;
  opacity: 0;
  cursor: inherit;
}

.en-switch-track {
  position: relative;
  flex: none;
  width: 34px;
  height: 18px;
  background: var(--en-paper2);
  border: var(--en-bw) solid var(--en-line);
  border-radius: var(--en-r);
}

.en-switch-thumb {
  position: absolute;
  top: 2px;
  left: 2px;
  width: 10px;
  height: 10px;
  background: var(--en-paper);
  border: var(--en-bw) solid var(--en-line);
  transition: transform var(--en-d-press) var(--en-ease-ui);
}

.en-switch input:checked + .en-switch-track {
  background: var(--en-accent);
}

.en-switch input:checked + .en-switch-track .en-switch-thumb {
  transform: translateX(16px);
}

.en-switch input:focus-visible + .en-switch-track {
  outline: var(--en-bw) solid var(--en-accent);
  outline-offset: 2px;
}

.en-switch:has(input:disabled) {
  opacity: 0.45;
  cursor: not-allowed;
}

/* Slider: 2px ink groove, 14px square thumb with the small hard shadow.
   The accent fills the travelled track (Firefox natively; webkit keeps the
   plain groove, the thumb carries the state). */

.en-slider {
  appearance: none;
  -webkit-appearance: none;
  display: block;
  width: 100%;
  height: 20px;
  margin: 0;
  background: transparent;
  cursor: pointer;
}

.en-slider::-webkit-slider-runnable-track {
  height: 2px;
  background: var(--en-line);
}

.en-slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 14px;
  height: 14px;
  margin-top: -6px;
  background: var(--en-paper);
  border: var(--en-bw) solid var(--en-line);
  border-radius: var(--en-r);
  box-shadow: var(--en-sh-2);
}

.en-slider::-moz-range-track {
  height: 2px;
  background: var(--en-line);
}

.en-slider::-moz-range-progress {
  height: 2px;
  background: var(--en-accent);
}

.en-slider::-moz-range-thumb {
  width: 14px;
  height: 14px;
  background: var(--en-paper);
  border: var(--en-bw) solid var(--en-line);
  border-radius: var(--en-r);
  box-shadow: var(--en-sh-2);
}

.en-slider:focus {
  outline: var(--en-bw) solid var(--en-accent);
  outline-offset: 4px;
}

.en-slider:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

/* Kbd. The one sanctioned 1.5px line in the house (spec 5.1). */

.en-kbd {
  display: inline-flex;
  align-items: center;
  font-family: var(--en-mono);
  font-size: var(--en-f-mono-10);
  letter-spacing: var(--en-tr-mono);
  text-transform: uppercase;
  color: var(--en-ink);
  background: var(--en-paper2);
  border: var(--en-bw-thin) solid var(--en-line);
  border-radius: var(--en-r);
  padding: 1px 6px;
  white-space: nowrap;
}

/* Chip, design 7.1. 2px border on paper2, mono 11px uppercase, 8px dot.
   A live dot blinks 1.1s steps(1) down to opacity .15. */

.en-chip {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: var(--en-p-chip);
  background: var(--en-paper2);
  border: var(--en-bw) solid var(--en-line);
  border-radius: var(--en-r);
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  letter-spacing: var(--en-tr-mono);
  text-transform: uppercase;
  color: var(--en-ink);
  white-space: nowrap;
}

.en-chip-dot {
  width: 8px;
  height: 8px;
  flex: none;
  background: var(--en-accent);
}

.en-chip-dot-accent {
  background: var(--en-accent);
}

.en-chip-dot-blue {
  background: var(--en-blue);
}

.en-chip-dot-green {
  background: var(--en-green);
}

@keyframes en-blink {
  50% {
    opacity: 0.15;
  }
}

.en-chip-dot.live {
  animation: en-blink 1.1s steps(1) infinite;
}

/* Code. Inline = paper2 well, mono. Block = 2px frame, mono 12.5px,
   hard shadow, horizontal scroll. Token colours come from design 8.5
   (.tok-k/.tok-s/.tok-v/.tok-c). */

.en-code {
  display: inline;
  padding: 1px 6px;
  background: var(--en-paper2);
  border: var(--en-bw) solid var(--en-line);
  border-radius: var(--en-r);
  font-family: var(--en-mono);
  font-size: var(--en-f-mono-12);
  color: var(--en-ink);
  white-space: nowrap;
}

.en-code-block {
  display: block;
  padding: var(--en-p-board);
  background: var(--en-code-bg);
  border: var(--en-bw) solid var(--en-line);
  border-radius: var(--en-r);
  box-shadow: var(--en-sh-8);
  overflow-x: auto;
  line-height: var(--en-lh-mono);
  color: var(--en-code-1);
}

.en-code-block code {
  display: block;
  font-family: var(--en-mono);
  font-size: var(--en-f-code);
  line-height: var(--en-lh-mono);
  color: var(--en-code-1);
  white-space: pre;
}

/* Stat card, design 7.2. 2px border on paper2, shadow 6, 16px 14px pad.
   Anton value at the stat step, unit 42% in accent, mono 10px label. */

.en-stat {
  padding: var(--en-p-stat);
  background: var(--en-paper2);
  border: var(--en-bw) solid var(--en-line);
  border-radius: var(--en-r);
  box-shadow: var(--en-sh-6);
}

.en-stat-v {
  font-family: var(--en-disp);
  font-size: var(--en-f-stat);
  line-height: 1;
  letter-spacing: 1px;
  color: var(--en-ink);
}

.en-stat-unit {
  font-size: 0.42em;
  letter-spacing: 1px;
  color: var(--en-accent);
}

.en-stat-l {
  margin-top: 6px;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-10);
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--en-ink2);
}

/* grid: 4 columns, 12px gap, drops to 2 below 720px (design 6.6) */

.en-stat-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
}

@media (max-width: 720px) {
  .en-stat-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* KV bar, reference section 04. 56px bar on paper2 with shadow 5,
   segments fill left to right over 0.7s (design 8.1).
   Tones map to the semantic palette: accent, blue, green, gray. */

.en-kv-row {
  margin-bottom: 26px;
}

.en-kv-row:last-child {
  margin-bottom: 0;
}

.en-kv-rlab {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 8px;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--en-ink);
}

.en-kv-pill {
  padding: 2px 7px;
  background: var(--en-paper2);
  border: var(--en-bw) solid var(--en-line);
  border-radius: var(--en-r);
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  letter-spacing: 1px;
  text-transform: uppercase;
}

.en-kv-bar {
  display: flex;
  width: 100%;
  height: 56px;
  overflow: hidden;
  background: var(--en-paper2);
  border: var(--en-bw) solid var(--en-line);
  border-radius: var(--en-r);
  box-shadow: var(--en-sh-5);
}

@keyframes en-kvfill {
  from {
    transform: scaleX(0);
  }
  to {
    transform: scaleX(1);
  }
}

.en-kv-seg {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 8px;
  flex: none;
  overflow: hidden;
  color: var(--en-paper);
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-12);
  font-weight: 700;
  letter-spacing: 0.5px;
  transform-origin: left;
  animation: en-kvfill 0.7s cubic-bezier(0.2, 0.9, 0.2, 1);
}

.en-kv-seg-accent {
  background: var(--en-accent);
}

.en-kv-seg-blue {
  background: var(--en-blue);
}

.en-kv-seg-green {
  background: var(--en-green);
}

.en-kv-seg-dim {
  background: var(--en-ink2);
}

.en-kv-w {
  position: absolute;
  white-space: nowrap;
}

.en-kv-foot {
  margin-top: 8px;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  letter-spacing: 0.3px;
  color: var(--en-ink2);
}

@media (prefers-reduced-motion: reduce) {
  .en-kv-seg {
    animation: none;
  }
}

/* Description list, semantic dl. 2px frame on paper2, term column in the
   kv-label scale (mono 11px uppercase), detail in body copy. Interior
   lines are 2px collapsed, per design 5.1. */

.en-dl {
  margin: 0;
  border: var(--en-bw) solid var(--en-line);
  border-radius: var(--en-r);
  background: var(--en-paper2);
}

.en-dl-row {
  display: grid;
  grid-template-columns: 180px 1fr;
}

.en-dl-row + .en-dl-row {
  border-top: var(--en-bw) solid var(--en-line);
}

.en-dl-term {
  margin: 0;
  padding: 12px 14px;
  border-right: var(--en-bw) solid var(--en-line);
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--en-ink);
}

.en-dl-detail {
  margin: 0;
  padding: 12px 14px;
  font-family: var(--en-body);
  font-size: var(--en-f-lede);
  line-height: var(--en-lh-body);
  color: var(--en-ink2);
}

@media (max-width: 560px) {
  .en-dl-row {
    grid-template-columns: 1fr;
  }

  .en-dl-term {
    border-right: 0;
    border-bottom: var(--en-bw) solid var(--en-line);
  }
}

/* List, semantic ul/ol. 2px frame on paper2, 2px collapsed interior
   lines. Unordered rows carry the 9px accent square (the canvas bullet);
   ordered rows carry a mono two-digit number. Meta sits right-aligned in
   the instrument scale. */

.en-list {
  margin: 0;
  padding: 0;
  list-style: none;
  border: var(--en-bw) solid var(--en-line);
  border-radius: var(--en-r);
  background: var(--en-paper2);
}

.en-list-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
}

.en-list-item + .en-list-item {
  border-top: var(--en-bw) solid var(--en-line);
}

.en-list-mark {
  flex: none;
  width: 9px;
  height: 9px;
  background: var(--en-accent);
}

.en-list-num {
  flex: none;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  font-weight: 700;
  letter-spacing: 1px;
  color: var(--en-ink2);
}

.en-list-label {
  font-family: var(--en-body);
  font-size: var(--en-f-lede);
  line-height: var(--en-lh-body);
  color: var(--en-ink);
}

.en-list-meta {
  margin-left: auto;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--en-ink2);
}

/* Empty state. 2px frame on paper2, centered, no shadow: it is a
   placeholder, not an object. The square icon is the geometric marker,
   title in the step-h4 scale, body in step-body text. */

.en-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: var(--en-sp-6) var(--en-sp-5);
  background: var(--en-paper2);
  border: var(--en-bw) solid var(--en-line);
  border-radius: var(--en-r);
  text-align: center;
}

.en-empty-icon {
  color: var(--en-ink2);
  opacity: 0.6;
}

.en-empty-title {
  font-family: var(--en-ui);
  font-size: 13px;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--en-ink);
}

.en-empty-body {
  max-width: 420px;
  font-family: var(--en-body);
  font-size: var(--en-f-step-body);
  line-height: var(--en-lh-body);
  color: var(--en-ink2);
}

.en-empty-action {
  margin-top: var(--en-sp-2);
}

/* Avatar, geometric: square, 2px frame, Anton initials on a filled
   ground. Sizes step 32 / 44 (the grid cell) / 64. Tones map to the
   semantic palette; text is always paper for contrast. */

.en-avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
  font-family: var(--en-disp);
  font-weight: 400;
  letter-spacing: 1px;
  line-height: 1;
  color: var(--en-paper);
  border: var(--en-bw) solid var(--en-line);
  border-radius: var(--en-r);
}

.en-avatar-sm {
  width: 32px;
  height: 32px;
  font-size: 13px;
}

.en-avatar-md {
  width: var(--en-cell);
  height: var(--en-cell);
  font-size: var(--en-f-stepnum);
}

.en-avatar-lg {
  width: 64px;
  height: 64px;
  font-size: 26px;
}

.en-avatar-ink {
  background: var(--en-ink);
}

.en-avatar-accent {
  background: var(--en-accent);
}

.en-avatar-blue {
  background: var(--en-blue);
}

.en-avatar-green {
  background: var(--en-green);
}

/* Table, generic. Reference anatomy: 2px frame, collapsed 2px interior
   borders, ink ground header in mono step scale, body in the step body
   scale, shadow 8. Density sm tightens padding and steps the body scale
   down. The sort control is a plain button carrying the mono header
   style; the chevron fades when unsorted and flips for ascending. */

.en-tbl {
  overflow-x: auto;
}

.en-tbl table {
  width: 100%;
  border-collapse: collapse;
  border: var(--en-bw) solid var(--en-line);
  background: var(--en-paper2);
  box-shadow: var(--en-sh-8);
}

.en-tbl caption {
  caption-side: top;
  writing-mode: initial;
  text-align: left;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--en-ink2);
  padding: 0 0 10px;
}

.en-tbl th,
.en-tbl td {
  border: var(--en-bw) solid var(--en-line);
  padding: 12px 14px;
  text-align: left;
  vertical-align: top;
}

.en-tbl thead th {
  background: var(--en-ink);
  color: var(--en-paper);
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  font-weight: 400;
  letter-spacing: 1px;
  text-transform: uppercase;
}

.en-tbl td {
  font-family: var(--en-ui);
  font-size: var(--en-f-step-body);
  line-height: var(--en-lh-body);
  color: var(--en-ink);
}

.en-tbl-right {
  text-align: right;
}

.en-tbl-sm th,
.en-tbl-sm td {
  padding: 7px 10px;
}

.en-tbl-sm td {
  font-size: var(--en-f-code);
}

.en-tbl-sortbtn {
  display: flex;
  align-items: center;
  gap: 6px;
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  color: inherit;
  cursor: pointer;
}

.en-tbl-sortbtn:hover {
  color: var(--en-accent);
}

.en-tbl-sortbtn:focus-visible {
  outline: var(--en-bw) solid var(--en-accent);
  outline-offset: 3px;
}

.en-tbl-sorticon {
  opacity: 0.35;
}

.en-tbl-sorticon[data-dir="asc"] {
  opacity: 1;
  transform: rotate(180deg);
}

.en-tbl-sorticon[data-dir="desc"] {
  opacity: 1;
}

/* Risk table. Same 2px collapse grammar as Table, but the first cell
   pairs a mono uppercase mode name with a severity pill: hi sits on
   the accent, mid on amber, lo on green, all paper text. */

.en-risk {
  overflow-x: auto;
}

.en-risk table {
  width: 100%;
  border-collapse: collapse;
  border: var(--en-bw) solid var(--en-line);
  background: var(--en-paper2);
  box-shadow: var(--en-sh-8);
}

.en-risk th,
.en-risk td {
  border: var(--en-bw) solid var(--en-line);
  padding: 12px 14px;
  text-align: left;
  vertical-align: top;
  font-family: var(--en-ui);
  font-size: var(--en-f-step-body);
  line-height: var(--en-lh-body);
  color: var(--en-ink);
}

.en-risk thead th {
  background: var(--en-ink);
  color: var(--en-paper);
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  font-weight: 400;
  letter-spacing: 1px;
  text-transform: uppercase;
}

.en-risk td b {
  display: block;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-13);
  font-weight: 700;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--en-ink);
}

.en-risk-sev {
  display: inline-block;
  margin-top: 8px;
  padding: 3px 7px;
  border: var(--en-bw) solid var(--en-line);
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-10);
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--en-paper);
}

.en-risk-sev-hi {
  background: var(--en-accent);
}

.en-risk-sev-mid {
  background: var(--en-amber);
}

.en-risk-sev-lo {
  background: var(--en-green);
}

/* Source cards. Two columns to 720px, one below. Card: 2px frame on
   paper2, shadow 4. The link keeps the house underline; the note sits
   in the board scale. */

.en-srcs {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}

.en-srcs-1 {
  grid-template-columns: 1fr;
}

@media (max-width: 720px) {
  .en-srcs {
    grid-template-columns: 1fr;
  }
}

.en-src {
  border: var(--en-bw) solid var(--en-line);
  background: var(--en-paper2);
  padding: 12px 14px;
  box-shadow: var(--en-sh-4);
}

.en-src p {
  margin: 6px 0 0;
  font-family: var(--en-body);
  font-size: var(--en-f-code);
  line-height: var(--en-lh-body);
  color: var(--en-ink2);
}

/* Timeline. Semantic ol, 2px rule down the left, one 13px node per
   entry. done sits on green, active on the accent, todo stays a plain
   paper2 square. Node sizes sit on the 13px column with the rule
   centred behind them. */

.en-tl {
  margin: 0;
  padding: 0;
  list-style: none;
}

.en-tl-item {
  position: relative;
  display: grid;
  grid-template-columns: 13px 1fr;
  column-gap: 14px;
  padding-bottom: var(--en-sp-4);
}

.en-tl-item:last-child {
  padding-bottom: 0;
}

.en-tl-item::before {
  content: "";
  position: absolute;
  left: 5px;
  top: 13px;
  bottom: 0;
  width: 2px;
  background: var(--en-line);
}

.en-tl-item:last-child::before {
  display: none;
}

.en-tl-node {
  width: 13px;
  height: 13px;
  margin-top: 2px;
  background: var(--en-paper2);
  border: var(--en-bw) solid var(--en-ink2);
}

.en-tl-done .en-tl-node {
  background: var(--en-green);
  border-color: var(--en-green);
}

.en-tl-active .en-tl-node {
  background: var(--en-accent);
  border-color: var(--en-accent);
}

.en-tl-head {
  display: flex;
  align-items: baseline;
  gap: 10px;
}

.en-tl-title {
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-13);
  font-weight: 700;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--en-ink);
}

.en-tl-time {
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  letter-spacing: 1px;
  color: var(--en-ink2);
}

.en-tl-text {
  margin-top: 4px;
  max-width: 560px;
  font-family: var(--en-body);
  font-size: var(--en-f-step-body);
  line-height: var(--en-lh-body);
  color: var(--en-ink2);
}

/* Code block. The inverted-ink ground of P2 Code, promoted to a figure
   with a mono caption. CodeMark paints board syntax marks: section on
   the accent, owner on sky, state on mint, task on yellow, dim for
   comments. The ground is ink in both themes, so the sky/mint/yellow
   marks keep the light reference constants regardless of theme; only
   dim follows the tokens. */

.en-codeblock {
  margin: 0;
}

.en-codeblock pre {
  margin: 0;
  padding: var(--en-p-board);
  background: var(--en-code-bg);
  border: var(--en-bw) solid var(--en-line);
  border-radius: var(--en-r);
  box-shadow: var(--en-sh-8);
  overflow-x: auto;
  color: var(--en-code-1);
}

.en-codeblock code {
  display: block;
  font-family: var(--en-mono);
  font-size: var(--en-f-code);
  line-height: var(--en-lh-mono);
  white-space: pre;
  color: var(--en-code-1);
}

.en-codeblock-cap {
  margin-top: 10px;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--en-ink2);
}

.en-cm-accent {
  color: var(--en-accent);
}

.en-cm-sky {
  color: #8fd1ff;
}

.en-cm-mint {
  color: #9be0b6;
}

.en-cm-yellow {
  color: #ffd873;
}

.en-cm-dim {
  color: var(--en-code-dim);
}

/* Card, design 6.5 canvas anatomy. Paper2 title bar with a 9px accent
   square, 2px bottom border under the bar, then the body well. Shadow 8.
   The canvas ships its SVG body at 6px; the card carries text, so the
   body well gets the 12px step instead (interior audit 2026-08-22). */

/* cards sit in auto-fit grids; let the track shrink below the card's
   min-content so inner figures scroll instead of widening the page. */
.en-card {
  min-width: 0;
  background: var(--en-paper);
  border: var(--en-bw) solid var(--en-line);
  border-radius: var(--en-r);
  box-shadow: var(--en-sh-8);
}

.en-card-hd {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: var(--en-p-bar);
  background: var(--en-paper2);
  border-bottom: var(--en-bw) solid var(--en-line);
}

.en-card-dot {
  width: 9px;
  height: 9px;
  flex: none;
  background: var(--en-accent);
}

.en-card-title {
  margin: 0;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  font-weight: 700;
  letter-spacing: var(--en-tr-mono);
  text-transform: uppercase;
  color: var(--en-ink);
}

.en-card-action {
  margin-left: auto;
}

.en-card-body {
  padding: var(--en-sp-3);
  color: var(--en-ink);
}

/* Divider: 2px solid, the house line weight. */

.en-divider {
  width: 100%;
  height: var(--en-bw);
  margin: var(--en-sp-4) 0;
  border: 0;
  background: var(--en-line);
}

/* Link. UI sans 12px uppercase, 2px underline offset. Hover moves the
   word to the accent. Focus-visible uses the shared house outline. */

.en-link {
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-12);
  text-transform: uppercase;
  letter-spacing: 0.02em;
  color: var(--en-ink);
  text-decoration: underline;
  text-decoration-thickness: var(--en-bw);
  text-underline-offset: 3px;
  transition: color var(--en-d-quick) var(--en-ease-ui);
}

.en-link:hover {
  color: var(--en-accent);
}

/* Socials: row of compact brand-mark icon buttons.
   2px house rule around each 26px box; hover inverts to ink. */

.en-socials {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.en-socials-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border: var(--en-bw) solid var(--en-line);
  color: var(--en-ink);
  transition:
    background var(--en-d-quick) var(--en-ease-ui),
    color var(--en-d-quick) var(--en-ease-ui);
}

.en-socials-link:hover {
  background: var(--en-ink);
  color: var(--en-paper);
}

/* ThemeSwitch: icon-only [sun][moon] segments. Same house rule as
   ThemeToggle, no text. The active segment inverts to ink. */

.en-theme-switch {
  display: inline-flex;
  align-items: stretch;
  border: var(--en-bw) solid var(--en-line);
}

.en-theme-switch button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 26px;
  padding: 0;
  border: 0;
  cursor: pointer;
  background: transparent;
  color: var(--en-ink);
  transition:
    background var(--en-d-quick) var(--en-ease-ui),
    color var(--en-d-quick) var(--en-ease-ui);
}

.en-theme-switch button[aria-pressed="true"] {
  background: var(--en-ink);
  color: var(--en-paper);
}

/* Breadcrumbs. Mono 11px uppercase path, house link style on the middle
   crumbs, last crumb is solid ink. The separator is a printed slash in
   ink2, never a box. */

.en-crumbs ol {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.en-crumbs li {
  display: flex;
  align-items: baseline;
  gap: 6px;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  text-transform: uppercase;
  color: var(--en-ink2);
}

.en-crumbs li + li::before {
  content: "/";
  color: var(--en-ink2);
}

.en-crumbs a {
  color: inherit;
  text-decoration: underline;
  text-decoration-thickness: var(--en-bw);
  text-underline-offset: 3px;
  transition: color var(--en-d-quick) var(--en-ease-ui);
}

.en-crumbs a:hover {
  color: var(--en-accent);
}

.en-crumbs li[aria-current="page"] {
  color: var(--en-ink);
  font-weight: 700;
}

/* Pagination. Square mono keys, like the rail. The active page is the lit
   toggle: accent ground, paper text, hard shadow 4. */

.en-pagi ul {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.en-pagi-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 34px;
  height: 34px;
  padding: 0 8px;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-12);
  color: var(--en-ink);
  background: var(--en-paper);
  border: var(--en-bw) solid var(--en-ink);
  cursor: pointer;
  transition:
    transform var(--en-d-quick) var(--en-ease-ui),
    background var(--en-d-quick) var(--en-ease-ui),
    color var(--en-d-quick) var(--en-ease-ui);
}

.en-pagi-btn:hover:not(:disabled) {
  background: var(--en-paper2);
}

.en-pagi-btn:active:not(:disabled) {
  transform: translate(2px, 2px);
}

.en-pagi-btn:disabled {
  color: var(--en-ink2);
  opacity: 0.4;
  cursor: not-allowed;
}

.en-pagi-btn[aria-current="page"] {
  background: var(--en-accent);
  color: var(--en-paper);
  box-shadow: var(--en-sh-4);
}

.en-pagi-ellipsis {
  padding: 0 2px;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-12);
  color: var(--en-ink2);
}

/* Runbook step (design 7.5). Grid 64px 1fr. Left: ink ground, Anton
   number, 2px right border. Right: mono title, 14px body, code box on
   paper ground. Below 560px the band rotates to a top band. */

.en-steps {
  display: grid;
  gap: var(--en-sp-4);
  margin: 0;
  padding: 0;
  list-style: none;
}

.en-step {
  display: grid;
  grid-template-columns: 64px 1fr;
}

.en-step-num {
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--en-ink);
  color: var(--en-paper);
  border-right: var(--en-bw) solid var(--en-ink);
  font-family: var(--en-disp);
  font-size: var(--en-f-stepnum);
  letter-spacing: 0.02em;
}

.en-step-body {
  min-width: 0;
  background: var(--en-paper);
  border: var(--en-bw) solid var(--en-ink);
  border-left: 0;
}

.en-step-title {
  margin: 0;
  padding: 12px 14px 0;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-13);
  text-transform: uppercase;
  color: var(--en-ink);
}

.en-step-text {
  padding: 8px 14px 0;
  font-family: var(--en-body);
  font-size: var(--en-f-step-body);
  line-height: var(--en-lh-body);
  color: var(--en-ink2);
}

.en-step-text > :first-child {
  margin-top: 0;
}

.en-step-text > :last-child {
  margin-bottom: 0;
}

/* ink ground: the CodeMark tones are tuned for dark (B-1) */
.en-step-code {
  margin: 10px 14px 14px;
  padding: 10px 12px;
  overflow-x: auto;
  background: var(--en-ink);
  border: var(--en-bw) solid var(--en-ink);
  font-family: var(--en-mono);
  font-size: 11.5px;
  line-height: var(--en-lh-mono);
  color: var(--en-code-1);
}

@media (max-width: 560px) {
  .en-step {
    grid-template-columns: 1fr;
  }

  .en-step-num {
    padding: 10px 0;
    border-right: 0;
    border-bottom: var(--en-bw) solid var(--en-ink);
  }

  .en-step-body {
    border-left: var(--en-bw) solid var(--en-ink);
  }
}

/* Spinner: a square rotating in 45-degree steps. Digital, not silky. */

@keyframes en-spin-steps {
  to {
    transform: rotate(360deg);
  }
}

.en-spinner {
  display: inline-block;
  flex: none;
  background: var(--en-paper2);
  border: 2px solid var(--en-line);
  border-top-color: var(--en-accent);
  border-right-color: var(--en-accent);
  border-radius: var(--en-r);
  animation: en-spin-steps 1s steps(8) infinite;
}

/* Skeleton: a paper2 block on the 2px frame, pulsing with steps(1).
   No shimmer gradients; the house only runs in whole steps. */

@keyframes en-skel-pulse {
  50% {
    opacity: 0.45;
  }
}

.en-skeleton {
  display: block;
  background: var(--en-paper2);
  border: var(--en-bw) solid var(--en-line);
  border-radius: var(--en-r);
  animation: en-skel-pulse 1.1s steps(1) infinite;
}

/* Tooltip, design 7.9. Ink ground, paper text, 2px border, mono 11 at
   1.6 leading, max 230px, hard shadow, z 80. Optional accent title line.
   Enters with opacity 0 / translateY(4px) over 0.12s. Fixed positioning
   driven by the cursor or the target rect. */

.en-tip-wrap {
  display: inline-flex;
  position: relative;
}

@keyframes en-tip-in {
  from {
    opacity: 0;
    transform: translateY(4px);
  }
}

.en-tip {
  position: fixed;
  z-index: var(--en-z-tip);
  pointer-events: none;
  padding: 10px 12px;
  background: var(--en-ink);
  color: var(--en-paper);
  border: var(--en-bw) solid var(--en-line);
  border-radius: var(--en-r);
  box-shadow: 5px 5px 0 rgba(0, 0, 0, 0.35);
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  line-height: 1.6;
  letter-spacing: var(--en-tr-mono);
  max-width: 230px;
  animation: en-tip-in var(--en-d-tooltip) var(--en-ease-ui) both;
}

.en-tip-t {
  display: block;
  margin-bottom: 4px;
  font-weight: 700;
  text-transform: uppercase;
  color: var(--en-accent);
}

/* Topbar (design 6.1). Fixed 37px strip. The bottom edge is the house
   rule: inset 0 -2px 0 line. Left carries brand + nav, right the actions.
   Consumers pad their page 37px so content clears the bar. */

.en-topbar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  display: flex;
  align-items: stretch;
  height: var(--en-topbar-h);
  background: var(--en-paper);
  box-shadow: inset 0 -2px 0 var(--en-line);
  z-index: var(--en-z-topbar);
}

.en-topbar-main {
  display: flex;
  flex: 1;
  align-items: center;
  gap: 18px;
  min-width: 0;
  overflow: hidden;
  padding: 0 14px;
}

/* Brand: display face, set apart from the nav. */
.en-topbar-brand .en-link {
  font-family: var(--en-disp);
  font-size: 16px;
  letter-spacing: 0.03em;
  color: var(--en-ink);
  text-decoration: none;
  white-space: nowrap;
}
.en-topbar-brand .en-link:hover {
  color: var(--en-accent);
}

/* Thin vertical rule between brand and nav. */
.en-topbar-div {
  flex: none;
  width: 2px;
  height: 18px;
  background: var(--en-line);
}

/* Nav: compact mono links, no underline, hover warms to accent. */
.en-topbar-nav {
  display: inline-flex;
  align-items: center;
  gap: 18px;
  min-width: 0;
}
.en-topbar-nav .en-link {
  font-size: var(--en-f-mono-11);
  text-decoration: none;
  white-space: nowrap;
}

/* Trailing cluster (socials, theme switch): pushed right. */
.en-topbar-actions {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-left: auto;
  flex: none;
}

/* Narrow screens: keep everything, compact it. */
@media (max-width: 720px) {
  .en-topbar-main {
    gap: 10px;
    padding: 0 10px;
  }
  .en-topbar-brand .en-link {
    font-size: 14px;
  }
  .en-topbar-div {
    display: none;
  }
  .en-topbar-nav {
    gap: 12px;
  }
  .en-topbar-nav .en-link {
    font-size: var(--en-f-mono-10);
  }
  .en-topbar-actions {
    gap: 8px;
  }
  .en-topbar-actions .en-socials-link {
    width: 22px;
    height: 22px;
  }
  .en-topbar-actions .en-theme-switch button {
    width: 24px;
    height: 22px;
  }
}

/* Marquee (design 6.1). Ink ticker strip. The track holds two identical
   halves separated by padding, so translateX(-50%) (the en-marquee keyframe
   in base/motion.css) loops without a seam. */

.en-marquee {
  display: flex;
  align-items: center;
  overflow: hidden;
  min-width: 0;
  background: var(--en-ink);
  color: var(--en-paper);
}

.en-marquee .en-marquee-track {
  gap: 0;
}

.en-mq-half {
  display: inline-flex;
  align-items: center;
  padding-right: 48px;
}

.en-mq-clone {
  display: contents;
}

.en-mq-item {
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-12);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 0 24px;
  white-space: nowrap;
}

.en-mq-sep {
  color: var(--en-accent);
  padding-left: 24px;
}

/* Scroll progress (design 6.2). A 3px accent line just under the topbar.
   Width tracks the scroll ratio; transform origin stays left. */

.en-scroll-progress {
  position: fixed;
  top: var(--en-topbar-h);
  left: 0;
  height: var(--en-prog-h);
  background: var(--en-accent);
  z-index: var(--en-z-prog);
}

/* Anchor rail (design 6.3). Fixed 220px left column under the topbar.
   Brand on top, numbered section links in the middle, meta pinned to the
   bottom via margin-top: auto. Active link is accent ground with paper
   text (the inverted state), shadow 4. Hidden under 960px. */

.en-rail {
  position: fixed;
  top: var(--en-topbar-h);
  left: 0;
  bottom: 0;
  display: flex;
  flex-direction: column;
  gap: 20px;
  width: var(--en-rail-w);
  padding: 20px 12px 14px;
  background: var(--en-paper);
  border-right: 2px solid var(--en-line);
  z-index: var(--en-z-rail);
}

.en-rail-brand {
  padding: 0 8px;
}

.en-rail-wordmark {
  font-family: var(--en-disp);
  font-size: var(--en-f-brand);
  line-height: 0.95;
  text-transform: uppercase;
}

.en-rail-hot {
  display: block;
  color: var(--en-accent);
}

.en-rail-tag {
  margin-top: 8px;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-10);
  color: var(--en-ink2);
  line-height: 1.6;
}

.en-rail-list {
  display: grid;
  gap: 4px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.en-rail-link {
  display: flex;
  align-items: baseline;
  gap: 8px;
  padding: 6px 8px;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-12);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--en-ink);
  text-decoration: none;
  border: 2px solid transparent;
  transition:
    background-color var(--en-d-quick) var(--en-ease-ui),
    color var(--en-d-quick) var(--en-ease-ui),
    border-color var(--en-d-quick) var(--en-ease-ui),
    box-shadow var(--en-d-quick) var(--en-ease-ui);
}

.en-rail-link-num {
  color: var(--en-ink2);
}

.en-rail-link:hover {
  background: var(--en-paper2);
  border-color: var(--en-line);
}

.en-rail-link.is-active {
  background: var(--en-accent);
  color: var(--en-paper);
  border-color: var(--en-ink);
  box-shadow: var(--en-sh-4);
}

.en-rail-link.is-active .en-rail-link-num {
  color: var(--en-paper);
}

.en-rail-foot {
  margin-top: auto;
  padding: 0 8px;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-10);
  color: var(--en-ink2);
  line-height: 1.7;
}

@media (max-width: 960px) {
  .en-rail {
    display: none;
  }
}

/* Tabs + panels, design 7.4. Tabs sit on the panel, tab border-bottom is 0,
   so the active tab's side borders meet the panel's 2px border. Inactive
   tabs: paper2 ground, ink2 mono 12 bold upper. Active: ink ground, paper
   text. Panel: 2px border, paper2, shadow 8, display none until active.
   Panel head: paper strip, 2px bottom border, mono 11, 9px square. */

.en-tabs {
  min-width: min(320px, 100%);
}

.en-tablist {
  display: flex;
  align-items: flex-end;
  overflow-x: auto;
  background: var(--en-paper2);
  border: var(--en-bw) solid var(--en-line);
  border-bottom: 0;
}

.en-tab {
  appearance: none;
  margin: 0;
  padding: 8px 16px;
  border: 0;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-12);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  background: var(--en-paper2);
  color: var(--en-ink2);
  cursor: pointer;
  transition:
    background-color var(--en-d-quick) var(--en-ease-ui),
    color var(--en-d-quick) var(--en-ease-ui);
}

.en-tab + .en-tab {
  border-left: var(--en-bw) solid var(--en-line);
}

[data-state="active"].en-tab {
  background: var(--en-ink);
  color: var(--en-paper);
}

.en-tabpanel {
  display: none;
  border: var(--en-bw) solid var(--en-line);
  background: var(--en-paper2);
  box-shadow: var(--en-sh-8);
}

[data-state="active"].en-tabpanel {
  display: block;
}

.en-tabpanel-head {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  background: var(--en-paper);
  border-bottom: var(--en-bw) solid var(--en-line);
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.en-tabpanel-square {
  width: 9px;
  height: 9px;
  background: var(--en-accent);
}

.en-tabpanel-square.is-blue {
  background: var(--en-blue);
}

.en-tabpanel-square.is-green {
  background: var(--en-green);
}

.en-tabpanel-body {
  padding: 14px 16px;
}

/* Dialog (house overlay spec). A centered panel over a dimmed page:
   paper ground, 2px border, shadow 8, no radius. Entrance is the reveal
   easing at .18s; exit is a fast .1s drop. Both die under reduced motion
   via the global class-prefix rule in reset.css (the Radix portal renders
   outside any data-enoki tree, so the rule keys on the en- classes). */

.en-overlay {
  position: fixed;
  inset: 0;
  background: color-mix(in srgb, var(--en-ink) 62%, transparent);
  z-index: var(--en-z-overlay);
  animation: en-fade 0.12s var(--en-ease-ui);
}

.en-dialog {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: min(560px, calc(100vw - 48px));
  max-height: calc(100vh - 96px);
  overflow: auto;
  background: var(--en-paper);
  border: var(--en-bw) solid var(--en-line);
  box-shadow: var(--en-sh-8);
  z-index: calc(var(--en-z-overlay) + 1);
  animation: en-dialog-in 0.18s var(--en-ease-out);
}

[data-state="closing"].en-dialog {
  animation: en-dialog-out 0.1s var(--en-ease-ui) forwards;
}

.en-dialog-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 16px;
  background: var(--en-paper2);
  border-bottom: var(--en-bw) solid var(--en-line);
}

.en-dialog-title {
  margin: 0;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-14);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.en-dialog-body {
  padding: 16px;
}

.en-dialog-foot {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding: 12px 16px;
  border-top: var(--en-bw) solid var(--en-line);
  background: var(--en-paper2);
}

/* Drawer: a full-height sheet pinned to a side edge. Same house shell as
   the dialog (paper ground, 2px border, shadow 8) but it slides in from the
   edge with the reveal easing at .2s. Right is the default. The shadow
   throws away from the page, so its direction flips with the side. */

.en-drawer {
  position: fixed;
  top: 0;
  bottom: 0;
  width: min(420px, 88vw);
  overflow: auto;
  background: var(--en-paper);
  border: var(--en-bw) solid var(--en-line);
  z-index: calc(var(--en-z-overlay) + 1);
}

.en-drawer.is-right {
  right: 0;
  border-right: 0;
  box-shadow: -8px 0 0 var(--en-sh);
  animation: en-sheet-in 0.2s var(--en-ease-out);
}

.en-drawer.is-left {
  left: 0;
  border-left: 0;
  box-shadow: 8px 0 0 var(--en-sh);
  animation: en-sheet-in-left 0.2s var(--en-ease-out);
}

[data-state="closing"].en-drawer {
  opacity: 0;
  transition: opacity 0.1s var(--en-ease-ui);
}

/* Popover content: the lightest overlay. Paper ground, 2px border, shadow
   5 (tooltip tier), mono body. No close button: it lapses on outside click
   or Escape, like the tooltip. */

.en-pop {
  z-index: calc(var(--en-z-overlay) + 1);
  width: var(--en-pop-w, 260px);
  background: var(--en-paper);
  border: var(--en-bw) solid var(--en-line);
  box-shadow: var(--en-sh-5);
  animation: en-fade 0.12s var(--en-ease-ui);
}

.en-pop-body {
  padding: 12px 14px;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-12);
  line-height: var(--en-lh-mono);
}

[data-state="closing"].en-pop {
  opacity: 0;
  transition: opacity 0.1s var(--en-ease-ui);
}

/* Menu: a command list on a paper panel. Same shell as the popover but the
   shadow tier is 5 and items are mono 12 upper with a 3px accent bar and 2px
   inset shadow when active. Separator is a 2px line. */

.en-menu {
  z-index: calc(var(--en-z-overlay) + 1);
  min-width: 220px;
  padding: 4px;
  background: var(--en-paper);
  border: var(--en-bw) solid var(--en-line);
  box-shadow: var(--en-sh-5);
  animation: en-fade 0.12s var(--en-ease-ui);
}

.en-menu-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 7px 10px;
  border-left: 3px solid transparent;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-12);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  background: transparent;
  color: var(--en-ink);
  cursor: pointer;
  transition:
    background-color var(--en-d-press) var(--en-ease-ui),
    color var(--en-d-press) var(--en-ease-ui);
}

[data-highlighted].en-menu-item {
  background: var(--en-ink);
  color: var(--en-paper);
  border-left-color: var(--en-accent);
  box-shadow: inset 2px 0 0 var(--en-line);
}

[data-disabled].en-menu-item {
  color: var(--en-ink2);
  cursor: default;
}

.en-menu-sep {
  height: 0;
  margin: 4px 2px;
  border-top: var(--en-bw) solid var(--en-line);
}

[data-state="closing"].en-menu {
  opacity: 0;
  transition: opacity 0.1s var(--en-ease-ui);
}

.en-toasts {
  position: fixed;
  right: 16px;
  bottom: 16px;
  z-index: var(--en-z-toast);
  display: flex;
  flex-direction: column;
  gap: var(--en-sp-2);
  width: min(360px, calc(100vw - 32px));
  pointer-events: none;
}

.en-toast {
  pointer-events: auto;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 10px 10px 10px 12px;
  background: var(--en-paper);
  border: 2px solid var(--en-line);
  box-shadow: var(--en-sh-5);
  animation: en-toast-in var(--en-d-quick) var(--en-ease-out);
}

.en-toast-square {
  flex: none;
  width: 9px;
  height: 9px;
  margin-top: 4px;
  background: var(--en-ink);
}

.en-toast--ok .en-toast-square {
  background: var(--en-green);
}

.en-toast--warn .en-toast-square {
  background: var(--en-amber);
}

.en-toast--err .en-toast-square {
  background: var(--en-accent);
}

.en-toast-text {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.en-toast-title {
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-12);
  font-weight: 700;
  letter-spacing: var(--en-tr-mono);
  text-transform: uppercase;
}

.en-toast-desc {
  font-family: var(--en-body);
  font-size: var(--en-f-step-body);
  line-height: var(--en-lh-body);
  color: var(--en-ink2);
  overflow-wrap: anywhere;
}

.en-toast-x {
  flex: none;
  width: 22px;
  height: 22px;
  display: grid;
  place-items: center;
  background: none;
  border: 2px solid var(--en-line);
  color: var(--en-ink);
  cursor: pointer;
  line-height: 0;
}

.en-toast-x:hover {
  background: var(--en-ink);
  color: var(--en-paper);
}

/*
 * Diagram canvas shell (design 9.1): status bar, live dot, body, hint,
 * legend, mini buttons, tooltip.
 */

.en-diagram {
  margin: 0;
  border: 2px solid var(--en-line);
  background: var(--en-paper);
  box-shadow: var(--en-sh-8);
  position: relative;
}

.en-diagram figcaption {
  display: block;
}

.en-dg-bar {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  border-bottom: 2px solid var(--en-line);
  background: var(--en-paper2);
  padding: 9px 12px;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  text-transform: uppercase;
  letter-spacing: 1px;
}

.en-dg-dot {
  width: 9px;
  height: 9px;
  background: var(--en-accent);
  animation: en-blink 1.1s steps(1) infinite;
  flex: none;
}

.en-dg-title {
  font-weight: 700;
}

.en-dg-tag {
  color: var(--en-ink2);
}

.en-dg-actions {
  margin-left: auto;
  display: flex;
  gap: 8px;
}

.en-dg-body {
  padding: 6px;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.en-dg-body svg {
  display: block;
  width: 100%;
  height: auto;
}

.en-dg-hint {
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  color: var(--en-ink2);
  margin: 0;
  padding: 10px 12px 12px;
  letter-spacing: 0.5px;
  border-top: 2px solid var(--en-line);
  background: var(--en-paper2);
}

.en-dg-hint kbd {
  border: 1.5px solid var(--en-line);
  background: var(--en-paper3);
  padding: 1px 6px;
  font-family: var(--en-mono);
  font-size: var(--en-f-mono-10);
}

/* compact in-bar button */
.en-mini {
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  border: 2px solid var(--en-line);
  background: var(--en-paper2);
  color: var(--en-ink);
  padding: 7px 11px;
  cursor: pointer;
  box-shadow: var(--en-sh-3);
  transition:
    transform 0.08s ease,
    box-shadow 0.08s ease,
    background 0.08s ease,
    color 0.08s ease;
}

.en-mini:hover {
  transform: translate(-1px, -1px);
  box-shadow: var(--en-sh-4);
}

.en-mini:active {
  transform: translate(2px, 2px);
  box-shadow: var(--en-sh-1);
}

.en-mini.on {
  background: var(--en-accent);
  color: var(--en-paper);
}

.en-mini:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

/* legend */
.en-dg-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  margin: 0;
  padding: 12px 12px 14px;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  border-top: 2px solid var(--en-line);
  background: var(--en-paper2);
}

.en-dg-leg-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.en-dg-leg-swatch {
  display: inline-block;
  width: 14px;
  height: 14px;
  border: 2px solid var(--en-line);
}

.en-dg-leg-swatch.hollow {
  border-style: dashed;
  border-color: var(--en-ink2);
}

/* tooltip */
.en-tip {
  position: fixed;
  z-index: 80;
  pointer-events: none;
  max-width: 230px;
  background: var(--en-ink);
  color: var(--en-paper);
  border: 2px solid var(--en-line);
  box-shadow: 5px 5px 0 rgba(0, 0, 0, 0.35);
  padding: 10px 12px;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-11);
  line-height: 1.6;
  text-transform: uppercase;
  letter-spacing: 0.3px;
  opacity: 0;
  transform: translateY(4px);
  transition:
    opacity 0.12s ease,
    transform 0.12s ease;
}

.en-tip.on {
  opacity: 1;
  transform: translateY(0);
}

.en-tip-title {
  color: var(--en-accent);
  font-weight: 700;
  letter-spacing: 1px;
  margin-bottom: 4px;
}

@media (prefers-reduced-motion: reduce) {
  .en-dg-dot {
    animation: none;
  }
  .en-tip {
    transition: none;
  }
}

/*
 * Shared SVG vocabulary for all diagrams (design 9.1).
 * React renders the DOM; d3 and CSS transitions own attribute animation.
 */

/* ---- graph nodes (topology) ------------------------------------------- */

.en-node {
  cursor: pointer;
}

.en-node .dg-halo {
  fill: var(--en-halo);
  opacity: 0;
  transform-box: fill-box;
  transform-origin: center;
  animation: en-breathe 4s ease-in-out infinite;
  pointer-events: none;
}

@keyframes en-breathe {
  0%,
  100% {
    opacity: 0.3;
    transform: scale(1.02);
  }
  50% {
    opacity: 0.9;
    transform: scale(1.1);
  }
}

.en-node .dg-box {
  fill: var(--en-paper2);
  stroke: var(--en-line);
  stroke-width: 2.5;
  transition: fill 0.15s ease;
}

.en-node .dg-strip[data-role="accent"] {
  fill: var(--en-accent);
}
.en-node .dg-strip[data-role="blue"] {
  fill: var(--en-blue);
}
.en-node .dg-strip[data-role="green"] {
  fill: var(--en-green);
}
.en-node .dg-strip[data-role="state"] {
  fill: var(--en-ink2);
}

.en-node .dg-cluster-dot {
  fill: var(--en-blue);
  opacity: 0.85;
  pointer-events: none;
}

.en-node .dg-lbl {
  font-family: var(--en-disp);
  font-size: 19px;
  letter-spacing: 1px;
  fill: var(--en-ink);
  text-anchor: middle;
  pointer-events: none;
}

.en-node .dg-sub {
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-9);
  letter-spacing: 0.5px;
  fill: var(--en-ink2);
  text-anchor: middle;
  text-transform: uppercase;
  pointer-events: none;
}

.en-node:hover .dg-box {
  fill: var(--en-paper3);
}

.en-node.lit .dg-box {
  fill: var(--en-accent);
}
.en-node.lit .dg-lbl,
.en-node.lit .dg-sub {
  fill: var(--en-paper);
}

/* ---- edges (topology) -------------------------------------------------- */

.en-edge {
  fill: none;
  stroke: var(--en-line);
  stroke-width: 2;
  opacity: 0.5;
  transition:
    stroke 0.15s ease,
    opacity 0.15s ease,
    stroke-width 0.15s ease;
}

.en-edge.muted {
  opacity: 0.3;
}

.en-edge.hot {
  stroke: var(--en-accent);
  opacity: 1;
  stroke-width: 3.5;
}

.en-edge.draw {
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
}

.en-diagram.in .en-edge.draw {
  stroke-dashoffset: 0;
  transition: stroke-dashoffset 1s ease 0.15s;
}

.en-elabel {
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-8);
  letter-spacing: 0.5px;
  fill: var(--en-ink2);
  text-transform: uppercase;
  paint-order: stroke;
  stroke: var(--en-paper);
  stroke-width: 3px;
  pointer-events: none;
}

/* ---- pulse dots -------------------------------------------------------- */

.en-dot-amb {
  fill: var(--en-blue);
  opacity: 0.8;
}

.en-dot-run {
  fill: var(--en-accent);
  display: none;
}

/* ---- state machine ------------------------------------------------------ */

.en-state {
  cursor: pointer;
}

.en-state rect {
  fill: var(--en-paper2);
  stroke: var(--en-line);
  stroke-width: 2.5;
  transition: fill 0.15s ease;
}

.en-state text {
  font-family: var(--en-ui);
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 1px;
  fill: var(--en-ink);
  text-anchor: middle;
  text-transform: uppercase;
  pointer-events: none;
}

.en-state:hover rect {
  fill: var(--en-accent);
}
.en-state:hover text {
  fill: var(--en-paper);
}

.en-trans {
  fill: none;
  stroke: var(--en-line);
  stroke-width: 2;
  opacity: 0.55;
  transition:
    stroke 0.15s ease,
    opacity 0.15s ease,
    stroke-width 0.15s ease;
}

.en-trans.hot {
  stroke: var(--en-accent);
  stroke-width: 3.5;
  opacity: 1;
}

.en-trans.ret {
  stroke: var(--en-accent);
  stroke-dasharray: 6 5;
  opacity: 0.9;
}

.en-trans.draw {
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
}

.en-diagram.in .en-trans.draw {
  stroke-dashoffset: 0;
  transition: stroke-dashoffset 0.7s ease 0.3s;
}

/* ---- sequence ----------------------------------------------------------- */

.en-lane-line {
  stroke: var(--en-line);
  stroke-width: 2;
  stroke-dasharray: 2 5;
  opacity: 0.5;
}

.en-lane-head rect {
  fill: var(--en-ink);
}

.en-lane-head text {
  font-family: var(--en-ui);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 1px;
  fill: var(--en-paper);
  text-anchor: middle;
  text-transform: uppercase;
}

.en-msg {
  fill: none;
  stroke: var(--en-ink);
  stroke-width: 2.5;
  stroke-dasharray: 1;
  stroke-dashoffset: 0;
}

.en-msg.ret {
  stroke: var(--en-ink2);
}

.en-msg-lbl {
  font-family: var(--en-ui);
  font-size: 11px;
  fill: var(--en-ink);
  opacity: 1;
  paint-order: stroke;
  stroke: var(--en-paper);
  stroke-width: 3px;
}

/* ---- reduced motion: everything rests in its drawn state -------------- */

@media (prefers-reduced-motion: reduce) {
  .en-node .dg-halo {
    animation: none;
    opacity: 0;
  }
  .en-edge.draw,
  .en-trans.draw {
    stroke-dashoffset: 0;
    transition: none;
  }
  .en-msg {
    stroke-dashoffset: 0;
    transition: none;
  }
  .en-msg-lbl {
    opacity: 1;
    transition: none;
  }
  .en-dot-amb {
    display: none;
  }
}

/*
 * Figure layer (premade data charts). Same law as the flagships:
 * React renders the DOM, d3 computes and writes attributes, CSS owns
 * state and the draw-in. Token palette only, via classes.
 */

/* ---- plot chrome -------------------------------------------------------- */

.fg-axis {
  stroke: var(--en-line);
  stroke-width: 2;
}

.fg-tick {
  stroke: var(--en-line);
  stroke-width: 1.5;
  opacity: 0.5;
}

.fg-tick-lbl {
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-8);
  letter-spacing: 0.5px;
  fill: var(--en-ink2);
}

.fg-axis-title {
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-9);
  letter-spacing: 1.5px;
  fill: var(--en-ink2);
  text-transform: uppercase;
}

.fg-grid {
  stroke: var(--en-grid);
  stroke-width: 1;
  pointer-events: none;
}

/* ---- role palette (theme-safe: vars, never hex in attrs) ---------------- */

.fg-c-accent {
  fill: var(--en-accent);
}
.fg-c-blue {
  fill: var(--en-blue);
}
.fg-c-green {
  fill: var(--en-green);
}
.fg-c-amber {
  fill: var(--en-amber);
}
.fg-c-ink {
  fill: var(--en-ink);
}
.fg-c-ink2 {
  fill: var(--en-ink2);
}
.fg-c-paper2 {
  fill: var(--en-paper2);
}
.fg-c-paper3 {
  fill: var(--en-paper3);
}
.fg-c-paper {
  fill: var(--en-paper);
}

.fg-s-accent {
  stroke: var(--en-accent);
}
.fg-s-blue {
  stroke: var(--en-blue);
}
.fg-s-green {
  stroke: var(--en-green);
}
.fg-s-amber {
  stroke: var(--en-amber);
}
.fg-s-ink {
  stroke: var(--en-ink);
}
.fg-s-ink2 {
  stroke: var(--en-ink2);
}
.fg-s-line {
  stroke: var(--en-line);
}
.fg-s-paper {
  stroke: var(--en-paper);
}

/* ---- labels ------------------------------------------------------------- */

/* direct value on a mark, paper halo keeps it readable over flow */
.fg-lbl-halo {
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-9);
  letter-spacing: 0.5px;
  fill: var(--en-ink);
  paint-order: stroke;
  stroke: var(--en-paper);
  stroke-width: 3px;
  text-transform: uppercase;
  pointer-events: none;
}

/* Anton is spent only on numbers that carry the story */
.fg-num {
  font-family: var(--en-disp);
  letter-spacing: 1px;
  fill: var(--en-ink);
  paint-order: stroke;
  stroke: var(--en-paper);
  stroke-width: 4px;
  text-anchor: middle;
  pointer-events: none;
}

/* ink plate: lane-head grammar applied to flowing data */
.fg-plate rect {
  fill: var(--en-ink);
  stroke: var(--en-line);
  stroke-width: 2;
}

.fg-plate text {
  font-family: var(--en-ui);
  font-weight: 700;
  font-size: 10px;
  letter-spacing: 1px;
  fill: var(--en-paper);
  text-anchor: middle;
  text-transform: uppercase;
  pointer-events: none;
}

.fg-plate .fg-plate-sub {
  font-size: 8.5px;
  font-weight: 400;
  opacity: 0.7;
}

/* ---- draw-in (fired by the canvas .in class) ---------------------------- */

.fg-draw {
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  transition: stroke-dashoffset 0.9s ease var(--d, 0s);
}

.en-diagram.in .fg-draw {
  stroke-dashoffset: 0;
}

/* ---- halo (one per figure, behind the hero mark) ------------------------ */

.fg-halo {
  fill: var(--en-halo);
  opacity: 0;
  transform-box: fill-box;
  transform-origin: center;
  animation: en-breathe 4s ease-in-out infinite;
  pointer-events: none;
}

/* ---- donut ---------------------------------------------------------------- */

.fg-slice {
  stroke: var(--en-ink);
  stroke-width: 1;
  transform-box: fill-box;
  transform-origin: center;
  transition: transform 0.15s var(--en-ease-pop);
  cursor: pointer;
  /* click focus would paint a rectangular focus outline on the wedge */
  outline: none;
  /* iOS safari overlays a black bounding box on tap */
  -webkit-tap-highlight-color: transparent;
}

/* entry: each wedge pops into place, staggered by --d */

.en-diagram.in .fg-slice {
  animation: fg-slice-in 0.5s var(--en-ease-pop) var(--d, 0s) backwards;
}

@keyframes fg-slice-in {
  from {
    opacity: 0;
    transform: scale(0.62);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

/* hollow wedge: the future slot, ink outline with no fill */

.fg-slice-hollow {
  fill: none;
  stroke-width: 1.5;
}

.fg-donut-num {
  font-family: var(--en-disp);
  font-size: 44px;
  letter-spacing: 1px;
  fill: var(--en-ink);
  text-anchor: middle;
  pointer-events: none;
}

.fg-donut-sub {
  font-family: var(--en-ui);
  font-size: 9px;
  letter-spacing: 1px;
  fill: var(--en-ink2);
  text-anchor: middle;
  text-transform: uppercase;
  pointer-events: none;
}

/* ---- bar ------------------------------------------------------------------ */

/* solid = actual, hatched = planned, hollow = future */

/* fill comes from the hatch pattern attribute */
.fg-bar-ghost {
  fill: none;
  stroke: var(--en-ink2);
  stroke-width: 1.5;
  stroke-dasharray: 4 3;
  pointer-events: none;
}

/* fill comes from the dense-hatch pattern attribute */
.fg-bar {
  stroke: var(--en-ink);
  stroke-width: 2;
  transform-box: fill-box;
  transform-origin: bottom;
  transform: scaleY(0.02);
  transition:
    transform 0.6s var(--en-ease-out) var(--d, 0s),
    fill 0.15s ease,
    stroke 0.15s ease;
}

.en-diagram.in .fg-bar {
  transform: scaleY(1);
}

.fg-bargrp:hover .fg-bar {
  fill: var(--en-accent);
  stroke: var(--en-accent);
}
.fg-bar-val {
  font-family: var(--en-disp);
  font-size: 15px;
  letter-spacing: 1px;
  fill: var(--en-ink);
  text-anchor: middle;
  paint-order: stroke;
  stroke: var(--en-paper);
  stroke-width: 3px;
  opacity: 0;
  transition:
    opacity 0.3s ease var(--d2, var(--d, 0s)),
    fill 0.15s ease;
}
.fg-bargrp:hover .fg-bar-val {
  fill: var(--en-accent);
}

.en-diagram.in .fg-bar-val {
  opacity: 1;
}

.fg-bar-lbl {
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-10);
  letter-spacing: 1px;
  fill: var(--en-ink2);
  text-anchor: middle;
  text-transform: uppercase;
  pointer-events: none;
}

/* Rotated variant: the slant ends at the band center, so anchor at the end. */
.fg-bar-lbl-r {
  text-anchor: end;
}

.fg-target {
  stroke: var(--en-accent);
  stroke-width: 2;
  stroke-dasharray: 6 5;
  pointer-events: none;
}

.fg-target-lbl {
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-8);
  letter-spacing: 1px;
  fill: var(--en-accent);
  text-transform: uppercase;
  pointer-events: none;
}

.fg-sweep {
  stroke: var(--en-accent);
  stroke-width: 2;
  opacity: 0;
  pointer-events: none;
}

/* ---- line ------------------------------------------------------------------ */

.fg-series {
  fill: none;
  stroke-width: 2.5;
  transition: opacity 0.15s ease;
}

.fg-series.draw {
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  transition:
    stroke-dashoffset 1s ease var(--d, 0s),
    opacity 0.15s ease;
}

.en-diagram.in .fg-series.draw {
  stroke-dashoffset: 0;
}

.fg-series.dim,
.fg-area.dim {
  opacity: 0.2;
}

/* fill comes from the hatch pattern attribute */
.fg-area {
  stroke-width: 1.5;
  opacity: 0;
  transition: opacity 0.8s ease var(--d, 0.4s);
  pointer-events: none;
}

.en-diagram.in .fg-area {
  /* hatch stays a wash under the line, not a wall */
  opacity: 0.45;
}

.fg-point {
  fill: var(--en-paper);
  stroke-width: 2;
  pointer-events: none;
}

.fg-hit {
  fill: none;
  stroke: transparent;
  stroke-width: 16;
  cursor: crosshair;
}

.fg-tracker {
  stroke: var(--en-ink2);
  stroke-width: 2;
  stroke-dasharray: 2 5;
  opacity: 0;
  transition: opacity 0.12s ease;
  pointer-events: none;
}

.fg-tracker.on {
  opacity: 1;
}

/* ---- scatter + quadrant points --------------------------------------------- */

.fg-pt {
  transform-box: fill-box;
  transform-origin: center;
  transform: scale(0);
  transition: transform 0.35s var(--en-ease-pop) var(--d, 0s);
}

.en-diagram.in .fg-pt {
  transform: scale(1);
}

/* cost outruns speed: hollow, not solid. wins over fg-c-ink2 by position */
.fg-pt-hollow {
  fill: var(--en-paper);
  stroke: var(--en-ink2);
  stroke-width: 2.5;
}

.fg-ptring {
  fill: none;
  stroke: var(--en-accent);
  stroke-width: 2.5;
  opacity: 0;
  transition: opacity 0.15s ease;
  pointer-events: none;
}

.fg-ptg {
  cursor: pointer;
}

.fg-ptg:hover .fg-ptring {
  opacity: 1;
}

/* dense cloud: thousands of marks fade in as one group, never staggered */
.fg-ptdense {
  opacity: 0;
  transition: opacity 0.7s ease 0.15s;
}

.en-diagram.in .fg-ptdense {
  opacity: 1;
}

/* trend line + confidence band: reveal with the cloud, line last */
.fg-trend-band {
  fill: var(--en-accent);
  fill-opacity: 0.12;
  opacity: 0;
  transition: opacity 0.7s ease 0.45s;
  pointer-events: none;
}

.en-diagram.in .fg-trend-band {
  opacity: 1;
}

.fg-trend {
  stroke: var(--en-accent);
  stroke-width: 2.5;
  stroke-linecap: round;
  opacity: 0;
  transition: opacity 0.5s ease 0.55s;
  pointer-events: none;
}

.en-diagram.in .fg-trend {
  opacity: 1;
}

/* ---- gantt ----------------------------------------------------------------- */

.fg-g-row {
  fill: transparent;
  transition: fill 0.15s ease;
}

.fg-g-row:hover {
  fill: var(--en-paper2);
}

.fg-g-label {
  font-family: var(--en-ui);
  font-size: 11px;
  letter-spacing: 0.5px;
  fill: var(--en-ink);
  text-transform: uppercase;
  pointer-events: none;
}

.fg-g-bar {
  stroke-width: 2;
  transform-box: fill-box;
  transform-origin: left;
  transform: scaleX(0.02);
  transition: transform 0.5s var(--en-ease-out) var(--d, 0s);
  cursor: pointer;
}

.en-diagram.in .fg-g-bar {
  transform: scaleX(1);
}

.fg-g-bar[data-state="done"] {
  fill: var(--en-green);
  stroke: var(--en-line);
}
/* in flight now: hatch fill from the pattern attribute, no css fill */
.fg-g-bar[data-state="active"] {
  stroke: var(--en-accent);
}
/* future: hollow */
.fg-g-bar[data-state="todo"] {
  fill: none;
  stroke: var(--en-ink2);
  stroke-dasharray: 4 3;
}

.fg-g-today {
  stroke: var(--en-accent);
  stroke-width: 2;
  transform-box: fill-box;
  transform-origin: top;
  transform: scaleY(0);
  transition: transform 0.5s var(--en-ease-out) 0.25s;
  pointer-events: none;
}

.en-diagram.in .fg-g-today {
  transform: scaleY(1);
}

.fg-g-cross {
  fill: var(--en-accent);
  pointer-events: none;
}

.fg-g-ring {
  fill: none;
  stroke: var(--en-accent);
  stroke-width: 2;
  opacity: 0;
  transform-box: fill-box;
  transform-origin: center;
  pointer-events: none;
}

.en-diagram.in .fg-g-ring {
  animation: fg-ping 1.1s ease-out 0.8s 2;
}

@keyframes fg-ping {
  0% {
    opacity: 0.9;
    transform: scale(0.4);
  }
  100% {
    opacity: 0;
    transform: scale(1.7);
  }
}

/* ---- box plot ---------------------------------------------------------------- */

/* fills come from per-mark attributes: paper = hollow, pattern = hero */
.fg-box {
  stroke: var(--en-line);
  stroke-width: 2.5;
  transform-box: fill-box;
  transform-origin: center;
  transform: scaleY(0.02);
  transition:
    transform 0.5s var(--en-ease-out) var(--d, 0s),
    fill 0.15s ease,
    stroke-width 0.15s ease;
}

.en-diagram.in .fg-box {
  transform: scaleY(1);
}

.fg-boxg {
  cursor: pointer;
}

.fg-boxg:hover .fg-box {
  fill: var(--en-paper3);
  stroke-width: 3.5;
}

.fg-med {
  stroke: var(--en-accent);
  stroke-width: 3;
  pointer-events: none;
}

.fg-whg {
  stroke: var(--en-line);
  stroke-width: 2;
  opacity: 0;
  transition: opacity 0.4s ease var(--d2, var(--d, 0s));
  pointer-events: none;
}

.en-diagram.in .fg-whg {
  opacity: 1;
}

.fg-out {
  fill: var(--en-ink2);
  opacity: 0;
  animation: none;
  transform-box: fill-box;
  transform-origin: center;
  transition:
    transform 0.35s var(--en-ease-pop) var(--d2, var(--d, 0s)),
    opacity 0.3s ease var(--d2, var(--d, 0s));
  pointer-events: none;
}

.en-diagram.in .fg-out {
  opacity: 0.8;
  transform: scale(1);
}

.fg-box-lbl {
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-10);
  letter-spacing: 1px;
  fill: var(--en-ink2);
  text-anchor: middle;
  text-transform: uppercase;
  pointer-events: none;
}

.fg-box-med-lbl {
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-8);
  letter-spacing: 0.5px;
  fill: var(--en-ink);
  pointer-events: none;
}

/* ---- quadrant ------------------------------------------------------------------ */

.fg-q-halo {
  fill: var(--en-halo);
  opacity: 0;
  transform-box: fill-box;
  transform-origin: center;
  animation: en-breathe 4s ease-in-out infinite;
  pointer-events: none;
}

.fg-q-corner {
  font-family: var(--en-ui);
  font-size: 11px;
  letter-spacing: 1.5px;
  fill: var(--en-ink2);
  paint-order: stroke;
  stroke: var(--en-paper);
  stroke-width: 3px;
  text-transform: uppercase;
  pointer-events: none;
}

.fg-q-corner.hot {
  fill: var(--en-ink);
}

.fg-q-tick {
  stroke: var(--en-accent);
  stroke-width: 2;
  pointer-events: none;
}

.fg-parity {
  stroke: var(--en-ink2);
  stroke-width: 2;
  stroke-dasharray: 6 5;
  opacity: 0.55;
  pointer-events: none;
}

.fg-q-cross {
  stroke: var(--en-line);
  stroke-width: 2;
  pointer-events: none;
}

/* ---- sankey ---------------------------------------------------------------------- */

/* stroke comes from the hatch pattern attribute */
.fg-ribbon {
  fill: none;
  opacity: 0.55;
  transition:
    stroke 0.15s ease,
    opacity 0.15s ease;
  cursor: pointer;
}

.fg-ribbon.hot {
  stroke: var(--en-accent);
  opacity: 1;
}

/* fill comes from the dense-hatch pattern attribute */
.fg-snode {
  stroke: var(--en-line);
  stroke-width: 2;
  opacity: 0;
  transform: translateX(-8px);
  transition:
    transform 0.5s var(--en-ease-out) var(--d, 0s),
    opacity 0.5s ease var(--d, 0s);
}

.en-diagram.in .fg-snode {
  transform: translateX(0);
  opacity: 1;
}

.fg-slbl-n {
  font-family: var(--en-ui);
  font-size: 10px;
  letter-spacing: 0.5px;
  fill: var(--en-ink);
  text-transform: uppercase;
  paint-order: stroke;
  stroke: var(--en-paper);
  stroke-width: 3px;
  pointer-events: none;
}

.fg-slbl-v {
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-8);
  fill: var(--en-ink2);
  paint-order: stroke;
  stroke: var(--en-paper);
  stroke-width: 3px;
  pointer-events: none;
}

/* ---- map -------------------------------------------------------------------- */
/* Geo choropleth + network, rendered by MapLibre GL (canvas). Bins 0..5 run
   best to worst. Hue rotation (blue -> green -> amber -> accent) mirrors the
   originals' RdYlGn ramp; a two-hue lightness ramp reads "red sea" once
   class 4+5 cover >40% of the map. -1 = no data. The --fg-mbin-* vars serve
   the house legend swatches; the canvas layers resolve the same mix in JS
   (MapLibre paint values cannot use color-mix). */

:root {
  --fg-mbin-0: color-mix(in srgb, var(--en-blue) 60%, var(--en-paper));
  --fg-mbin-1: color-mix(in srgb, var(--en-green) 55%, var(--en-paper));
  --fg-mbin-2: color-mix(in srgb, var(--en-amber) 30%, var(--en-paper));
  --fg-mbin-3: color-mix(in srgb, var(--en-amber) 50%, var(--en-paper));
  --fg-mbin-4: color-mix(in srgb, var(--en-amber) 85%, var(--en-paper));
  --fg-mbin-5: color-mix(in srgb, var(--en-accent) 80%, var(--en-paper));
  --fg-mbin-na: var(--en-paper2);
}

/* Canvas host. Fills the aspect-ratio box the canvas component provides. */
/* MapLibre positions its canvas absolutely, so the stage must carry the
   box. Fixed height collapses to 0 in an auto-height parent; the house
   figure aspect (1000x640) gives a real box at any width. */
.fg-map-stage {
  position: relative;
  width: 100%;
  aspect-ratio: 1000 / 640;
  background: var(--en-paper);
}
.fg-map-stage canvas {
  outline: none;
}

/* Postcode popup: click the map to reveal the POA's postal area. A MapLibre
   Popup, house-styled (mono on a paper chip, hairline border). */
.fg-map-popup .maplibregl-popup-content {
  font-family: var(--en-ui);
  font-size: 12px;
  letter-spacing: 0.5px;
  color: var(--en-ink);
  background: color-mix(in srgb, var(--en-paper) 94%, transparent);
  border: 1px solid color-mix(in srgb, var(--en-ink) 30%, transparent);
  border-radius: 0;
  padding: 4px 8px;
}
.fg-map-popup .maplibregl-popup-tip {
  border-top-color: color-mix(in srgb, var(--en-paper) 94%, transparent);
  border-bottom-color: color-mix(in srgb, var(--en-paper) 94%, transparent);
}

/* House-ify the MapLibre chrome we keep (scale bar + attribution). */
.maplibregl-ctrl-scale {
  font-family: var(--en-ui);
  font-size: 10px;
  letter-spacing: 0.5px;
  color: var(--en-ink);
  background: color-mix(in srgb, var(--en-paper) 88%, transparent);
  border: 1px solid color-mix(in srgb, var(--en-ink) 30%, transparent);
  border-top: none;
}
.maplibregl-ctrl-attrib.maplibregl-compact {
  font-family: var(--en-ui);
  font-size: 9px;
  background: color-mix(in srgb, var(--en-paper) 88%, transparent);
  color: var(--en-ink2);
}
.maplibregl-ctrl-attrib a {
  color: var(--en-ink2);
}

/* ---- ambient dots ------------------------------------------------------------------- */

.fg-dot-walk {
  fill: var(--en-accent);
  opacity: 0.85;
  pointer-events: none;
}

.fg-dot-orbit {
  fill: var(--en-accent);
  opacity: 0.9;
  pointer-events: none;
}

.fg-ghost-track {
  fill: none;
  stroke: none;
  pointer-events: none;
}

/* ---- reduced motion: everything rests in its drawn state ---------------------- */

@media (prefers-reduced-motion: reduce) {
  .fg-bar,
  .fg-bar-val,
  .fg-g-bar,
  .fg-g-today,
  .fg-pt,
  .fg-out,
  .fg-snode,
  .fg-box {
    transition: none;
  }
  .fg-bar,
  .fg-g-today {
    transform: scaleY(1);
  }
  .fg-g-bar {
    transform: scaleX(1);
  }
  .fg-pt,
  .fg-out {
    transform: scale(1);
  }
  .fg-snode {
    transform: translateX(0);
    opacity: 1;
  }
  .fg-box {
    transform: scaleY(1);
  }
  .fg-bar-val,
  .fg-area,
  .fg-whg,
  .fg-ptdense {
    opacity: 1;
    transition: none;
  }
  .fg-halo,
  .fg-q-halo {
    animation: none;
    opacity: 0;
  }
  .fg-g-ring {
    animation: none;
  }
  .fg-dot-walk,
  .fg-dot-orbit {
    display: none;
  }
  .fg-draw,
  .fg-series.draw {
    stroke-dashoffset: 0;
    transition: none;
  }
  .fg-slice {
    animation: none;
    transition: none;
  }
}

/* enoki lede (spec 4.2 lede 16 / 400 / 1.55, 4.3 marks). */

.en-lede {
  margin: 0;
  font-family: var(--en-body);
  font-size: var(--en-f-lede);
  font-weight: 400;
  line-height: var(--en-lh-body);
  max-width: 72ch;
}

.en-mark {
  font-weight: 700;
}

/* enoki hero (spec 4.2 hero type, 6.4 page head). */

.en-hero {
  display: grid;
  gap: var(--en-sp-5);
  padding: 112px 0 70px;
}

.en-hero > .en-wrap {
  display: grid;
  gap: var(--en-sp-5);
}

.en-hero-chips {
  display: flex;
  flex-wrap: wrap;
  gap: var(--en-sp-2);
}

.en-hero-h1 {
  margin: 0;
  font-family: var(--en-disp);
  font-weight: 400;
  font-size: var(--en-f-hero);
  line-height: var(--en-lh-hero);
  letter-spacing: var(--en-tr-disp);
  text-transform: uppercase;
}

.en-hero-sub {
  margin: 0;
  font-family: var(--en-body);
  font-size: var(--en-f-sub);
  font-weight: 500;
  line-height: var(--en-lh-body);
  max-width: 64ch;
}

.en-hero-cta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--en-sp-3);
}

.en-hero-ar {
  display: inline-block;
}

@media (max-width: 720px) {
  .en-hero {
    padding: 96px 0 var(--en-sp-5);
  }
}

/* enoki footer (spec 4.2 hollow stamp, 6.9 page foot). */

.en-footer {
  margin-top: 40px;
  padding: 70px 0 40px;
  border-top: var(--en-bw) solid var(--en-line);
  text-align: center;
}

.en-footer-stamp {
  font-family: var(--en-disp);
  font-weight: 400;
  font-size: clamp(40px, 10vw, 96px);
  line-height: 1;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: transparent;
  -webkit-text-stroke: 2px var(--en-ink);
}

.en-footer-meta {
  margin: 24px 0 0;
  font-family: var(--en-ui);
  font-size: var(--en-f-mono-10);
  letter-spacing: var(--en-tr-mono);
  line-height: var(--en-lh-mono);
  text-transform: uppercase;
  color: var(--en-ink2);
}

/* enoki prompt panel (spec 7.4 prompt code: mono 12.5, pre-wrap). */

.en-prompt-pre {
  margin: 0;
  font-family: var(--en-mono);
  font-size: 12.5px;
  line-height: 1.65;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}


