{
  "version": 8,
  "name": "Paper & Ink Parcels",
  "metadata": {
    "elpasobarsales:note": "Paper & Ink over OpenFreeMap vector tiles plus our own PMTiles parcels. Sources, glyphs and sprite are lifted from https://tiles.openfreemap.org/styles/liberty; every layer below is written here rather than inherited, so the basemap recedes and the lot lines are the content. Palette matches components/leaderboard/utils/map-styles.ts. No Google key on this page.",
    "elpasobarsales:collision-order": "parcel-label and parcel-label-48141 both sit BEFORE road-label and place-label on purpose. MapLibre places symbols in layer order and the first placement wins the space, so owner names beat street names at z16 and up, which is the whole point of the page. Street names fill what is left.",
    "elpasobarsales:satellite": "The esri-satellite layer ships with visibility none. The basemap toggle flips it to visible and hides the paper geometry layers (background through road-label); parcel lines and owner labels stay on top of the imagery.",
    "elpasobarsales:labels-hidden": "BOTH owner-name layers ship with visibility none, and that is a privacy control, not a default. The label tileset is a FILE: it keeps whatever owner names were in it when it was cut, so a name the district withheld yesterday is still in yesterday's tile. The page may only turn this layer on after /api/py/parcels/generation confirms the tileset's ?v= stamp names the generation the API is serving. MapLibre draws the first frame before it fires load, so a layer that starts visible has already printed those names by the time any React effect could hide them: the only safe initial state is off.",
    "elpasobarsales:polygon-source-is-adopted": "Until the statewide build has run, the `parcels` source points at parcels-48141.pmtiles, El Paso's polygon object, because that is the object that EXISTS in the Blob store; after it, at parcels-48.pmtiles. The statewide object parcels-48.pmtiles does not exist until an operator runs `build_parcel_tiles.py --statewide` on the Mac, and Vercel deploys on merge, so a style committed pointing at it would blank every lot line on the live map from the moment the branch merged until that build finished. The statewide build ADOPTS the source instead: its stamp step rewrites this one file name from parcels-48141.pmtiles to parcels-48.pmtiles and stamps it with the release, and committing THAT style change is what switches the map to statewide lot lines. So merging and deploying is safe in either order. Do not hand-edit this URL to the statewide object; run the build.",
    "elpasobarsales:two-label-layers": "There are two owner-name layers because there are two KINDS of owner name and they go stale for different reasons. parcel-label reads parcel-labels-48.pmtiles, one statewide file covering every county with no appraisal-district adapter, stamped with the TxGIO release plus a digest of the load ids of the counties it covers, so a reload of any of them retires it, and rebuilt when the geometry is reloaded. parcel-label-48141 reads El Paso's own file, stamped with that county's EPCAD generation and rebuilt monthly. Each is checked against ITS OWN stamp from /api/py/parcels/generation, so an El Paso roll publication cannot blank the Harris names and a TxGIO reload cannot certify El Paso's. The statewide layer carries a filter on fips, set at runtime from the adapter counties /generation reports and shipping as ['!in', 'fips', '48141']: a county that gains an adapter later would otherwise have two files naming its lots until the statewide one was rebuilt, and the older file is exactly the one that cannot know about a suppression.",
    "elpasobarsales:tile-urls": "pmtiles:// URLs are root absolute so they resolve the same from /parcels and /parcels/[id]. Point them at the object store by rewriting source.url before the map is constructed; see docs/plans/2026-09-17-parcels-tiles.md."
  },
  "glyphs": "https://tiles.openfreemap.org/fonts/{fontstack}/{range}.pbf",
  "sprite": "https://tiles.openfreemap.org/sprites/ofm_f384/ofm",
  "center": [
    -106.487,
    31.7587
  ],
  "zoom": 15,
  "bearing": 0,
  "pitch": 0,
  "sources": {
    "basemap": {
      "type": "vector",
      "url": "https://tiles.openfreemap.org/planet",
      "attribution": "<a href=\"https://openfreemap.org\">OpenFreeMap</a> <a href=\"https://www.openmaptiles.org/\">OpenMapTiles</a> &copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors"
    },
    "esri-satellite": {
      "type": "raster",
      "tiles": [
        "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"
      ],
      "tileSize": 256,
      "maxzoom": 19,
      "attribution": "Esri, Maxar, Earthstar Geographics"
    },
    "parcels": {
      "type": "vector",
      "url": "pmtiles:///tiles/parcels-48.pmtiles?v=stratmap25-eb942f69",
      "attribution": "Parcels: <a href=\"https://data.geographic.texas.gov/\">TxGIO StratMap</a>, CC0. County appraisal districts via TxGIO"
    },
    "labels": {
      "type": "vector",
      "url": "pmtiles:///tiles/parcel-labels-48.pmtiles?v=stratmap25-eb942f69"
    },
    "labels-48141": {
      "type": "vector",
      "url": "pmtiles:///tiles/parcel-labels-48141.pmtiles"
    }
  },
  "layers": [
    {
      "id": "background",
      "type": "background",
      "paint": {
        "background-color": "#faf4e8"
      }
    },
    {
      "id": "satellite",
      "type": "raster",
      "source": "esri-satellite",
      "layout": {
        "visibility": "none"
      },
      "paint": {
        "raster-opacity": 1,
        "raster-fade-duration": 200
      }
    },
    {
      "id": "landuse",
      "type": "fill",
      "source": "basemap",
      "source-layer": "landuse",
      "minzoom": 10,
      "filter": [
        "match",
        [
          "get",
          "class"
        ],
        [
          "residential",
          "commercial",
          "industrial",
          "retail",
          "suburb",
          "neighbourhood"
        ],
        true,
        false
      ],
      "paint": {
        "fill-color": "#f2e8d4",
        "fill-opacity": 0.55
      }
    },
    {
      "id": "park",
      "type": "fill",
      "source": "basemap",
      "source-layer": "park",
      "minzoom": 9,
      "paint": {
        "fill-color": "#e4e5cd",
        "fill-opacity": 0.8
      }
    },
    {
      "id": "landcover-sand",
      "type": "fill",
      "source": "basemap",
      "source-layer": "landcover",
      "minzoom": 8,
      "filter": [
        "match",
        [
          "get",
          "class"
        ],
        [
          "sand",
          "rock"
        ],
        true,
        false
      ],
      "paint": {
        "fill-color": "#efe3c6",
        "fill-opacity": 0.7
      }
    },
    {
      "id": "water",
      "type": "fill",
      "source": "basemap",
      "source-layer": "water",
      "filter": [
        "!=",
        [
          "get",
          "brunnel"
        ],
        "tunnel"
      ],
      "paint": {
        "fill-color": "#cfdedb"
      }
    },
    {
      "id": "waterway",
      "type": "line",
      "source": "basemap",
      "source-layer": "waterway",
      "minzoom": 9,
      "filter": [
        "!=",
        [
          "get",
          "brunnel"
        ],
        "tunnel"
      ],
      "paint": {
        "line-color": "#b7ccc8",
        "line-width": [
          "interpolate",
          [
            "linear"
          ],
          [
            "zoom"
          ],
          9,
          0.6,
          16,
          3
        ]
      }
    },
    {
      "id": "building",
      "type": "fill",
      "source": "basemap",
      "source-layer": "building",
      "minzoom": 15,
      "paint": {
        "fill-color": "#f2e8d4",
        "fill-outline-color": "#dac9a8",
        "fill-opacity": [
          "interpolate",
          [
            "linear"
          ],
          [
            "zoom"
          ],
          15,
          0,
          16,
          0.85
        ]
      }
    },
    {
      "id": "road-minor-casing",
      "type": "line",
      "source": "basemap",
      "source-layer": "transportation",
      "minzoom": 13,
      "filter": [
        "all",
        [
          "match",
          [
            "get",
            "brunnel"
          ],
          [
            "tunnel"
          ],
          false,
          true
        ],
        [
          "match",
          [
            "get",
            "class"
          ],
          [
            "minor",
            "service",
            "track"
          ],
          true,
          false
        ]
      ],
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "paint": {
        "line-color": "#dac9a8",
        "line-width": [
          "interpolate",
          [
            "exponential",
            1.4
          ],
          [
            "zoom"
          ],
          13,
          1.4,
          16,
          5,
          20,
          22
        ]
      }
    },
    {
      "id": "road-minor",
      "type": "line",
      "source": "basemap",
      "source-layer": "transportation",
      "minzoom": 13,
      "filter": [
        "all",
        [
          "match",
          [
            "get",
            "brunnel"
          ],
          [
            "tunnel"
          ],
          false,
          true
        ],
        [
          "match",
          [
            "get",
            "class"
          ],
          [
            "minor",
            "service",
            "track"
          ],
          true,
          false
        ]
      ],
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "paint": {
        "line-color": "#fffcf5",
        "line-width": [
          "interpolate",
          [
            "exponential",
            1.4
          ],
          [
            "zoom"
          ],
          13,
          0.5,
          16,
          3.4,
          20,
          18
        ]
      }
    },
    {
      "id": "road-major-casing",
      "type": "line",
      "source": "basemap",
      "source-layer": "transportation",
      "minzoom": 9,
      "filter": [
        "all",
        [
          "match",
          [
            "get",
            "brunnel"
          ],
          [
            "tunnel"
          ],
          false,
          true
        ],
        [
          "match",
          [
            "get",
            "class"
          ],
          [
            "primary",
            "secondary",
            "tertiary",
            "trunk"
          ],
          true,
          false
        ]
      ],
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "paint": {
        "line-color": "#cbb894",
        "line-width": [
          "interpolate",
          [
            "exponential",
            1.4
          ],
          [
            "zoom"
          ],
          9,
          1.2,
          13,
          3.4,
          16,
          9,
          20,
          34
        ]
      }
    },
    {
      "id": "road-major",
      "type": "line",
      "source": "basemap",
      "source-layer": "transportation",
      "minzoom": 9,
      "filter": [
        "all",
        [
          "match",
          [
            "get",
            "brunnel"
          ],
          [
            "tunnel"
          ],
          false,
          true
        ],
        [
          "match",
          [
            "get",
            "class"
          ],
          [
            "primary",
            "secondary",
            "tertiary",
            "trunk"
          ],
          true,
          false
        ]
      ],
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "paint": {
        "line-color": "#fffcf5",
        "line-width": [
          "interpolate",
          [
            "exponential",
            1.4
          ],
          [
            "zoom"
          ],
          9,
          0.5,
          13,
          2.2,
          16,
          6.6,
          20,
          27
        ]
      }
    },
    {
      "id": "road-motorway-casing",
      "type": "line",
      "source": "basemap",
      "source-layer": "transportation",
      "minzoom": 7,
      "filter": [
        "all",
        [
          "match",
          [
            "get",
            "brunnel"
          ],
          [
            "tunnel"
          ],
          false,
          true
        ],
        [
          "==",
          [
            "get",
            "class"
          ],
          "motorway"
        ]
      ],
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "paint": {
        "line-color": "#b89f6b",
        "line-width": [
          "interpolate",
          [
            "exponential",
            1.4
          ],
          [
            "zoom"
          ],
          7,
          1.4,
          13,
          5,
          16,
          12,
          20,
          42
        ]
      }
    },
    {
      "id": "road-motorway",
      "type": "line",
      "source": "basemap",
      "source-layer": "transportation",
      "minzoom": 7,
      "filter": [
        "all",
        [
          "match",
          [
            "get",
            "brunnel"
          ],
          [
            "tunnel"
          ],
          false,
          true
        ],
        [
          "==",
          [
            "get",
            "class"
          ],
          "motorway"
        ]
      ],
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "paint": {
        "line-color": "#efe3c6",
        "line-width": [
          "interpolate",
          [
            "exponential",
            1.4
          ],
          [
            "zoom"
          ],
          7,
          0.6,
          13,
          3.4,
          16,
          9,
          20,
          34
        ]
      }
    },
    {
      "id": "rail",
      "type": "line",
      "source": "basemap",
      "source-layer": "transportation",
      "minzoom": 12,
      "filter": [
        "==",
        [
          "get",
          "class"
        ],
        "rail"
      ],
      "paint": {
        "line-color": "#c2b193",
        "line-width": [
          "interpolate",
          [
            "linear"
          ],
          [
            "zoom"
          ],
          12,
          0.6,
          18,
          2
        ],
        "line-dasharray": [
          3,
          2
        ]
      }
    },
    {
      "id": "boundary",
      "type": "line",
      "source": "basemap",
      "source-layer": "boundary",
      "filter": [
        "<=",
        [
          "get",
          "admin_level"
        ],
        6
      ],
      "paint": {
        "line-color": "#dac9a8",
        "line-width": [
          "interpolate",
          [
            "linear"
          ],
          [
            "zoom"
          ],
          4,
          0.6,
          12,
          1.6
        ],
        "line-dasharray": [
          4,
          2
        ]
      }
    },
    {
      "id": "parcel-fill",
      "type": "fill",
      "source": "parcels",
      "source-layer": "parcels",
      "minzoom": 12,
      "paint": {
        "fill-color": "#9e4221",
        "fill-opacity": [
          "case",
          [
            "boolean",
            [
              "feature-state",
              "hover"
            ],
            false
          ],
          0.18,
          0.04
        ]
      }
    },
    {
      "id": "parcel-line",
      "type": "line",
      "source": "parcels",
      "source-layer": "parcels",
      "minzoom": 12,
      "layout": {
        "line-join": "round"
      },
      "paint": {
        "line-color": "#9e4221",
        "line-width": ["interpolate", ["linear"], ["zoom"], 12, 0.4, 15, 0.9],
        "line-opacity": ["interpolate", ["linear"], ["zoom"], 12, 0.35, 15, 0.55]
      }
    },
    {
      "id": "parcel-owner",
      "type": "fill",
      "source": "parcels",
      "source-layer": "parcels",
      "minzoom": 12,
      "paint": {
        "fill-color": "#1b6d6d",
        "fill-opacity": [
          "case",
          [
            "boolean",
            [
              "feature-state",
              "owner"
            ],
            false
          ],
          0.26,
          0
        ]
      }
    },
    {
      "id": "parcel-owner-line",
      "type": "line",
      "source": "parcels",
      "source-layer": "parcels",
      "minzoom": 12,
      "layout": {
        "line-join": "round"
      },
      "paint": {
        "line-color": "#1b6d6d",
        "line-width": 1.6,
        "line-opacity": [
          "case",
          [
            "boolean",
            [
              "feature-state",
              "owner"
            ],
            false
          ],
          1,
          0
        ]
      }
    },
    {
      "id": "parcel-selected",
      "type": "fill",
      "source": "parcels",
      "source-layer": "parcels",
      "minzoom": 12,
      "paint": {
        "fill-color": "#9e4221",
        "fill-opacity": [
          "case",
          [
            "boolean",
            [
              "feature-state",
              "selected"
            ],
            false
          ],
          0.28,
          0
        ]
      }
    },
    {
      "id": "parcel-selected-line",
      "type": "line",
      "source": "parcels",
      "source-layer": "parcels",
      "minzoom": 12,
      "layout": {
        "line-join": "round",
        "line-cap": "round"
      },
      "paint": {
        "line-color": "#9e4221",
        "line-width": 2.5,
        "line-opacity": [
          "case",
          [
            "boolean",
            [
              "feature-state",
              "selected"
            ],
            false
          ],
          1,
          0
        ]
      }
    },
    {
      "id": "parcel-label",
      "type": "symbol",
      "source": "labels",
      "source-layer": "labels",
      "minzoom": 14,
      "filter": [
        "!in",
        "fips",
        "48141"
      ],
      "layout": {
        "visibility": "none",
        "text-field": [
          "get",
          "owner_name"
        ],
        "text-font": [
          "Noto Sans Bold"
        ],
        "text-transform": "uppercase",
        "text-size": [
          "interpolate",
          [
            "linear"
          ],
          [
            "zoom"
          ],
          14,
          9,
          16,
          10.5,
          18,
          12
        ],
        "text-max-width": 8,
        "text-line-height": 1.1,
        "text-letter-spacing": 0.02,
        "text-padding": 3,
        "text-allow-overlap": false,
        "text-ignore-placement": false,
        "text-optional": false,
        "symbol-sort-key": [
          "*",
          -1,
          [
            "to-number",
            [
              "get",
              "acres"
            ],
            0
          ]
        ]
      },
      "paint": {
        "text-color": "#1f1813",
        "text-halo-color": "#faf4e8",
        "text-halo-width": 1.2,
        "text-halo-blur": 0.2
      }
    },
    {
      "id": "parcel-label-48141",
      "type": "symbol",
      "source": "labels-48141",
      "source-layer": "labels",
      "minzoom": 14,
      "layout": {
        "visibility": "none",
        "text-field": [
          "get",
          "owner_name"
        ],
        "text-font": [
          "Noto Sans Bold"
        ],
        "text-transform": "uppercase",
        "text-size": [
          "interpolate",
          [
            "linear"
          ],
          [
            "zoom"
          ],
          14,
          9,
          16,
          10.5,
          18,
          12
        ],
        "text-max-width": 8,
        "text-line-height": 1.1,
        "text-letter-spacing": 0.02,
        "text-padding": 3,
        "text-allow-overlap": false,
        "text-ignore-placement": false,
        "text-optional": false,
        "symbol-sort-key": [
          "*",
          -1,
          [
            "to-number",
            [
              "get",
              "acres"
            ],
            0
          ]
        ]
      },
      "paint": {
        "text-color": "#1f1813",
        "text-halo-color": "#faf4e8",
        "text-halo-width": 1.2,
        "text-halo-blur": 0.2
      }
    },
    {
      "id": "road-label",
      "type": "symbol",
      "source": "basemap",
      "source-layer": "transportation_name",
      "minzoom": 13,
      "filter": [
        "match",
        [
          "get",
          "class"
        ],
        [
          "motorway",
          "trunk",
          "primary",
          "secondary",
          "tertiary",
          "minor"
        ],
        true,
        false
      ],
      "layout": {
        "symbol-placement": "line",
        "symbol-spacing": 320,
        "text-field": [
          "coalesce",
          [
            "get",
            "name:latin"
          ],
          [
            "get",
            "name"
          ]
        ],
        "text-font": [
          "Noto Sans Regular"
        ],
        "text-size": [
          "interpolate",
          [
            "linear"
          ],
          [
            "zoom"
          ],
          13,
          9,
          18,
          12
        ],
        "text-letter-spacing": 0.04,
        "text-max-angle": 30,
        "text-rotation-alignment": "map",
        "text-pitch-alignment": "viewport"
      },
      "paint": {
        "text-color": "#5c4f3f",
        "text-halo-color": "#faf4e8",
        "text-halo-width": 1.4
      }
    },
    {
      "id": "place-label",
      "type": "symbol",
      "source": "basemap",
      "source-layer": "place",
      "maxzoom": 16,
      "filter": [
        "match",
        [
          "get",
          "class"
        ],
        [
          "city",
          "town",
          "village",
          "suburb",
          "neighbourhood"
        ],
        true,
        false
      ],
      "layout": {
        "text-field": [
          "coalesce",
          [
            "get",
            "name:latin"
          ],
          [
            "get",
            "name"
          ]
        ],
        "text-font": [
          "Noto Sans Bold"
        ],
        "text-transform": "uppercase",
        "text-size": [
          "interpolate",
          [
            "linear"
          ],
          [
            "zoom"
          ],
          8,
          11,
          14,
          14
        ],
        "text-letter-spacing": 0.12,
        "text-max-width": 8
      },
      "paint": {
        "text-color": "#1f1813",
        "text-halo-color": "#faf4e8",
        "text-halo-width": 1.6
      }
    },
    {
      "id": "water-label",
      "type": "symbol",
      "source": "basemap",
      "source-layer": "water_name",
      "minzoom": 10,
      "layout": {
        "symbol-placement": "line",
        "symbol-spacing": 350,
        "text-field": [
          "coalesce",
          [
            "get",
            "name:latin"
          ],
          [
            "get",
            "name"
          ]
        ],
        "text-font": [
          "Noto Sans Italic"
        ],
        "text-size": 11,
        "text-letter-spacing": 0.08
      },
      "paint": {
        "text-color": "#1b6d6d",
        "text-halo-color": "#faf4e8",
        "text-halo-width": 1.2
      }
    }
  ]
}
