diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,7 +46,7 @@
android:label="@string/app_name"
android:networkSecurityConfig="@xml/networks_security_config"
android:roundIcon="@mipmap/ic_launcher_round"
- android:theme="@style/AppTheme.NoActionBar">
+ android:theme="@style/AppThemeDayNight.NoActionBar">
+ android:theme="@style/AppThemeDayNight.NoActionBar">
diff --git a/app/src/main/assets/versatiles_eclipse_modif.json b/app/src/main/assets/versatiles_eclipse_modif.json
new file mode 100644
--- /dev/null
+++ b/app/src/main/assets/versatiles_eclipse_modif.json
@@ -0,0 +1,6266 @@
+{
+ "version": 8,
+ "name": "versatiles-eclipse",
+ "metadata": {
+ "license": "https://creativecommons.org/publicdomain/zero/1.0/",
+ "maputnik:renderer": "mlgljs"
+ },
+ "sources": {
+ "versatiles-shortbread": {
+ "attribution": "© OpenStreetMap contributors",
+ "tiles": ["https://tiles.versatiles.org/tiles/osm/{z}/{x}/{y}"],
+ "type": "vector",
+ "scheme": "xyz",
+ "bounds": [-180, -85.0511287798066, 180, 85.0511287798066],
+ "minzoom": 0,
+ "maxzoom": 14
+ }
+ },
+ "sprite": [
+ {
+ "id": "basics",
+ "url": "https://tiles.versatiles.org/assets/sprites/basics/sprites"
+ }
+ ],
+ "glyphs": "https://tiles.versatiles.org/assets/glyphs/{fontstack}/{range}.pbf",
+ "layers": [
+ {
+ "id": "background",
+ "type": "background",
+ "paint": {"background-color": "hsl(33,48%,5%)"}
+ },
+ {
+ "id": "water-ocean",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "ocean",
+ "paint": {"fill-color": "hsl(205,69%,15%)"}
+ },
+ {
+ "id": "land-glacier",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "water_polygons",
+ "filter": ["all", ["==", "kind", "glacier"]],
+ "paint": {"fill-color": "hsl(0,0%,0%)"}
+ },
+ {
+ "id": "land-commercial",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "land",
+ "filter": ["all", ["in", "kind", "commercial", "retail"]],
+ "paint": {
+ "fill-color": "hsla(324,61%,8%,0.251)",
+ "fill-opacity": {"stops": [[10, 0], [11, 1]]}
+ }
+ },
+ {
+ "id": "land-industrial",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "land",
+ "filter": ["all", ["in", "kind", "industrial", "quarry", "railway"]],
+ "paint": {
+ "fill-color": "hsla(49,100%,12%,0.333)",
+ "fill-opacity": {"stops": [[10, 0], [11, 1]]}
+ }
+ },
+ {
+ "id": "land-residential",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "land",
+ "filter": ["all", ["in", "kind", "garages", "residential"]],
+ "paint": {
+ "fill-color": "hsla(33,18%,10%,0.2)",
+ "fill-opacity": {"stops": [[10, 0], [11, 1]]}
+ }
+ },
+ {
+ "id": "land-agriculture",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "land",
+ "filter": [
+ "all",
+ [
+ "in",
+ "kind",
+ "brownfield",
+ "farmland",
+ "farmyard",
+ "greenfield",
+ "greenhouse_horticulture",
+ "orchard",
+ "plant_nursery",
+ "vineyard"
+ ]
+ ],
+ "paint": {
+ "fill-color": "hsl(43,51%,12%)",
+ "fill-opacity": {"stops": [[10, 0], [11, 1]]}
+ }
+ },
+ {
+ "id": "land-waste",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "land",
+ "filter": ["all", ["in", "kind", "landfill"]],
+ "paint": {
+ "fill-color": "hsl(50,29%,20%)",
+ "fill-opacity": {"stops": [[10, 0], [11, 1]]}
+ }
+ },
+ {
+ "id": "land-park",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "land",
+ "filter": [
+ "all",
+ ["in", "kind", "park", "village_green", "recreation_ground"]
+ ],
+ "paint": {
+ "fill-color": "hsl(60,41%,25%)",
+ "fill-opacity": {"stops": [[11, 0], [12, 1]]}
+ }
+ },
+ {
+ "id": "land-garden",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "land",
+ "filter": ["all", ["in", "kind", "allotments", "garden"]],
+ "paint": {
+ "fill-color": "hsl(60,41%,25%)",
+ "fill-opacity": {"stops": [[11, 0], [12, 1]]}
+ }
+ },
+ {
+ "id": "land-burial",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "land",
+ "filter": ["all", ["in", "kind", "cemetery", "grave_yard"]],
+ "paint": {
+ "fill-color": "hsl(54,22%,17%)",
+ "fill-opacity": {"stops": [[13, 0], [14, 1]]}
+ }
+ },
+ {
+ "id": "land-leisure",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "land",
+ "filter": [
+ "all",
+ ["in", "kind", "miniature_golf", "playground", "golf_course"]
+ ],
+ "paint": {"fill-color": "hsl(84,29%,10%)"}
+ },
+ {
+ "id": "land-rock",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "land",
+ "filter": ["all", ["in", "kind", "bare_rock", "scree", "shingle"]],
+ "paint": {"fill-color": "hsl(192,9%,11%)"}
+ },
+ {
+ "id": "land-forest",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "land",
+ "filter": ["all", ["in", "kind", "forest"]],
+ "paint": {
+ "fill-color": "hsl(100,43%,53%)",
+ "fill-opacity": {"stops": [[7, 0], [8, 0.1]]}
+ }
+ },
+ {
+ "id": "land-grass",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "land",
+ "filter": [
+ "all",
+ ["in", "kind", "grass", "grassland", "meadow", "wet_meadow"]
+ ],
+ "paint": {
+ "fill-color": "hsl(90,41%,15%)",
+ "fill-opacity": {"stops": [[11, 0], [12, 1]]}
+ }
+ },
+ {
+ "id": "land-vegetation",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "land",
+ "filter": ["all", ["in", "kind", "heath", "scrub"]],
+ "paint": {
+ "fill-color": "hsl(60,41%,25%)",
+ "fill-opacity": {"stops": [[11, 0], [12, 1]]}
+ }
+ },
+ {
+ "id": "land-sand",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "land",
+ "filter": ["all", ["in", "kind", "beach", "sand"]],
+ "paint": {"fill-color": "hsl(60,57%,5%)"}
+ },
+ {
+ "id": "land-wetland",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "land",
+ "filter": ["all", ["in", "kind", "bog", "marsh", "string_bog", "swamp"]],
+ "paint": {"fill-color": "hsl(145,28%,14%)"}
+ },
+ {
+ "id": "water-river",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "water_lines",
+ "filter": [
+ "all",
+ ["in", "kind", "river"],
+ ["!=", "tunnel", true],
+ ["!=", "bridge", true]
+ ],
+ "layout": {"line-cap": "round", "line-join": "round"},
+ "paint": {
+ "line-color": "hsl(205,69%,15%)",
+ "line-width": {
+ "stops": [[9, 0], [10, 3], [15, 5], [17, 9], [18, 20], [20, 60]]
+ }
+ }
+ },
+ {
+ "id": "water-canal",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "water_lines",
+ "filter": [
+ "all",
+ ["in", "kind", "canal"],
+ ["!=", "tunnel", true],
+ ["!=", "bridge", true]
+ ],
+ "layout": {"line-cap": "round", "line-join": "round"},
+ "paint": {
+ "line-color": "hsl(205,69%,15%)",
+ "line-width": {
+ "stops": [[9, 0], [10, 2], [15, 4], [17, 8], [18, 17], [20, 50]]
+ }
+ }
+ },
+ {
+ "id": "water-stream",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "water_lines",
+ "filter": [
+ "all",
+ ["in", "kind", "stream"],
+ ["!=", "tunnel", true],
+ ["!=", "bridge", true]
+ ],
+ "layout": {"line-cap": "round", "line-join": "round"},
+ "paint": {
+ "line-color": "hsl(205,69%,15%)",
+ "line-width": {
+ "stops": [[13, 0], [14, 1], [15, 2], [17, 6], [18, 12], [20, 30]]
+ }
+ }
+ },
+ {
+ "id": "water-ditch",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "water_lines",
+ "filter": [
+ "all",
+ ["in", "kind", "ditch"],
+ ["!=", "tunnel", true],
+ ["!=", "bridge", true]
+ ],
+ "layout": {"line-cap": "round", "line-join": "round"},
+ "paint": {
+ "line-color": "hsl(205,69%,15%)",
+ "line-width": {"stops": [[14, 0], [15, 1], [17, 4], [18, 8], [20, 20]]}
+ }
+ },
+ {
+ "id": "water-area",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "water_polygons",
+ "filter": ["==", "kind", "water"],
+ "paint": {
+ "fill-color": "hsl(205,69%,15%)",
+ "fill-opacity": {"stops": [[4, 0], [6, 1]]}
+ }
+ },
+ {
+ "id": "water-area-river",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "water_polygons",
+ "filter": ["==", "kind", "river"],
+ "paint": {
+ "fill-color": "hsl(205,69%,15%)",
+ "fill-opacity": {"stops": [[4, 0], [6, 1]]}
+ }
+ },
+ {
+ "id": "water-area-small",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "water_polygons",
+ "filter": ["in", "kind", "reservoir", "basin", "dock"],
+ "paint": {
+ "fill-color": "hsl(205,69%,15%)",
+ "fill-opacity": {"stops": [[4, 0], [6, 1]]}
+ }
+ },
+ {
+ "id": "water-dam-area",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "dam_polygons",
+ "filter": ["==", "kind", "dam"],
+ "paint": {
+ "fill-color": "hsl(33,48%,5%)",
+ "fill-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "water-dam",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "dam_lines",
+ "filter": ["==", "kind", "dam"],
+ "layout": {"line-cap": "round", "line-join": "round"},
+ "paint": {"line-color": "hsl(205,69%,15%)"}
+ },
+ {
+ "id": "water-pier-area",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "pier_polygons",
+ "filter": ["in", "kind", "pier", "breakwater", "groyne"],
+ "paint": {
+ "fill-color": "hsl(33,48%,5%)",
+ "fill-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "water-pier",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "pier_lines",
+ "filter": ["in", "kind", "pier", "breakwater", "groyne"],
+ "layout": {"line-cap": "round", "line-join": "round"},
+ "paint": {"line-color": "hsl(33,48%,5%)"}
+ },
+ {
+ "id": "site-dangerarea",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "sites",
+ "filter": ["in", "kind", "danger_area"],
+ "paint": {
+ "fill-color": "hsl(0,100%,50%)",
+ "fill-outline-color": "hsl(0,100%,50%)",
+ "fill-opacity": 0.3,
+ "fill-pattern": "basics:pattern-warning"
+ }
+ },
+ {
+ "id": "site-university",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "sites",
+ "filter": ["in", "kind", "university"],
+ "paint": {"fill-color": "hsl(60,100%,25%)", "fill-opacity": 0.1}
+ },
+ {
+ "id": "site-college",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "sites",
+ "filter": ["in", "kind", "college"],
+ "paint": {"fill-color": "hsl(60,100%,25%)", "fill-opacity": 0.1}
+ },
+ {
+ "id": "site-school",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "sites",
+ "filter": ["in", "kind", "school"],
+ "paint": {"fill-color": "hsl(60,100%,25%)", "fill-opacity": 0.1}
+ },
+ {
+ "id": "site-hospital",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "sites",
+ "filter": ["in", "kind", "hospital"],
+ "paint": {"fill-color": "hsl(0,100%,30%)", "fill-opacity": 0.1}
+ },
+ {
+ "id": "site-prison",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "sites",
+ "filter": ["in", "kind", "prison"],
+ "paint": {
+ "fill-color": "hsl(305,73%,3%)",
+ "fill-pattern": "basics:pattern-striped",
+ "fill-opacity": 0.1
+ }
+ },
+ {
+ "id": "site-parking",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "sites",
+ "filter": ["in", "kind", "parking"],
+ "paint": {"fill-color": "hsl(24,11%,9%)"}
+ },
+ {
+ "id": "site-bicycleparking",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "sites",
+ "filter": ["in", "kind", "bicycle_parking"],
+ "paint": {"fill-color": "hsl(24,11%,9%)"}
+ },
+ {
+ "id": "site-construction",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "sites",
+ "filter": ["in", "kind", "construction"],
+ "paint": {
+ "fill-color": "hsl(0,0%,34%)",
+ "fill-pattern": "basics:pattern-hatched_thin",
+ "fill-opacity": 0.1
+ }
+ },
+ {
+ "id": "airport-area",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "street_polygons",
+ "filter": ["in", "kind", "runway", "taxiway"],
+ "paint": {"fill-color": "hsl(0,0%,0%)", "fill-opacity": 0.5}
+ },
+ {
+ "id": "airport-taxiway:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["==", "kind", "taxiway"],
+ "layout": {"line-join": "round"},
+ "paint": {
+ "line-color": "hsl(36,5%,20%)",
+ "line-width": {
+ "stops": [[13, 0], [14, 2], [15, 10], [16, 14], [18, 20], [20, 40]]
+ }
+ }
+ },
+ {
+ "id": "airport-runway:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["==", "kind", "runway"],
+ "layout": {"line-join": "round"},
+ "paint": {
+ "line-color": "hsl(36,5%,20%)",
+ "line-width": {
+ "stops": [
+ [11, 0],
+ [12, 6],
+ [13, 9],
+ [14, 16],
+ [15, 24],
+ [16, 40],
+ [17, 100],
+ [18, 160],
+ [20, 300]
+ ]
+ }
+ }
+ },
+ {
+ "id": "airport-taxiway",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["==", "kind", "taxiway"],
+ "layout": {"line-join": "round"},
+ "paint": {
+ "line-color": "hsl(0,0%,0%)",
+ "line-width": {
+ "stops": [[13, 0], [14, 1], [15, 8], [16, 12], [18, 18], [20, 36]]
+ },
+ "line-opacity": {"stops": [[13, 0], [14, 1]]}
+ }
+ },
+ {
+ "id": "airport-runway",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["==", "kind", "runway"],
+ "layout": {"line-join": "round"},
+ "paint": {
+ "line-color": "hsl(0,0%,0%)",
+ "line-width": {
+ "stops": [
+ [11, 0],
+ [12, 5],
+ [13, 8],
+ [14, 14],
+ [15, 22],
+ [16, 38],
+ [17, 98],
+ [18, 158],
+ [20, 298]
+ ]
+ },
+ "line-opacity": {"stops": [[11, 0], [12, 1]]}
+ }
+ },
+ {
+ "id": "building:outline",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "buildings",
+ "paint": {
+ "fill-color": "hsl(30,11%,14%)",
+ "fill-opacity": {"stops": [[14, 0], [15, 1]]}
+ }
+ },
+ {
+ "id": "building",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "buildings",
+ "paint": {
+ "fill-color": "hsl(30,38%,8%)",
+ "fill-opacity": {"stops": [[14, 0], [15, 1]]},
+ "fill-translate": [-2, -2]
+ }
+ },
+ {
+ "id": "tunnel-street-pedestrian-zone",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "street_polygons",
+ "filter": ["all", ["==", "tunnel", true], ["==", "kind", "pedestrian"]],
+ "paint": {
+ "fill-color": "rgb(8,8,8)",
+ "fill-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-way-footway:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["==", "tunnel", true], ["in", "kind", "footway"]],
+ "layout": {"line-cap": "round"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 5], [18, 7], [19, 12], [20, 22]]
+ },
+ "line-color": "hsl(288,13%,14%)"
+ }
+ },
+ {
+ "id": "tunnel-way-steps:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["==", "tunnel", true], ["in", "kind", "steps"]],
+ "layout": {"line-cap": "round"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 5], [18, 7], [19, 12], [20, 22]]
+ },
+ "line-color": "hsl(288,13%,14%)"
+ }
+ },
+ {
+ "id": "tunnel-way-path:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["==", "tunnel", true], ["in", "kind", "path"]],
+ "layout": {"line-cap": "round"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 5], [18, 7], [19, 12], [20, 22]]
+ },
+ "line-color": "hsl(288,13%,14%)"
+ }
+ },
+ {
+ "id": "tunnel-way-cycleway:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["==", "tunnel", true], ["in", "kind", "cycleway"]],
+ "layout": {"line-cap": "round"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 5], [18, 7], [19, 12], [20, 22]]
+ },
+ "line-color": "hsl(203,11%,13%)"
+ }
+ },
+ {
+ "id": "tunnel-street-track:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "track"], ["==", "tunnel", true]],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(33,33,33)",
+ "line-width": {
+ "stops": [[14, 2], [16, 4], [18, 18], [19, 48], [20, 96]]
+ },
+ "line-opacity": {"stops": [[14, 0], [15, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-pedestrian:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "pedestrian"], ["==", "tunnel", true]],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(33,33,33)",
+ "line-width": {
+ "stops": [[12, 2], [14, 3], [16, 6], [18, 26], [19, 64], [20, 128]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-service:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "service"], ["==", "tunnel", true]],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(37,36,34)",
+ "line-width": {
+ "stops": [[14, 1], [16, 3], [18, 12], [19, 32], [20, 48]]
+ },
+ "line-opacity": {"stops": [[15, 0], [16, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-livingstreet:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "living_street"],
+ ["==", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(33,33,33)",
+ "line-width": {
+ "stops": [[12, 2], [14, 3], [16, 6], [18, 26], [19, 64], [20, 128]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-residential:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "residential"], ["==", "tunnel", true]],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(33,33,33)",
+ "line-width": {
+ "stops": [[12, 2], [14, 3], [16, 6], [18, 26], [19, 64], [20, 128]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-unclassified:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "unclassified"], ["==", "tunnel", true]],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(33,33,33)",
+ "line-width": {
+ "stops": [[12, 2], [14, 3], [16, 6], [18, 26], [19, 64], [20, 128]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-busway:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "busway"], ["==", "tunnel", true]],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(37,36,34)",
+ "line-width": {
+ "stops": [[14, 1], [16, 3], [18, 12], [19, 32], [20, 48]]
+ },
+ "line-opacity": {"stops": [[15, 0], [16, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-busguideway:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "bus_guideway"], ["==", "tunnel", true]],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(37,36,34)",
+ "line-width": {
+ "stops": [[14, 1], [16, 3], [18, 12], [19, 32], [20, 48]]
+ },
+ "line-opacity": {"stops": [[15, 0], [16, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-tertiary-link:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "tunnel", true],
+ ["in", "kind", "tertiary"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(33,33,33)",
+ "line-width": {
+ "stops": [[12, 2], [14, 3], [16, 6], [18, 26], [19, 64], [20, 128]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-secondary-link:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["==", "tunnel", true],
+ ["in", "kind", "secondary"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(129,71,21)",
+ "line-dasharray": [1, 0.3],
+ "line-width": {"stops": [[12, 2], [14, 3], [16, 7], [18, 14], [20, 40]]}
+ }
+ },
+ {
+ "id": "tunnel-street-primary-link:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["==", "tunnel", true],
+ ["in", "kind", "primary"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(129,71,21)",
+ "line-dasharray": [1, 0.3],
+ "line-width": {"stops": [[12, 2], [14, 3], [16, 7], [18, 14], [20, 40]]}
+ }
+ },
+ {
+ "id": "tunnel-street-trunk-link:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["==", "tunnel", true],
+ ["in", "kind", "trunk"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(129,71,21)",
+ "line-dasharray": [1, 0.3],
+ "line-width": {"stops": [[12, 2], [14, 3], [16, 7], [18, 14], [20, 40]]}
+ }
+ },
+ {
+ "id": "tunnel-street-motorway-link:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ ["==", "tunnel", true],
+ ["in", "kind", "motorway"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(129,71,21)",
+ "line-dasharray": [1, 0.3],
+ "line-width": {"stops": [[12, 2], [14, 3], [16, 7], [18, 14], [20, 40]]}
+ }
+ },
+ {
+ "id": "tunnel-street-tertiary:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "tunnel", true],
+ ["in", "kind", "tertiary"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(33,33,33)",
+ "line-width": {
+ "stops": [[12, 2], [14, 3], [16, 6], [18, 26], [19, 64], [20, 128]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-secondary:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "tunnel", true],
+ ["in", "kind", "secondary"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(129,71,21)",
+ "line-dasharray": [1, 0.3],
+ "line-width": {
+ "stops": [[11, 2], [14, 5], [16, 8], [18, 30], [19, 68], [20, 138]]
+ },
+ "line-opacity": {"stops": [[11, 0], [12, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-primary:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "tunnel", true],
+ ["in", "kind", "primary"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(129,71,21)",
+ "line-dasharray": [1, 0.3],
+ "line-width": {
+ "stops": [
+ [8, 0],
+ [9, 1],
+ [10, 4],
+ [14, 6],
+ [16, 12],
+ [18, 36],
+ [19, 74],
+ [20, 144]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-street-trunk:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "tunnel", true],
+ ["in", "kind", "trunk"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(129,71,21)",
+ "line-dasharray": [1, 0.3],
+ "line-width": {
+ "stops": [
+ [6, 0],
+ [7, 2],
+ [10, 4],
+ [14, 6],
+ [16, 12],
+ [18, 36],
+ [19, 74],
+ [20, 144]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-street-motorway:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "tunnel", true],
+ ["in", "kind", "motorway"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(129,71,21)",
+ "line-dasharray": [1, 0.3],
+ "line-width": {
+ "stops": [
+ [5, 0],
+ [6, 2],
+ [10, 5],
+ [14, 5],
+ [16, 14],
+ [18, 38],
+ [19, 84],
+ [20, 168]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-way-footway",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["==", "tunnel", true], ["in", "kind", "footway"]],
+ "layout": {"line-cap": "round"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 4], [18, 6], [19, 10], [20, 20]]
+ },
+ "line-color": "hsl(288,33%,6%)",
+ "line-dasharray": [1, 0.2]
+ }
+ },
+ {
+ "id": "tunnel-way-steps",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["==", "tunnel", true], ["in", "kind", "steps"]],
+ "layout": {"line-cap": "round"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 4], [18, 6], [19, 10], [20, 20]]
+ },
+ "line-color": "hsl(288,33%,6%)",
+ "line-dasharray": [1, 0.2]
+ }
+ },
+ {
+ "id": "tunnel-way-path",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["==", "tunnel", true], ["in", "kind", "path"]],
+ "layout": {"line-cap": "round"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 4], [18, 6], [19, 10], [20, 20]]
+ },
+ "line-color": "hsl(288,33%,6%)",
+ "line-dasharray": [1, 0.2]
+ }
+ },
+ {
+ "id": "tunnel-way-cycleway",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["==", "tunnel", true], ["in", "kind", "cycleway"]],
+ "layout": {"line-cap": "round"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 4], [18, 6], [19, 10], [20, 20]]
+ },
+ "line-color": "hsl(203,30%,5%)",
+ "line-dasharray": [1, 0.2]
+ }
+ },
+ {
+ "id": "tunnel-street-track",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "track"], ["==", "tunnel", true]],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(8,8,8)",
+ "line-width": {
+ "stops": [[14, 1], [16, 3], [18, 16], [19, 44], [20, 88]]
+ },
+ "line-opacity": {"stops": [[14, 0], [15, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-pedestrian",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "pedestrian"], ["==", "tunnel", true]],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(8,8,8)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-service",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "service"], ["==", "tunnel", true]],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(8,8,8)",
+ "line-width": {
+ "stops": [[14, 1], [16, 2], [18, 10], [19, 28], [20, 40]]
+ },
+ "line-opacity": {"stops": [[15, 0], [16, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-livingstreet",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "living_street"],
+ ["==", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(8,8,8)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-residential",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "residential"], ["==", "tunnel", true]],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(8,8,8)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-unclassified",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "unclassified"], ["==", "tunnel", true]],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(8,8,8)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-busway",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "busway"], ["==", "tunnel", true]],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(8,8,8)",
+ "line-width": {
+ "stops": [[14, 1], [16, 2], [18, 10], [19, 28], [20, 40]]
+ },
+ "line-opacity": {"stops": [[15, 0], [16, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-busguideway",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "bus_guideway"], ["==", "tunnel", true]],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(8,8,8)",
+ "line-width": {
+ "stops": [[14, 1], [16, 2], [18, 10], [19, 28], [20, 40]]
+ },
+ "line-opacity": {"stops": [[15, 0], [16, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-track-bicycle",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "track"],
+ ["==", "bicycle", "designated"],
+ ["==", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {"line-color": "rgb(8,8,8)"}
+ },
+ {
+ "id": "tunnel-street-pedestrian-bicycle",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "pedestrian"],
+ ["==", "bicycle", "designated"],
+ ["==", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(203,100%,3%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-service-bicycle",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "service"],
+ ["==", "bicycle", "designated"],
+ ["==", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {"line-color": "rgb(8,8,8)"}
+ },
+ {
+ "id": "tunnel-street-livingstreet-bicycle",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "living_street"],
+ ["==", "bicycle", "designated"],
+ ["==", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(203,100%,3%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-residential-bicycle",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "residential"],
+ ["==", "bicycle", "designated"],
+ ["==", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(203,100%,3%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-unclassified-bicycle",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "unclassified"],
+ ["==", "bicycle", "designated"],
+ ["==", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(203,100%,3%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-tertiary-link",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "tunnel", true],
+ ["in", "kind", "tertiary"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(8,8,8)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-secondary-link",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["==", "tunnel", true],
+ ["in", "kind", "secondary"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "rgb(77,61,0)",
+ "line-width": {"stops": [[12, 1], [14, 2], [16, 5], [18, 12], [20, 38]]}
+ }
+ },
+ {
+ "id": "tunnel-street-primary-link",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["==", "tunnel", true],
+ ["in", "kind", "primary"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "rgb(77,61,0)",
+ "line-width": {"stops": [[12, 1], [14, 2], [16, 5], [18, 12], [20, 38]]}
+ }
+ },
+ {
+ "id": "tunnel-street-trunk-link",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["==", "tunnel", true],
+ ["in", "kind", "trunk"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "rgb(77,61,0)",
+ "line-width": {"stops": [[12, 1], [14, 2], [16, 5], [18, 12], [20, 38]]}
+ }
+ },
+ {
+ "id": "tunnel-street-motorway-link",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ ["==", "tunnel", true],
+ ["in", "kind", "motorway"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "rgb(107,61,0)",
+ "line-width": {"stops": [[12, 1], [14, 2], [16, 5], [18, 12], [20, 38]]}
+ }
+ },
+ {
+ "id": "tunnel-street-tertiary",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "tunnel", true],
+ ["in", "kind", "tertiary"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(8,8,8)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-secondary",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "tunnel", true],
+ ["in", "kind", "secondary"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "rgb(77,61,0)",
+ "line-width": {
+ "stops": [[11, 1], [14, 4], [16, 6], [18, 28], [19, 64], [20, 130]]
+ },
+ "line-opacity": {"stops": [[11, 0], [12, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-primary",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "tunnel", true],
+ ["in", "kind", "primary"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "rgb(77,61,0)",
+ "line-width": {
+ "stops": [
+ [8, 0],
+ [9, 2],
+ [10, 3],
+ [14, 5],
+ [16, 10],
+ [18, 34],
+ [19, 70],
+ [20, 140]
+ ]
+ },
+ "line-opacity": {"stops": [[8, 0], [9, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-trunk",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "tunnel", true],
+ ["in", "kind", "trunk"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "rgb(77,61,0)",
+ "line-width": {
+ "stops": [
+ [6, 0],
+ [7, 1],
+ [10, 3],
+ [14, 5],
+ [16, 10],
+ [18, 34],
+ [19, 70],
+ [20, 140]
+ ]
+ },
+ "line-opacity": {"stops": [[6, 0], [7, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-street-motorway",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "tunnel", true],
+ ["in", "kind", "motorway"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "rgb(107,61,0)",
+ "line-width": {
+ "stops": [
+ [5, 0],
+ [6, 1],
+ [10, 4],
+ [14, 4],
+ [16, 12],
+ [18, 36],
+ [19, 80],
+ [20, 160]
+ ]
+ },
+ "line-opacity": {"stops": [[5, 0], [6, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-transport-tram:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["in", "kind", "tram"],
+ ["!has", "service"],
+ ["==", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[15, 0], [16, 5], [18, 7], [20, 20]]},
+ "line-dasharray": [0.1, 0.5]
+ }
+ },
+ {
+ "id": "tunnel-transport-narrowgauge:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["in", "kind", "narrow_gauge"],
+ ["!has", "service"],
+ ["==", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[15, 0], [16, 5], [18, 7], [20, 20]]},
+ "line-dasharray": [0.1, 0.5]
+ }
+ },
+ {
+ "id": "tunnel-transport-subway:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["in", "kind", "subway"],
+ ["!has", "service"],
+ ["==", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "hsl(207,23%,28%)",
+ "line-width": {
+ "stops": [
+ [11, 0],
+ [12, 1],
+ [15, 3],
+ [16, 3],
+ [18, 6],
+ [19, 8],
+ [20, 10]
+ ]
+ },
+ "line-opacity": {"stops": [[11, 0], [12, 0.5]]}
+ }
+ },
+ {
+ "id": "tunnel-transport-lightrail:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 8,
+ "filter": [
+ "all",
+ ["in", "kind", "light_rail"],
+ ["!has", "service"],
+ ["==", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[8, 1], [13, 1], [15, 1], [20, 14]]},
+ "line-opacity": {"stops": [[11, 0], [12, 0.5]]}
+ }
+ },
+ {
+ "id": "tunnel-transport-lightrail-service:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ ["in", "kind", "light_rail"],
+ ["has", "service"],
+ ["==", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[14, 0], [15, 1], [16, 1], [20, 14]]}
+ }
+ },
+ {
+ "id": "tunnel-transport-rail:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 8,
+ "filter": [
+ "all",
+ ["in", "kind", "rail"],
+ ["!has", "service"],
+ ["==", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[8, 1], [13, 1], [15, 1], [20, 14]]},
+ "line-opacity": {"stops": [[8, 0], [9, 0.3]]}
+ }
+ },
+ {
+ "id": "tunnel-transport-rail-service:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ ["in", "kind", "rail"],
+ ["has", "service"],
+ ["==", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[14, 0], [15, 1], [16, 1], [20, 14]]}
+ }
+ },
+ {
+ "id": "tunnel-transport-monorail:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["in", "kind", "monorail"], ["==", "tunnel", true]],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[15, 0], [16, 5], [18, 7], [20, 20]]},
+ "line-dasharray": [0.1, 0.5]
+ }
+ },
+ {
+ "id": "tunnel-transport-funicular:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["in", "kind", "funicular"], ["==", "tunnel", true]],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[15, 0], [16, 5], [18, 7], [20, 20]]},
+ "line-dasharray": [0.1, 0.5]
+ }
+ },
+ {
+ "id": "tunnel-transport-tram",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["in", "kind", "tram"],
+ ["!has", "service"],
+ ["==", "tunnel", true]
+ ],
+ "paint": {
+ "line-width": {"stops": [[13, 0], [16, 1], [17, 2], [18, 3], [20, 5]]},
+ "line-color": "hsl(208,14%,27%)"
+ }
+ },
+ {
+ "id": "tunnel-transport-narrowgauge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["in", "kind", "narrow_gauge"],
+ ["!has", "service"],
+ ["==", "tunnel", true]
+ ],
+ "paint": {
+ "line-width": {"stops": [[13, 0], [16, 1], [17, 2], [18, 3], [20, 5]]},
+ "line-color": "hsl(208,14%,27%)"
+ }
+ },
+ {
+ "id": "tunnel-transport-subway",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["in", "kind", "subway"],
+ ["!has", "service"],
+ ["==", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "rgb(42,55,67)",
+ "line-width": {
+ "stops": [
+ [11, 0],
+ [12, 1],
+ [15, 2],
+ [16, 2],
+ [18, 5],
+ [19, 6],
+ [20, 8]
+ ]
+ },
+ "line-dasharray": [2, 2],
+ "line-opacity": {"stops": [[14, 0], [15, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-transport-lightrail",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ ["in", "kind", "light_rail"],
+ ["!has", "service"],
+ ["==", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "rgb(44,52,59)",
+ "line-width": {"stops": [[14, 0], [15, 1], [20, 10]]},
+ "line-dasharray": [2, 2],
+ "line-opacity": {"stops": [[14, 0], [15, 1]]}
+ }
+ },
+ {
+ "id": "tunnel-transport-lightrail-service",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["in", "kind", "light_rail"],
+ ["has", "service"],
+ ["==", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "rgb(44,52,59)",
+ "line-width": {"stops": [[15, 0], [16, 1], [20, 10]]},
+ "line-dasharray": [2, 2]
+ }
+ },
+ {
+ "id": "tunnel-transport-rail",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ ["in", "kind", "rail"],
+ ["!has", "service"],
+ ["==", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "rgb(44,52,59)",
+ "line-width": {"stops": [[14, 0], [15, 1], [20, 10]]},
+ "line-dasharray": [2, 2],
+ "line-opacity": {"stops": [[14, 0], [15, 0.3]]}
+ }
+ },
+ {
+ "id": "tunnel-transport-rail-service",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["in", "kind", "rail"],
+ ["has", "service"],
+ ["==", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "rgb(44,52,59)",
+ "line-width": {"stops": [[15, 0], [16, 1], [20, 10]]},
+ "line-dasharray": [2, 2]
+ }
+ },
+ {
+ "id": "tunnel-transport-monorail",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": ["all", ["in", "kind", "monorail"], ["==", "tunnel", true]],
+ "paint": {
+ "line-width": {"stops": [[13, 0], [16, 1], [17, 2], [18, 3], [20, 5]]},
+ "line-color": "hsl(208,14%,27%)"
+ }
+ },
+ {
+ "id": "tunnel-transport-funicular",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": ["all", ["in", "kind", "funicular"], ["==", "tunnel", true]],
+ "paint": {
+ "line-width": {"stops": [[13, 0], [16, 1], [17, 2], [18, 3], [20, 5]]},
+ "line-color": "hsl(208,14%,27%)"
+ }
+ },
+ {
+ "id": "bridge",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "bridges",
+ "paint": {
+ "fill-color": "rgb(22,17,11)",
+ "fill-antialias": true,
+ "fill-opacity": 0.8
+ }
+ },
+ {
+ "id": "street-pedestrian-zone",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "street_polygons",
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["==", "kind", "pedestrian"]
+ ],
+ "paint": {
+ "fill-color": "rgba(16,0,20,0.25)",
+ "fill-opacity": {"stops": [[12, 0], [13, 1], [14, 0], [15, 1]]}
+ }
+ },
+ {
+ "id": "way-footway:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "footway"]
+ ],
+ "layout": {"line-cap": "round"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 5], [18, 7], [19, 12], [20, 22]]
+ },
+ "line-color": "rgb(40,26,44)"
+ }
+ },
+ {
+ "id": "way-steps:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "steps"]
+ ],
+ "layout": {"line-cap": "round"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 5], [18, 7], [19, 12], [20, 22]]
+ },
+ "line-color": "rgb(40,26,44)"
+ }
+ },
+ {
+ "id": "way-path:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "path"]
+ ],
+ "layout": {"line-cap": "round"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 5], [18, 7], [19, 12], [20, 22]]
+ },
+ "line-color": "rgb(40,26,44)"
+ }
+ },
+ {
+ "id": "way-cycleway:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "cycleway"]
+ ],
+ "layout": {"line-cap": "round"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 5], [18, 7], [19, 12], [20, 22]]
+ },
+ "line-color": "rgb(26,34,40)"
+ }
+ },
+ {
+ "id": "street-track:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "track"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(36,5%,20%)",
+ "line-width": {
+ "stops": [[14, 2], [16, 4], [18, 18], [19, 48], [20, 96]]
+ },
+ "line-opacity": {"stops": [[14, 0], [15, 1]]}
+ }
+ },
+ {
+ "id": "street-pedestrian:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "pedestrian"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(36,5%,20%)",
+ "line-width": {
+ "stops": [[12, 2], [14, 3], [16, 6], [18, 26], [19, 64], [20, 128]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "street-service:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "service"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(37,36,34)",
+ "line-width": {
+ "stops": [[14, 1], [16, 3], [18, 12], [19, 32], [20, 48]]
+ },
+ "line-opacity": {"stops": [[15, 0], [16, 1]]}
+ }
+ },
+ {
+ "id": "street-livingstreet:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "living_street"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(36,5%,20%)",
+ "line-width": {
+ "stops": [[12, 2], [14, 3], [16, 6], [18, 26], [19, 64], [20, 128]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "street-residential:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "residential"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(36,5%,20%)",
+ "line-width": {
+ "stops": [[12, 2], [14, 3], [16, 6], [18, 26], [19, 64], [20, 128]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "street-unclassified:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "unclassified"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(36,5%,20%)",
+ "line-width": {
+ "stops": [[12, 2], [14, 3], [16, 6], [18, 26], [19, 64], [20, 128]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "street-busway:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "busway"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(37,36,34)",
+ "line-width": {
+ "stops": [[14, 1], [16, 3], [18, 12], [19, 32], [20, 48]]
+ },
+ "line-opacity": {"stops": [[15, 0], [16, 1]]}
+ }
+ },
+ {
+ "id": "street-busguideway:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "bus_guideway"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(37,36,34)",
+ "line-width": {
+ "stops": [[14, 1], [16, 3], [18, 12], [19, 32], [20, 48]]
+ },
+ "line-opacity": {"stops": [[15, 0], [16, 1]]}
+ }
+ },
+ {
+ "id": "street-tertiary-link:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "tertiary"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(36,5%,20%)",
+ "line-width": {
+ "stops": [[12, 2], [14, 3], [16, 6], [18, 26], [19, 64], [20, 128]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "street-secondary-link:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "secondary"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(28,72%,31%)",
+ "line-width": {"stops": [[12, 2], [14, 3], [16, 7], [18, 14], [20, 40]]}
+ }
+ },
+ {
+ "id": "street-primary-link:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "primary"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(28,72%,31%)",
+ "line-width": {"stops": [[12, 2], [14, 3], [16, 7], [18, 14], [20, 40]]}
+ }
+ },
+ {
+ "id": "street-trunk-link:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "trunk"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(28,72%,31%)",
+ "line-width": {"stops": [[12, 2], [14, 3], [16, 7], [18, 14], [20, 40]]}
+ }
+ },
+ {
+ "id": "street-motorway-link:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "motorway"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(28,72%,31%)",
+ "line-width": {"stops": [[12, 2], [14, 3], [16, 7], [18, 14], [20, 40]]}
+ }
+ },
+ {
+ "id": "street-tertiary:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "tertiary"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(36,5%,20%)",
+ "line-width": {
+ "stops": [[12, 2], [14, 3], [16, 6], [18, 26], [19, 64], [20, 128]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "street-secondary:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "secondary"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(28,72%,31%)",
+ "line-width": {
+ "stops": [[11, 2], [14, 5], [16, 8], [18, 30], [19, 68], [20, 138]]
+ },
+ "line-opacity": {"stops": [[11, 0], [12, 1]]}
+ }
+ },
+ {
+ "id": "street-primary:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "primary"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(28,72%,31%)",
+ "line-width": {
+ "stops": [
+ [8, 0],
+ [9, 1],
+ [10, 4],
+ [14, 6],
+ [16, 12],
+ [18, 36],
+ [19, 74],
+ [20, 144]
+ ]
+ }
+ }
+ },
+ {
+ "id": "street-trunk:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "trunk"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(28,72%,31%)",
+ "line-width": {
+ "stops": [
+ [6, 0],
+ [7, 2],
+ [10, 4],
+ [14, 6],
+ [16, 12],
+ [18, 36],
+ [19, 74],
+ [20, 144]
+ ]
+ }
+ }
+ },
+ {
+ "id": "street-motorway:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "motorway"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(28,72%,31%)",
+ "line-width": {
+ "stops": [
+ [5, 0],
+ [6, 2],
+ [10, 5],
+ [14, 5],
+ [16, 14],
+ [18, 38],
+ [19, 84],
+ [20, 168]
+ ]
+ }
+ }
+ },
+ {
+ "id": "way-footway",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "footway"]
+ ],
+ "layout": {"line-cap": "round"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 4], [18, 6], [19, 10], [20, 20]]
+ },
+ "line-color": "rgb(16,0,20)"
+ }
+ },
+ {
+ "id": "way-steps",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "steps"]
+ ],
+ "layout": {"line-cap": "round"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 4], [18, 6], [19, 10], [20, 20]]
+ },
+ "line-color": "rgb(16,0,20)"
+ }
+ },
+ {
+ "id": "way-path",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "path"]
+ ],
+ "layout": {"line-cap": "round"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 4], [18, 6], [19, 10], [20, 20]]
+ },
+ "line-color": "rgb(16,0,20)"
+ }
+ },
+ {
+ "id": "way-cycleway",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "cycleway"]
+ ],
+ "layout": {"line-cap": "round"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 4], [18, 6], [19, 10], [20, 20]]
+ },
+ "line-color": "hsl(203,100%,3%)"
+ }
+ },
+ {
+ "id": "street-track",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "track"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(0,0%,0%)",
+ "line-width": {
+ "stops": [[14, 1], [16, 3], [18, 16], [19, 44], [20, 88]]
+ },
+ "line-opacity": {"stops": [[14, 0], [15, 1]]}
+ }
+ },
+ {
+ "id": "street-pedestrian",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "pedestrian"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(288,100%,4%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 0], [14, 1]]}
+ }
+ },
+ {
+ "id": "street-service",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "service"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(8,8,8)",
+ "line-width": {
+ "stops": [[14, 1], [16, 2], [18, 10], [19, 28], [20, 40]]
+ },
+ "line-opacity": {"stops": [[15, 0], [16, 1]]}
+ }
+ },
+ {
+ "id": "street-livingstreet",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "living_street"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(0,0%,0%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "street-residential",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "residential"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(0,0%,0%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "street-unclassified",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "unclassified"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(0,0%,0%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "street-busway",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "busway"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(8,8,8)",
+ "line-width": {
+ "stops": [[14, 1], [16, 2], [18, 10], [19, 28], [20, 40]]
+ },
+ "line-opacity": {"stops": [[15, 0], [16, 1]]}
+ }
+ },
+ {
+ "id": "street-busguideway",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "bus_guideway"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "rgb(8,8,8)",
+ "line-width": {
+ "stops": [[14, 1], [16, 2], [18, 10], [19, 28], [20, 40]]
+ },
+ "line-opacity": {"stops": [[15, 0], [16, 1]]}
+ }
+ },
+ {
+ "id": "street-track-bicycle",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "track"],
+ ["==", "bicycle", "designated"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {"line-color": "hsl(0,0%,0%)"}
+ },
+ {
+ "id": "street-pedestrian-bicycle",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "pedestrian"],
+ ["==", "bicycle", "designated"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(203,100%,3%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "street-service-bicycle",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "service"],
+ ["==", "bicycle", "designated"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {"line-color": "hsl(0,0%,0%)"}
+ },
+ {
+ "id": "street-livingstreet-bicycle",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "living_street"],
+ ["==", "bicycle", "designated"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(203,100%,3%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "street-residential-bicycle",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "residential"],
+ ["==", "bicycle", "designated"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(203,100%,3%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "street-unclassified-bicycle",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "unclassified"],
+ ["==", "bicycle", "designated"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(203,100%,3%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "street-tertiary-link",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "tertiary"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(0,0%,0%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "street-secondary-link",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "secondary"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(48,100%,17%)",
+ "line-width": {"stops": [[12, 1], [14, 2], [16, 5], [18, 12], [20, 38]]}
+ }
+ },
+ {
+ "id": "street-primary-link",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "primary"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(48,100%,17%)",
+ "line-width": {"stops": [[12, 1], [14, 2], [16, 5], [18, 12], [20, 38]]}
+ }
+ },
+ {
+ "id": "street-trunk-link",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "trunk"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(48,100%,17%)",
+ "line-width": {"stops": [[12, 1], [14, 2], [16, 5], [18, 12], [20, 38]]}
+ }
+ },
+ {
+ "id": "street-motorway-link",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "motorway"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(34,100%,23%)",
+ "line-width": {"stops": [[12, 1], [14, 2], [16, 5], [18, 12], [20, 38]]}
+ }
+ },
+ {
+ "id": "street-tertiary",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "tertiary"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(0,0%,0%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "street-secondary",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "secondary"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(48,100%,17%)",
+ "line-width": {
+ "stops": [[11, 1], [14, 4], [16, 6], [18, 28], [19, 64], [20, 130]]
+ },
+ "line-opacity": {"stops": [[11, 0], [12, 1]]}
+ }
+ },
+ {
+ "id": "street-primary",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "primary"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(48,100%,17%)",
+ "line-width": {
+ "stops": [
+ [8, 0],
+ [9, 2],
+ [10, 3],
+ [14, 5],
+ [16, 10],
+ [18, 34],
+ [19, 70],
+ [20, 140]
+ ]
+ },
+ "line-opacity": {"stops": [[8, 0], [9, 1]]}
+ }
+ },
+ {
+ "id": "street-trunk",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "trunk"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(48,100%,17%)",
+ "line-width": {
+ "stops": [
+ [6, 0],
+ [7, 1],
+ [10, 3],
+ [14, 5],
+ [16, 10],
+ [18, 34],
+ [19, 70],
+ [20, 140]
+ ]
+ },
+ "line-opacity": {"stops": [[6, 0], [7, 1]]}
+ }
+ },
+ {
+ "id": "street-motorway",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true],
+ ["in", "kind", "motorway"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(34,100%,23%)",
+ "line-width": {
+ "stops": [
+ [5, 0],
+ [6, 1],
+ [10, 4],
+ [14, 4],
+ [16, 12],
+ [18, 36],
+ [19, 80],
+ [20, 160]
+ ]
+ },
+ "line-opacity": {"stops": [[5, 0], [6, 1]]}
+ }
+ },
+ {
+ "id": "transport-tram:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["in", "kind", "tram"],
+ ["!has", "service"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[15, 0], [16, 5], [18, 7], [20, 20]]},
+ "line-dasharray": [0.1, 0.5]
+ }
+ },
+ {
+ "id": "transport-narrowgauge:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["in", "kind", "narrow_gauge"],
+ ["!has", "service"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[15, 0], [16, 5], [18, 7], [20, 20]]},
+ "line-dasharray": [0.1, 0.5]
+ }
+ },
+ {
+ "id": "transport-subway:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["in", "kind", "subway"],
+ ["!has", "service"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "hsl(207,23%,28%)",
+ "line-width": {
+ "stops": [
+ [11, 0],
+ [12, 1],
+ [15, 3],
+ [16, 3],
+ [18, 6],
+ [19, 8],
+ [20, 10]
+ ]
+ },
+ "line-opacity": {"stops": [[11, 0], [12, 1]]}
+ }
+ },
+ {
+ "id": "transport-lightrail:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 8,
+ "filter": [
+ "all",
+ ["in", "kind", "light_rail"],
+ ["!has", "service"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[8, 1], [13, 1], [15, 1], [20, 14]]},
+ "line-opacity": {"stops": [[11, 0], [12, 1]]}
+ }
+ },
+ {
+ "id": "transport-lightrail-service:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ ["in", "kind", "light_rail"],
+ ["has", "service"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[14, 0], [15, 1], [16, 1], [20, 14]]}
+ }
+ },
+ {
+ "id": "transport-rail:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 8,
+ "filter": [
+ "all",
+ ["in", "kind", "rail"],
+ ["!has", "service"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[8, 1], [13, 1], [15, 1], [20, 14]]},
+ "line-opacity": {"stops": [[8, 0], [9, 1]]}
+ }
+ },
+ {
+ "id": "transport-rail-service:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ ["in", "kind", "rail"],
+ ["has", "service"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[14, 0], [15, 1], [16, 1], [20, 14]]}
+ }
+ },
+ {
+ "id": "transport-monorail:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["in", "kind", "monorail"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[15, 0], [16, 5], [18, 7], [20, 20]]},
+ "line-dasharray": [0.1, 0.5]
+ }
+ },
+ {
+ "id": "transport-funicular:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["in", "kind", "funicular"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[15, 0], [16, 5], [18, 7], [20, 20]]},
+ "line-dasharray": [0.1, 0.5]
+ }
+ },
+ {
+ "id": "transport-tram",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["in", "kind", "tram"],
+ ["!has", "service"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "paint": {
+ "line-width": {"stops": [[13, 0], [16, 1], [17, 2], [18, 3], [20, 5]]},
+ "line-color": "hsl(208,14%,27%)"
+ }
+ },
+ {
+ "id": "transport-narrowgauge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["in", "kind", "narrow_gauge"],
+ ["!has", "service"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "paint": {
+ "line-width": {"stops": [[13, 0], [16, 1], [17, 2], [18, 3], [20, 5]]},
+ "line-color": "hsl(208,14%,27%)"
+ }
+ },
+ {
+ "id": "transport-subway",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["in", "kind", "subway"],
+ ["!has", "service"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "rgb(42,55,67)",
+ "line-width": {
+ "stops": [
+ [11, 0],
+ [12, 1],
+ [15, 2],
+ [16, 2],
+ [18, 5],
+ [19, 6],
+ [20, 8]
+ ]
+ },
+ "line-dasharray": [2, 2],
+ "line-opacity": {"stops": [[14, 0], [15, 1]]}
+ }
+ },
+ {
+ "id": "transport-lightrail",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ ["in", "kind", "light_rail"],
+ ["!has", "service"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "rgb(44,52,59)",
+ "line-width": {"stops": [[14, 0], [15, 1], [20, 10]]},
+ "line-dasharray": [2, 2],
+ "line-opacity": {"stops": [[14, 0], [15, 1]]}
+ }
+ },
+ {
+ "id": "transport-lightrail-service",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["in", "kind", "light_rail"],
+ ["has", "service"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "rgb(44,52,59)",
+ "line-width": {"stops": [[15, 0], [16, 1], [20, 10]]},
+ "line-dasharray": [2, 2]
+ }
+ },
+ {
+ "id": "transport-rail",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ ["in", "kind", "rail"],
+ ["!has", "service"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "rgb(44,52,59)",
+ "line-width": {"stops": [[14, 0], [15, 1], [20, 10]]},
+ "line-dasharray": [2, 2],
+ "line-opacity": {"stops": [[14, 0], [15, 1]]}
+ }
+ },
+ {
+ "id": "transport-rail-service",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["in", "kind", "rail"],
+ ["has", "service"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "paint": {
+ "line-color": "rgb(44,52,59)",
+ "line-width": {"stops": [[15, 0], [16, 1], [20, 10]]},
+ "line-dasharray": [2, 2]
+ }
+ },
+ {
+ "id": "transport-monorail",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["in", "kind", "monorail"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "paint": {
+ "line-width": {"stops": [[13, 0], [16, 1], [17, 2], [18, 3], [20, 5]]},
+ "line-color": "hsl(208,14%,27%)"
+ }
+ },
+ {
+ "id": "transport-funicular",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["in", "kind", "funicular"],
+ ["!=", "bridge", true],
+ ["!=", "tunnel", true]
+ ],
+ "paint": {
+ "line-width": {"stops": [[13, 0], [16, 1], [17, 2], [18, 3], [20, 5]]},
+ "line-color": "hsl(208,14%,27%)"
+ }
+ },
+ {
+ "id": "transport-ferry",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "ferries",
+ "minzoom": 10,
+ "paint": {
+ "line-color": "rgb(36,64,84)",
+ "line-width": {"stops": [[10, 1], [13, 2], [14, 3], [16, 4], [17, 6]]},
+ "line-opacity": {"stops": [[10, 0], [11, 1]]},
+ "line-dasharray": [1, 1]
+ }
+ },
+ {
+ "id": "bridge-way-footway:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["==", "bridge", true], ["in", "kind", "footway"]],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(22,17,11)",
+ "line-opacity": 0.5,
+ "line-width": {
+ "stops": [[15, 0], [16, 7], [18, 10], [19, 17], [20, 31]]
+ }
+ }
+ },
+ {
+ "id": "bridge-way-steps:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["==", "bridge", true], ["in", "kind", "steps"]],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(22,17,11)",
+ "line-opacity": 0.5,
+ "line-width": {
+ "stops": [[15, 0], [16, 7], [18, 10], [19, 17], [20, 31]]
+ }
+ }
+ },
+ {
+ "id": "bridge-way-path:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["==", "bridge", true], ["in", "kind", "path"]],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(22,17,11)",
+ "line-opacity": 0.5,
+ "line-width": {
+ "stops": [[15, 0], [16, 7], [18, 10], [19, 17], [20, 31]]
+ }
+ }
+ },
+ {
+ "id": "bridge-way-cycleway:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["==", "bridge", true], ["in", "kind", "cycleway"]],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(22,17,11)",
+ "line-opacity": 0.5,
+ "line-width": {
+ "stops": [[15, 0], [16, 7], [18, 10], [19, 17], [20, 31]]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-track:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "track"], ["==", "bridge", true]],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(22,17,11)",
+ "line-opacity": {"stops": [[14, 0], [15, 1]]},
+ "line-width": {
+ "stops": [[14, 3], [16, 6], [18, 25], [19, 67], [20, 134]]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-pedestrian:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "pedestrian"], ["==", "bridge", true]],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(22,17,11)",
+ "line-opacity": {"stops": [[12, 0], [13, 1]]},
+ "line-width": {
+ "stops": [[12, 3], [14, 4], [16, 8], [18, 36], [19, 90], [20, 179]]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-service:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "service"], ["==", "bridge", true]],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(22,17,11)",
+ "line-opacity": {"stops": [[14, 0], [15, 1]]},
+ "line-width": {
+ "stops": [[14, 3], [16, 6], [18, 25], [19, 67], [20, 134]]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-livingstreet:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "living_street"],
+ ["==", "bridge", true]
+ ],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(22,17,11)",
+ "line-opacity": {"stops": [[12, 0], [13, 1]]},
+ "line-width": {
+ "stops": [[12, 3], [14, 4], [16, 8], [18, 36], [19, 90], [20, 179]]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-residential:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "residential"], ["==", "bridge", true]],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(22,17,11)",
+ "line-opacity": {"stops": [[12, 0], [13, 1]]},
+ "line-width": {
+ "stops": [[12, 3], [14, 4], [16, 8], [18, 36], [19, 90], [20, 179]]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-unclassified:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "unclassified"], ["==", "bridge", true]],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(22,17,11)",
+ "line-opacity": {"stops": [[12, 0], [13, 1]]},
+ "line-width": {
+ "stops": [[12, 3], [14, 4], [16, 8], [18, 36], [19, 90], [20, 179]]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-busway:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "busway"], ["==", "bridge", true]],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {"line-color": "rgb(22,17,11)", "line-opacity": 0.5}
+ },
+ {
+ "id": "bridge-street-busguideway:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "bus_guideway"], ["==", "bridge", true]],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {"line-color": "rgb(22,17,11)", "line-opacity": 0.5}
+ },
+ {
+ "id": "bridge-street-tertiary-link:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "tertiary"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(22,17,11)",
+ "line-opacity": {"stops": [[12, 0], [13, 1]]},
+ "line-width": {
+ "stops": [[12, 3], [14, 4], [16, 8], [18, 36], [19, 90], [20, 179]]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-secondary-link:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "secondary"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(22,17,11)",
+ "line-opacity": 0.5,
+ "line-width": {
+ "stops": [[12, 3], [14, 4], [16, 10], [18, 20], [20, 56]]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-primary-link:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "primary"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(22,17,11)",
+ "line-opacity": 0.5,
+ "line-width": {
+ "stops": [[12, 3], [14, 4], [16, 10], [18, 20], [20, 56]]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-trunk-link:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "trunk"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(22,17,11)",
+ "line-opacity": 0.5,
+ "line-width": {
+ "stops": [[12, 3], [14, 4], [16, 10], [18, 20], [20, 56]]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-motorway-link:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "motorway"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(22,17,11)",
+ "line-opacity": 0.5,
+ "line-width": {
+ "stops": [[12, 3], [14, 4], [16, 10], [18, 20], [20, 56]]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-tertiary:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "tertiary"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(22,17,11)",
+ "line-opacity": {"stops": [[12, 0], [13, 1]]},
+ "line-width": {
+ "stops": [[12, 3], [14, 4], [16, 8], [18, 36], [19, 90], [20, 179]]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-secondary:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "secondary"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(22,17,11)",
+ "line-opacity": {"stops": [[11, 0], [12, 1]]},
+ "line-width": {
+ "stops": [[11, 3], [14, 7], [16, 11], [18, 42], [19, 95], [20, 193]]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-primary:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "primary"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(22,17,11)",
+ "line-opacity": 0.5,
+ "line-width": {
+ "stops": [
+ [8, 0],
+ [9, 1],
+ [10, 6],
+ [14, 8],
+ [16, 17],
+ [18, 50],
+ [19, 104],
+ [20, 202]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-trunk:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "trunk"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(22,17,11)",
+ "line-opacity": 0.5,
+ "line-width": {
+ "stops": [
+ [7, 0],
+ [8, 3],
+ [10, 6],
+ [14, 8],
+ [16, 17],
+ [18, 50],
+ [19, 104],
+ [20, 202]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-motorway:bridge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "motorway"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-cap": "butt", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(22,17,11)",
+ "line-opacity": 0.5,
+ "line-width": {
+ "stops": [
+ [5, 0],
+ [6, 3],
+ [10, 7],
+ [14, 7],
+ [16, 20],
+ [18, 53],
+ [19, 118],
+ [20, 235]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-pedestrian-zone",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "street_polygons",
+ "filter": ["all", ["==", "bridge", true], ["==", "kind", "pedestrian"]],
+ "paint": {
+ "fill-color": "hsl(0,0%,0%)",
+ "fill-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "bridge-way-footway:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["==", "bridge", true], ["in", "kind", "footway"]],
+ "layout": {"line-cap": "butt"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 5], [18, 7], [19, 12], [20, 22]]
+ },
+ "line-color": "rgb(40,26,44)"
+ }
+ },
+ {
+ "id": "bridge-way-steps:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["==", "bridge", true], ["in", "kind", "steps"]],
+ "layout": {"line-cap": "butt"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 5], [18, 7], [19, 12], [20, 22]]
+ },
+ "line-color": "rgb(40,26,44)"
+ }
+ },
+ {
+ "id": "bridge-way-path:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["==", "bridge", true], ["in", "kind", "path"]],
+ "layout": {"line-cap": "butt"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 5], [18, 7], [19, 12], [20, 22]]
+ },
+ "line-color": "rgb(40,26,44)"
+ }
+ },
+ {
+ "id": "bridge-way-cycleway:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["==", "bridge", true], ["in", "kind", "cycleway"]],
+ "layout": {"line-cap": "butt"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 5], [18, 7], [19, 12], [20, 22]]
+ },
+ "line-color": "rgb(26,34,40)"
+ }
+ },
+ {
+ "id": "bridge-street-track:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "track"], ["==", "bridge", true]],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "rgb(38,38,38)",
+ "line-width": {
+ "stops": [[14, 2], [16, 4], [18, 18], [19, 48], [20, 96]]
+ },
+ "line-opacity": {"stops": [[14, 0], [15, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-pedestrian:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "pedestrian"], ["==", "bridge", true]],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "rgb(38,38,38)",
+ "line-width": {
+ "stops": [[12, 2], [14, 3], [16, 6], [18, 26], [19, 64], [20, 128]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-service:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "service"], ["==", "bridge", true]],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "rgb(37,36,34)",
+ "line-width": {
+ "stops": [[14, 1], [16, 3], [18, 12], [19, 32], [20, 48]]
+ },
+ "line-opacity": {"stops": [[15, 0], [16, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-livingstreet:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "living_street"],
+ ["==", "bridge", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "rgb(38,38,38)",
+ "line-width": {
+ "stops": [[12, 2], [14, 3], [16, 6], [18, 26], [19, 64], [20, 128]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-residential:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "residential"], ["==", "bridge", true]],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "rgb(38,38,38)",
+ "line-width": {
+ "stops": [[12, 2], [14, 3], [16, 6], [18, 26], [19, 64], [20, 128]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-unclassified:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "unclassified"], ["==", "bridge", true]],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "rgb(38,38,38)",
+ "line-width": {
+ "stops": [[12, 2], [14, 3], [16, 6], [18, 26], [19, 64], [20, 128]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-busway:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "busway"], ["==", "bridge", true]],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "rgb(37,36,34)",
+ "line-width": {
+ "stops": [[14, 1], [16, 3], [18, 12], [19, 32], [20, 48]]
+ },
+ "line-opacity": {"stops": [[15, 0], [16, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-busguideway:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "bus_guideway"], ["==", "bridge", true]],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "rgb(37,36,34)",
+ "line-width": {
+ "stops": [[14, 1], [16, 3], [18, 12], [19, 32], [20, 48]]
+ },
+ "line-opacity": {"stops": [[15, 0], [16, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-tertiary-link:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "tertiary"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "rgb(38,38,38)",
+ "line-width": {
+ "stops": [[12, 2], [14, 3], [16, 6], [18, 26], [19, 64], [20, 128]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-secondary-link:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "secondary"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(28,72%,31%)",
+ "line-width": {"stops": [[12, 2], [14, 3], [16, 7], [18, 14], [20, 40]]}
+ }
+ },
+ {
+ "id": "bridge-street-primary-link:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "primary"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(28,72%,31%)",
+ "line-width": {"stops": [[12, 2], [14, 3], [16, 7], [18, 14], [20, 40]]}
+ }
+ },
+ {
+ "id": "bridge-street-trunk-link:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "trunk"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(28,72%,31%)",
+ "line-width": {"stops": [[12, 2], [14, 3], [16, 7], [18, 14], [20, 40]]}
+ }
+ },
+ {
+ "id": "bridge-street-motorway-link:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "motorway"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(28,72%,31%)",
+ "line-width": {"stops": [[12, 2], [14, 3], [16, 7], [18, 14], [20, 40]]}
+ }
+ },
+ {
+ "id": "bridge-street-tertiary:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "tertiary"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "rgb(38,38,38)",
+ "line-width": {
+ "stops": [[12, 2], [14, 3], [16, 6], [18, 26], [19, 64], [20, 128]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-secondary:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "secondary"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(28,72%,31%)",
+ "line-width": {
+ "stops": [[11, 2], [14, 5], [16, 8], [18, 30], [19, 68], [20, 138]]
+ },
+ "line-opacity": {"stops": [[11, 0], [12, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-primary:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "primary"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(28,72%,31%)",
+ "line-width": {
+ "stops": [
+ [8, 0],
+ [9, 1],
+ [10, 4],
+ [14, 6],
+ [16, 12],
+ [18, 36],
+ [19, 74],
+ [20, 144]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-trunk:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "trunk"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(28,72%,31%)",
+ "line-width": {
+ "stops": [
+ [6, 0],
+ [7, 2],
+ [10, 4],
+ [14, 6],
+ [16, 12],
+ [18, 36],
+ [19, 74],
+ [20, 144]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-motorway:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "motorway"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(28,72%,31%)",
+ "line-width": {
+ "stops": [
+ [5, 0],
+ [6, 2],
+ [10, 5],
+ [14, 5],
+ [16, 14],
+ [18, 38],
+ [19, 84],
+ [20, 168]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-way-footway",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["==", "bridge", true], ["in", "kind", "footway"]],
+ "layout": {"line-cap": "butt"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 4], [18, 6], [19, 10], [20, 20]]
+ },
+ "line-color": "rgb(16,0,20)"
+ }
+ },
+ {
+ "id": "bridge-way-steps",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["==", "bridge", true], ["in", "kind", "steps"]],
+ "layout": {"line-cap": "butt"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 4], [18, 6], [19, 10], [20, 20]]
+ },
+ "line-color": "rgb(16,0,20)"
+ }
+ },
+ {
+ "id": "bridge-way-path",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["==", "bridge", true], ["in", "kind", "path"]],
+ "layout": {"line-cap": "butt"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 4], [18, 6], [19, 10], [20, 20]]
+ },
+ "line-color": "rgb(16,0,20)"
+ }
+ },
+ {
+ "id": "bridge-way-cycleway",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["==", "bridge", true], ["in", "kind", "cycleway"]],
+ "layout": {"line-cap": "butt"},
+ "paint": {
+ "line-width": {
+ "stops": [[15, 0], [16, 4], [18, 6], [19, 10], [20, 20]]
+ },
+ "line-color": "hsl(203,100%,3%)"
+ }
+ },
+ {
+ "id": "bridge-street-track",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "track"], ["==", "bridge", true]],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(0,0%,0%)",
+ "line-width": {
+ "stops": [[14, 1], [16, 3], [18, 16], [19, 44], [20, 88]]
+ },
+ "line-opacity": {"stops": [[14, 0], [15, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-pedestrian",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "pedestrian"], ["==", "bridge", true]],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(0,0%,0%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-service",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "service"], ["==", "bridge", true]],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "rgb(8,8,8)",
+ "line-width": {
+ "stops": [[14, 1], [16, 2], [18, 10], [19, 28], [20, 40]]
+ },
+ "line-opacity": {"stops": [[15, 0], [16, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-livingstreet",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "living_street"],
+ ["==", "bridge", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(0,0%,0%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-residential",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "residential"], ["==", "bridge", true]],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(0,0%,0%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-unclassified",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "unclassified"], ["==", "bridge", true]],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(0,0%,0%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-busway",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "busway"], ["==", "bridge", true]],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "rgb(8,8,8)",
+ "line-width": {
+ "stops": [[14, 1], [16, 2], [18, 10], [19, 28], [20, 40]]
+ },
+ "line-opacity": {"stops": [[15, 0], [16, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-busguideway",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": ["all", ["==", "kind", "bus_guideway"], ["==", "bridge", true]],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "rgb(8,8,8)",
+ "line-width": {
+ "stops": [[14, 1], [16, 2], [18, 10], [19, 28], [20, 40]]
+ },
+ "line-opacity": {"stops": [[15, 0], [16, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-track-bicycle",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "track"],
+ ["==", "bicycle", "designated"],
+ ["==", "bridge", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {"line-color": "hsl(0,0%,0%)"}
+ },
+ {
+ "id": "bridge-street-pedestrian-bicycle",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "pedestrian"],
+ ["==", "bicycle", "designated"],
+ ["==", "bridge", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(203,100%,3%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-service-bicycle",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "service"],
+ ["==", "bicycle", "designated"],
+ ["==", "bridge", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {"line-color": "hsl(0,0%,0%)"}
+ },
+ {
+ "id": "bridge-street-livingstreet-bicycle",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "living_street"],
+ ["==", "bicycle", "designated"],
+ ["==", "bridge", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(203,100%,3%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-residential-bicycle",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "residential"],
+ ["==", "bicycle", "designated"],
+ ["==", "bridge", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(203,100%,3%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-unclassified-bicycle",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "kind", "unclassified"],
+ ["==", "bicycle", "designated"],
+ ["==", "bridge", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "round"},
+ "paint": {
+ "line-color": "hsl(203,100%,3%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-tertiary-link",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "tertiary"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(0,0%,0%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-secondary-link",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "secondary"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(48,100%,17%)",
+ "line-width": {"stops": [[12, 1], [14, 2], [16, 5], [18, 12], [20, 38]]}
+ }
+ },
+ {
+ "id": "bridge-street-primary-link",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "primary"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(48,100%,17%)",
+ "line-width": {"stops": [[12, 1], [14, 2], [16, 5], [18, 12], [20, 38]]}
+ }
+ },
+ {
+ "id": "bridge-street-trunk-link",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "trunk"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(48,100%,17%)",
+ "line-width": {"stops": [[12, 1], [14, 2], [16, 5], [18, 12], [20, 38]]}
+ }
+ },
+ {
+ "id": "bridge-street-motorway-link",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "motorway"],
+ ["==", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(34,100%,23%)",
+ "line-width": {"stops": [[12, 1], [14, 2], [16, 5], [18, 12], [20, 38]]}
+ }
+ },
+ {
+ "id": "bridge-street-tertiary",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "tertiary"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(0,0%,0%)",
+ "line-width": {
+ "stops": [[12, 1], [14, 2], [16, 5], [18, 24], [19, 60], [20, 120]]
+ },
+ "line-opacity": {"stops": [[12, 0], [13, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-secondary",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "secondary"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(48,100%,17%)",
+ "line-width": {
+ "stops": [[11, 1], [14, 4], [16, 6], [18, 28], [19, 64], [20, 130]]
+ },
+ "line-opacity": {"stops": [[11, 0], [12, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-primary",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "primary"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(48,100%,17%)",
+ "line-width": {
+ "stops": [
+ [8, 0],
+ [9, 2],
+ [10, 3],
+ [14, 5],
+ [16, 10],
+ [18, 34],
+ [19, 70],
+ [20, 140]
+ ]
+ },
+ "line-opacity": {"stops": [[8, 0], [9, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-trunk",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "trunk"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(48,100%,17%)",
+ "line-width": {
+ "stops": [
+ [6, 0],
+ [7, 1],
+ [10, 3],
+ [14, 5],
+ [16, 10],
+ [18, 34],
+ [19, 70],
+ [20, 140]
+ ]
+ },
+ "line-opacity": {"stops": [[6, 0], [7, 1]]}
+ }
+ },
+ {
+ "id": "bridge-street-motorway",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["==", "bridge", true],
+ ["in", "kind", "motorway"],
+ ["!=", "link", true]
+ ],
+ "layout": {"line-join": "round", "line-cap": "butt"},
+ "paint": {
+ "line-color": "hsl(34,100%,23%)",
+ "line-width": {
+ "stops": [
+ [5, 0],
+ [6, 1],
+ [10, 4],
+ [14, 4],
+ [16, 12],
+ [18, 36],
+ [19, 80],
+ [20, 160]
+ ]
+ },
+ "line-opacity": {"stops": [[5, 0], [6, 1]]}
+ }
+ },
+ {
+ "id": "bridge-transport-tram:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["in", "kind", "tram"],
+ ["!has", "service"],
+ ["==", "bridge", true]
+ ],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[15, 0], [16, 5], [18, 7], [20, 20]]},
+ "line-dasharray": [0.1, 0.5]
+ }
+ },
+ {
+ "id": "bridge-transport-narrowgauge:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["in", "kind", "narrow_gauge"],
+ ["!has", "service"],
+ ["==", "bridge", true]
+ ],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[15, 0], [16, 5], [18, 7], [20, 20]]},
+ "line-dasharray": [0.1, 0.5]
+ }
+ },
+ {
+ "id": "bridge-transport-subway:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["in", "kind", "subway"],
+ ["!has", "service"],
+ ["==", "bridge", true]
+ ],
+ "paint": {
+ "line-color": "hsl(207,23%,28%)",
+ "line-width": {
+ "stops": [
+ [11, 0],
+ [12, 1],
+ [15, 3],
+ [16, 3],
+ [18, 6],
+ [19, 8],
+ [20, 10]
+ ]
+ },
+ "line-opacity": {"stops": [[11, 0], [12, 1]]}
+ }
+ },
+ {
+ "id": "bridge-transport-lightrail:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 8,
+ "filter": [
+ "all",
+ ["in", "kind", "light_rail"],
+ ["!has", "service"],
+ ["==", "bridge", true]
+ ],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[8, 1], [13, 1], [15, 1], [20, 14]]},
+ "line-opacity": {"stops": [[11, 0], [12, 1]]}
+ }
+ },
+ {
+ "id": "bridge-transport-lightrail-service:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ ["in", "kind", "light_rail"],
+ ["has", "service"],
+ ["==", "bridge", true]
+ ],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[14, 0], [15, 1], [16, 1], [20, 14]]}
+ }
+ },
+ {
+ "id": "bridge-transport-rail:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 8,
+ "filter": [
+ "all",
+ ["in", "kind", "rail"],
+ ["!has", "service"],
+ ["==", "bridge", true]
+ ],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[8, 1], [13, 1], [15, 1], [20, 14]]},
+ "line-opacity": {"stops": [[8, 0], [9, 1]]}
+ }
+ },
+ {
+ "id": "bridge-transport-rail-service:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ ["in", "kind", "rail"],
+ ["has", "service"],
+ ["==", "bridge", true]
+ ],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[14, 0], [15, 1], [16, 1], [20, 14]]}
+ }
+ },
+ {
+ "id": "bridge-transport-monorail:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["in", "kind", "monorail"], ["==", "bridge", true]],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[15, 0], [16, 5], [18, 7], [20, 20]]},
+ "line-dasharray": [0.1, 0.5]
+ }
+ },
+ {
+ "id": "bridge-transport-funicular:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": ["all", ["in", "kind", "funicular"], ["==", "bridge", true]],
+ "paint": {
+ "line-color": "hsl(208,14%,27%)",
+ "line-width": {"stops": [[15, 0], [16, 5], [18, 7], [20, 20]]},
+ "line-dasharray": [0.1, 0.5]
+ }
+ },
+ {
+ "id": "bridge-transport-tram",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["in", "kind", "tram"],
+ ["!has", "service"],
+ ["==", "bridge", true]
+ ],
+ "paint": {
+ "line-width": {"stops": [[13, 0], [16, 1], [17, 2], [18, 3], [20, 5]]},
+ "line-color": "hsl(208,14%,27%)"
+ }
+ },
+ {
+ "id": "bridge-transport-narrowgauge",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["in", "kind", "narrow_gauge"],
+ ["!has", "service"],
+ ["==", "bridge", true]
+ ],
+ "paint": {
+ "line-width": {"stops": [[13, 0], [16, 1], [17, 2], [18, 3], [20, 5]]},
+ "line-color": "hsl(208,14%,27%)"
+ }
+ },
+ {
+ "id": "bridge-transport-subway",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "filter": [
+ "all",
+ ["in", "kind", "subway"],
+ ["!has", "service"],
+ ["==", "bridge", true]
+ ],
+ "paint": {
+ "line-color": "rgb(42,55,67)",
+ "line-width": {
+ "stops": [
+ [11, 0],
+ [12, 1],
+ [15, 2],
+ [16, 2],
+ [18, 5],
+ [19, 6],
+ [20, 8]
+ ]
+ },
+ "line-dasharray": [2, 2],
+ "line-opacity": {"stops": [[14, 0], [15, 1]]}
+ }
+ },
+ {
+ "id": "bridge-transport-lightrail",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ ["in", "kind", "light_rail"],
+ ["!has", "service"],
+ ["==", "bridge", true]
+ ],
+ "paint": {
+ "line-color": "rgb(44,52,59)",
+ "line-width": {"stops": [[14, 0], [15, 1], [20, 10]]},
+ "line-dasharray": [2, 2],
+ "line-opacity": {"stops": [[14, 0], [15, 1]]}
+ }
+ },
+ {
+ "id": "bridge-transport-lightrail-service",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["in", "kind", "light_rail"],
+ ["has", "service"],
+ ["==", "bridge", true]
+ ],
+ "paint": {
+ "line-color": "rgb(44,52,59)",
+ "line-width": {"stops": [[15, 0], [16, 1], [20, 10]]},
+ "line-dasharray": [2, 2]
+ }
+ },
+ {
+ "id": "bridge-transport-rail",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ ["in", "kind", "rail"],
+ ["!has", "service"],
+ ["==", "bridge", true]
+ ],
+ "paint": {
+ "line-color": "rgb(44,52,59)",
+ "line-width": {"stops": [[14, 0], [15, 1], [20, 10]]},
+ "line-dasharray": [2, 2],
+ "line-opacity": {"stops": [[14, 0], [15, 1]]}
+ }
+ },
+ {
+ "id": "bridge-transport-rail-service",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ ["in", "kind", "rail"],
+ ["has", "service"],
+ ["==", "bridge", true]
+ ],
+ "paint": {
+ "line-color": "rgb(44,52,59)",
+ "line-width": {"stops": [[15, 0], [16, 1], [20, 10]]},
+ "line-dasharray": [2, 2]
+ }
+ },
+ {
+ "id": "bridge-transport-monorail",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": ["all", ["in", "kind", "monorail"], ["==", "bridge", true]],
+ "paint": {
+ "line-width": {"stops": [[13, 0], [16, 1], [17, 2], [18, 3], [20, 5]]},
+ "line-color": "hsl(208,14%,27%)"
+ }
+ },
+ {
+ "id": "bridge-transport-funicular",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 13,
+ "filter": ["all", ["in", "kind", "funicular"], ["==", "bridge", true]],
+ "paint": {
+ "line-width": {"stops": [[13, 0], [16, 1], [17, 2], [18, 3], [20, 5]]},
+ "line-color": "hsl(208,14%,27%)"
+ }
+ },
+ {
+ "id": "poi-amenity",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "pois",
+ "minzoom": 16,
+ "filter": ["to-boolean", ["get", "amenity"]],
+ "layout": {
+ "icon-size": {"stops": [[16, 0.5], [19, 0.5], [20, 1]]},
+ "symbol-placement": "point",
+ "icon-optional": true,
+ "text-font": ["noto_sans_regular"],
+ "icon-image": [
+ "match",
+ ["get", "amenity"],
+ "arts_centre",
+ "basics:icon-art_gallery",
+ "atm",
+ "basics:icon-atm",
+ "bank",
+ "basics:icon-bank",
+ "bar",
+ "basics:icon-bar",
+ "bench",
+ "basics:icon-bench",
+ "bicycle_rental",
+ "basics:icon-bicycle_share",
+ "biergarten",
+ "basics:icon-beergarden",
+ "cafe",
+ "basics:icon-cafe",
+ "car_rental",
+ "basics:icon-car_rental",
+ "car_sharing",
+ "basics:icon-car_rental",
+ "car_wash",
+ "basics:icon-car_wash",
+ "cinema",
+ "basics:icon-cinema",
+ "college",
+ "basics:icon-college",
+ "community_centre",
+ "basics:icon-community",
+ "dentist",
+ "basics:icon-dentist",
+ "doctors",
+ "basics:icon-doctor",
+ "dog_park",
+ "basics:icon-dog_park",
+ "drinking_water",
+ "basics:icon-drinking_water",
+ "embassy",
+ "basics:icon-embassy",
+ "fast_food",
+ "basics:icon-fast_food",
+ "fire_station",
+ "basics:icon-fire_station",
+ "fountain",
+ "basics:icon-fountain",
+ "grave_yard",
+ "basics:icon-cemetery",
+ "hospital",
+ "basics:icon-hospital",
+ "hunting_stand",
+ "basics:icon-huntingstand",
+ "library",
+ "basics:icon-library",
+ "marketplace",
+ "basics:icon-marketplace",
+ "nightclub",
+ "basics:icon-nightclub",
+ "nursing_home",
+ "basics:icon-nursinghome",
+ "pharmacy",
+ "basics:icon-pharmacy",
+ "place_of_worship",
+ "basics:icon-place_of_worship",
+ "playground",
+ "basics:icon-playground",
+ "police",
+ "basics:icon-police",
+ "post_box",
+ "basics:icon-postbox",
+ "post_office",
+ "basics:icon-post",
+ "prison",
+ "basics:icon-prison",
+ "pub",
+ "basics:icon-beer",
+ "recycling",
+ "basics:icon-recycling",
+ "restaurant",
+ "basics:icon-restaurant",
+ "school",
+ "basics:icon-school",
+ "shelter",
+ "basics:icon-shelter",
+ "telephone",
+ "basics:icon-telephone",
+ "theatre",
+ "basics:icon-theatre",
+ "toilets",
+ "basics:icon-toilet",
+ "townhall",
+ "basics:icon-town_hall",
+ "vending_machine",
+ "basics:icon-vendingmachine",
+ "veterinary",
+ "basics:icon-veterinary",
+ "waste_basket",
+ "basics:icon-waste_basket",
+ ""
+ ]
+ },
+ "paint": {
+ "icon-opacity": {"stops": [[16, 0], [17, 0.4]]},
+ "text-opacity": {"stops": [[16, 0], [17, 0.4]]},
+ "icon-color": "hsl(0,0%,67%)",
+ "text-color": "hsl(0,0%,67%)"
+ }
+ },
+ {
+ "id": "poi-leisure",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "pois",
+ "minzoom": 16,
+ "filter": ["to-boolean", ["get", "leisure"]],
+ "layout": {
+ "icon-size": {"stops": [[16, 0.5], [19, 0.5], [20, 1]]},
+ "symbol-placement": "point",
+ "icon-optional": true,
+ "text-font": ["noto_sans_regular"],
+ "icon-image": [
+ "match",
+ ["get", "leisure"],
+ "golf_course",
+ "basics:icon-golf",
+ "ice_rink",
+ "basics:icon-icerink",
+ "pitch",
+ "basics:icon-pitch",
+ "stadium",
+ "basics:icon-stadium",
+ "swimming_pool",
+ "basics:icon-swimming",
+ "water_park",
+ "basics:icon-waterpark",
+ "basics:icon-sports"
+ ]
+ },
+ "paint": {
+ "icon-opacity": {"stops": [[16, 0], [17, 0.4]]},
+ "text-opacity": {"stops": [[16, 0], [17, 0.4]]},
+ "icon-color": "hsl(0,0%,67%)",
+ "text-color": "hsl(0,0%,67%)"
+ }
+ },
+ {
+ "id": "poi-tourism",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "pois",
+ "minzoom": 16,
+ "filter": ["to-boolean", ["get", "tourism"]],
+ "layout": {
+ "icon-size": {"stops": [[16, 0.5], [19, 0.5], [20, 1]]},
+ "symbol-placement": "point",
+ "icon-optional": true,
+ "text-font": ["noto_sans_regular"],
+ "icon-image": [
+ "match",
+ ["get", "tourism"],
+ "chalet",
+ "basics:icon-chalet",
+ "information",
+ "basics:transport-information",
+ "picnic_site",
+ "basics:icon-picnic_site",
+ "viewpoint",
+ "basics:icon-viewpoint",
+ "zoo",
+ "basics:icon-zoo",
+ ""
+ ]
+ },
+ "paint": {
+ "icon-opacity": {"stops": [[16, 0], [17, 0.4]]},
+ "text-opacity": {"stops": [[16, 0], [17, 0.4]]},
+ "icon-color": "hsl(0,0%,67%)",
+ "text-color": "hsl(0,0%,67%)"
+ }
+ },
+ {
+ "id": "poi-shop",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "pois",
+ "minzoom": 16,
+ "filter": ["to-boolean", ["get", "shop"]],
+ "layout": {
+ "icon-size": {"stops": [[16, 0.5], [19, 0.5], [20, 1]]},
+ "symbol-placement": "point",
+ "icon-optional": true,
+ "text-font": ["noto_sans_regular"],
+ "icon-image": [
+ "match",
+ ["get", "shop"],
+ "alcohol",
+ "basics:icon-alcohol_shop",
+ "bakery",
+ "basics:icon-bakery",
+ "beauty",
+ "basics:icon-beauty",
+ "beverages",
+ "basics:icon-beverages",
+ "books",
+ "basics:icon-books",
+ "butcher",
+ "basics:icon-butcher",
+ "chemist",
+ "basics:icon-chemist",
+ "clothes",
+ "basics:icon-clothes",
+ "doityourself",
+ "basics:icon-doityourself",
+ "dry_cleaning",
+ "basics:icon-drycleaning",
+ "florist",
+ "basics:icon-florist",
+ "furniture",
+ "basics:icon-furniture",
+ "garden_centre",
+ "basics:icon-garden_centre",
+ "general",
+ "basics:icon-shop",
+ "gift",
+ "basics:icon-gift",
+ "greengrocer",
+ "basics:icon-greengrocer",
+ "hairdresser",
+ "basics:icon-hairdresser",
+ "hardware",
+ "basics:icon-hardware",
+ "jewelry",
+ "basics:icon-jewelry_store",
+ "kiosk",
+ "basics:icon-kiosk",
+ "laundry",
+ "basics:icon-laundry",
+ "newsagent",
+ "basics:icon-newsagent",
+ "optican",
+ "basics:icon-optician",
+ "outdoor",
+ "basics:icon-outdoor",
+ "shoes",
+ "basics:icon-shoes",
+ "sports",
+ "basics:icon-sports",
+ "stationery",
+ "basics:icon-stationery",
+ "toys",
+ "basics:icon-toys",
+ "travel_agency",
+ "basics:icon-travel_agent",
+ "video",
+ "basics:icon-video",
+ "basics:icon-shop"
+ ]
+ },
+ "paint": {
+ "icon-opacity": {"stops": [[16, 0], [17, 0.4]]},
+ "text-opacity": {"stops": [[16, 0], [17, 0.4]]},
+ "icon-color": "hsl(0,0%,67%)",
+ "text-color": "hsl(0,0%,67%)"
+ }
+ },
+ {
+ "id": "poi-man_made",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "pois",
+ "minzoom": 16,
+ "filter": ["to-boolean", ["get", "man_made"]],
+ "layout": {
+ "icon-size": {"stops": [[16, 0.5], [19, 0.5], [20, 1]]},
+ "symbol-placement": "point",
+ "icon-optional": true,
+ "text-font": ["noto_sans_regular"],
+ "icon-image": [
+ "match",
+ ["get", "man_made"],
+ "lighthouse",
+ "basics:icon-lighthouse",
+ "surveillance",
+ "basics:icon-surveillance",
+ "tower",
+ "basics:icon-observation_tower",
+ "watermill",
+ "basics:icon-watermill",
+ "windmill",
+ "basics:icon-windmill",
+ ""
+ ]
+ },
+ "paint": {
+ "icon-opacity": {"stops": [[16, 0], [17, 0.4]]},
+ "text-opacity": {"stops": [[16, 0], [17, 0.4]]},
+ "icon-color": "hsl(0,0%,67%)",
+ "text-color": "hsl(0,0%,67%)"
+ }
+ },
+ {
+ "id": "poi-historic",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "pois",
+ "minzoom": 16,
+ "filter": ["to-boolean", ["get", "historic"]],
+ "layout": {
+ "icon-size": {"stops": [[16, 0.5], [19, 0.5], [20, 1]]},
+ "symbol-placement": "point",
+ "icon-optional": true,
+ "text-font": ["noto_sans_regular"],
+ "icon-image": [
+ "match",
+ ["get", "historic"],
+ "artwork",
+ "basics:icon-artwork",
+ "castle",
+ "basics:icon-castle",
+ "monument",
+ "basics:icon-monument",
+ "wayside_shrine",
+ "basics:icon-shrine",
+ "basics:icon-historic"
+ ]
+ },
+ "paint": {
+ "icon-opacity": {"stops": [[16, 0], [17, 0.4]]},
+ "text-opacity": {"stops": [[16, 0], [17, 0.4]]},
+ "icon-color": "hsl(0,0%,67%)",
+ "text-color": "hsl(0,0%,67%)"
+ }
+ },
+ {
+ "id": "poi-emergency",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "pois",
+ "minzoom": 16,
+ "filter": ["to-boolean", ["get", "emergency"]],
+ "layout": {
+ "icon-size": {"stops": [[16, 0.5], [19, 0.5], [20, 1]]},
+ "symbol-placement": "point",
+ "icon-optional": true,
+ "text-font": ["noto_sans_regular"],
+ "icon-image": [
+ "match",
+ ["get", "emergency"],
+ "defibrillator",
+ "basics:icon-defibrillator",
+ "fire_hydrant",
+ "basics:icon-hydrant",
+ "phone",
+ "basics:icon-emergency_phone",
+ ""
+ ]
+ },
+ "paint": {
+ "icon-opacity": {"stops": [[16, 0], [17, 0.4]]},
+ "text-opacity": {"stops": [[16, 0], [17, 0.4]]},
+ "icon-color": "hsl(0,0%,67%)",
+ "text-color": "hsl(0,0%,67%)"
+ }
+ },
+ {
+ "id": "poi-highway",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "pois",
+ "minzoom": 16,
+ "filter": ["to-boolean", ["get", "highway"]],
+ "layout": {
+ "icon-size": {"stops": [[16, 0.5], [19, 0.5], [20, 1]]},
+ "symbol-placement": "point",
+ "icon-optional": true,
+ "text-font": ["noto_sans_regular"]
+ },
+ "paint": {
+ "icon-opacity": {"stops": [[16, 0], [17, 0.4]]},
+ "text-opacity": {"stops": [[16, 0], [17, 0.4]]},
+ "icon-color": "hsl(0,0%,67%)",
+ "text-color": "hsl(0,0%,67%)"
+ }
+ },
+ {
+ "id": "poi-office",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "pois",
+ "minzoom": 16,
+ "filter": ["to-boolean", ["get", "office"]],
+ "layout": {
+ "icon-size": {"stops": [[16, 0.5], [19, 0.5], [20, 1]]},
+ "symbol-placement": "point",
+ "icon-optional": true,
+ "text-font": ["noto_sans_regular"]
+ },
+ "paint": {
+ "icon-opacity": {"stops": [[16, 0], [17, 0.4]]},
+ "text-opacity": {"stops": [[16, 0], [17, 0.4]]},
+ "icon-color": "hsl(0,0%,67%)",
+ "text-color": "hsl(0,0%,67%)"
+ }
+ },
+ {
+ "id": "boundary-country:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "boundaries",
+ "filter": [
+ "all",
+ ["==", "admin_level", 2],
+ ["!=", "maritime", true],
+ ["!=", "disputed", true],
+ ["!=", "coastline", true]
+ ],
+ "layout": {"line-cap": "round", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(16,11,6)",
+ "line-blur": 1,
+ "line-width": {"stops": [[2, 0], [3, 2], [10, 8]]},
+ "line-opacity": 0.75
+ }
+ },
+ {
+ "id": "boundary-country-disputed:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "boundaries",
+ "filter": [
+ "all",
+ ["==", "admin_level", 2],
+ ["==", "disputed", true],
+ ["!=", "maritime", true],
+ ["!=", "coastline", true]
+ ],
+ "paint": {
+ "line-width": {"stops": [[2, 0], [3, 2], [10, 8]]},
+ "line-opacity": 0.75,
+ "line-color": "rgb(16,11,6)"
+ }
+ },
+ {
+ "id": "boundary-state:outline",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "boundaries",
+ "filter": [
+ "all",
+ ["==", "admin_level", 4],
+ ["!=", "maritime", true],
+ ["!=", "disputed", true],
+ ["!=", "coastline", true]
+ ],
+ "layout": {"line-cap": "round", "line-join": "round"},
+ "paint": {
+ "line-color": "rgb(15,11,5)",
+ "line-blur": 1,
+ "line-width": {"stops": [[7, 0], [8, 2], [10, 4]]},
+ "line-opacity": 0.75
+ }
+ },
+ {
+ "id": "boundary-country",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "boundaries",
+ "filter": [
+ "all",
+ ["==", "admin_level", 2],
+ ["!=", "maritime", true],
+ ["!=", "disputed", true],
+ ["!=", "coastline", true]
+ ],
+ "layout": {"line-cap": "round", "line-join": "round"},
+ "paint": {
+ "line-color": "hsl(240,24%,28%)",
+ "line-width": {"stops": [[2, 0], [3, 1], [10, 4]]}
+ }
+ },
+ {
+ "id": "boundary-country-disputed",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "boundaries",
+ "filter": [
+ "all",
+ ["==", "admin_level", 2],
+ ["==", "disputed", true],
+ ["!=", "maritime", true],
+ ["!=", "coastline", true]
+ ],
+ "layout": {"line-cap": "square"},
+ "paint": {
+ "line-width": {"stops": [[2, 0], [3, 1], [10, 4]]},
+ "line-color": "hsl(246,17%,23%)",
+ "line-dasharray": [2, 1]
+ }
+ },
+ {
+ "id": "boundary-state",
+ "type": "line",
+ "source": "versatiles-shortbread",
+ "source-layer": "boundaries",
+ "filter": [
+ "all",
+ ["==", "admin_level", 4],
+ ["!=", "maritime", true],
+ ["!=", "disputed", true],
+ ["!=", "coastline", true]
+ ],
+ "layout": {"line-cap": "round", "line-join": "round"},
+ "paint": {
+ "line-color": "hsl(240,24%,28%)",
+ "line-width": {"stops": [[7, 0], [8, 1], [10, 2]]}
+ }
+ },
+ {
+ "id": "label-address-housenumber",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "addresses",
+ "minzoom": 17,
+ "filter": ["has", "housenumber"],
+ "layout": {
+ "text-field": "{housenumber}",
+ "text-font": ["noto_sans_regular"],
+ "symbol-placement": "point",
+ "text-anchor": "center",
+ "text-size": {"stops": [[17, 8], [19, 10]]}
+ },
+ "paint": {
+ "icon-color": "rgb(95,88,81)",
+ "text-color": "rgb(95,88,81)",
+ "text-halo-color": "rgb(23,17,10)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-motorway-shield",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "street_labels",
+ "minzoom": 14,
+ "filter": ["==", "kind", "motorway"],
+ "layout": {
+ "text-field": "{ref}",
+ "text-font": ["noto_sans_bold"],
+ "symbol-placement": "line",
+ "text-anchor": "center",
+ "text-size": {"stops": [[14, 10], [18, 12], [20, 16]]}
+ },
+ "paint": {
+ "icon-color": "hsl(0,0%,0%)",
+ "text-color": "hsl(0,0%,0%)",
+ "text-halo-color": "hsl(34,100%,23%)",
+ "text-halo-width": 0.1,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-street-pedestrian",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "street_labels",
+ "minzoom": 12,
+ "filter": ["==", "kind", "pedestrian"],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "text-font": ["noto_sans_regular"],
+ "symbol-placement": "line",
+ "text-anchor": "center",
+ "text-size": {"stops": [[12, 10], [15, 13]]}
+ },
+ "paint": {
+ "icon-color": "hsl(240,14%,77%)",
+ "text-color": "hsl(240,14%,77%)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-street-livingstreet",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "street_labels",
+ "minzoom": 12,
+ "filter": ["==", "kind", "living_street"],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "text-font": ["noto_sans_regular"],
+ "symbol-placement": "line",
+ "text-anchor": "center",
+ "text-size": {"stops": [[12, 10], [15, 13]]}
+ },
+ "paint": {
+ "icon-color": "hsl(240,14%,77%)",
+ "text-color": "hsl(240,14%,77%)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-street-residential",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "street_labels",
+ "minzoom": 12,
+ "filter": ["==", "kind", "residential"],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "text-font": ["noto_sans_regular"],
+ "symbol-placement": "line",
+ "text-anchor": "center",
+ "text-size": {"stops": [[12, 10], [15, 13]]}
+ },
+ "paint": {
+ "icon-color": "hsl(240,14%,77%)",
+ "text-color": "hsl(240,14%,77%)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-street-unclassified",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "street_labels",
+ "minzoom": 12,
+ "filter": ["==", "kind", "unclassified"],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "text-font": ["noto_sans_regular"],
+ "symbol-placement": "line",
+ "text-anchor": "center",
+ "text-size": {"stops": [[12, 10], [15, 13]]}
+ },
+ "paint": {
+ "icon-color": "hsl(240,14%,77%)",
+ "text-color": "hsl(240,14%,77%)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-street-tertiary",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "street_labels",
+ "minzoom": 12,
+ "filter": ["==", "kind", "tertiary"],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "text-font": ["noto_sans_regular"],
+ "symbol-placement": "line",
+ "text-anchor": "center",
+ "text-size": {"stops": [[12, 10], [15, 13]]}
+ },
+ "paint": {
+ "icon-color": "hsl(240,14%,77%)",
+ "text-color": "hsl(240,14%,77%)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-street-secondary",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "street_labels",
+ "minzoom": 12,
+ "filter": ["==", "kind", "secondary"],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "text-font": ["noto_sans_regular"],
+ "symbol-placement": "line",
+ "text-anchor": "center",
+ "text-size": {"stops": [[12, 10], [15, 13]]}
+ },
+ "paint": {
+ "icon-color": "hsl(240,14%,77%)",
+ "text-color": "hsl(240,14%,77%)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-street-primary",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "street_labels",
+ "minzoom": 12,
+ "filter": ["==", "kind", "primary"],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "text-font": ["noto_sans_regular"],
+ "symbol-placement": "line",
+ "text-anchor": "center",
+ "text-size": {"stops": [[12, 10], [15, 13]]}
+ },
+ "paint": {
+ "icon-color": "hsl(240,14%,77%)",
+ "text-color": "hsl(240,14%,77%)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-street-trunk",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "street_labels",
+ "minzoom": 12,
+ "filter": ["==", "kind", "trunk"],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "text-font": ["noto_sans_regular"],
+ "symbol-placement": "line",
+ "text-anchor": "center",
+ "text-size": {"stops": [[12, 10], [15, 13]]}
+ },
+ "paint": {
+ "icon-color": "hsl(240,14%,77%)",
+ "text-color": "hsl(240,14%,77%)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-street-track",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "street_labels",
+ "minzoom": 12,
+ "filter": ["==", "kind", "track"],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "text-font": ["noto_sans_regular"],
+ "symbol-placement": "line",
+ "text-anchor": "center",
+ "text-size": {"stops": [[12, 10], [15, 13]]}
+ },
+ "paint": {
+ "icon-color": "hsl(240,14%,77%)",
+ "text-color": "hsl(240,14%,77%)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-place-neighbourhood",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "place_labels",
+ "minzoom": 14,
+ "filter": ["==", "kind", "neighbourhood"],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "symbol-sort-key": ["-", ["to-number", ["get", "population"], 0]],
+ "text-font": ["noto_sans_regular"],
+ "text-size": {"stops": [[14, 12]]},
+ "text-transform": "uppercase"
+ },
+ "paint": {
+ "icon-color": "rgb(182,209,215)",
+ "text-color": "rgb(182,209,215)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-place-quarter",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "place_labels",
+ "minzoom": 13,
+ "filter": ["==", "kind", "quarter"],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "symbol-sort-key": ["-", ["to-number", ["get", "population"], 0]],
+ "text-font": ["noto_sans_regular"],
+ "text-size": {"stops": [[13, 13]]},
+ "text-transform": "uppercase"
+ },
+ "paint": {
+ "icon-color": "rgb(182,204,215)",
+ "text-color": "rgb(182,204,215)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-place-suburb",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "place_labels",
+ "minzoom": 11,
+ "filter": ["==", "kind", "suburb"],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "symbol-sort-key": ["-", ["to-number", ["get", "population"], 0]],
+ "text-font": ["noto_sans_regular"],
+ "text-size": {"stops": [[11, 11], [13, 14]]},
+ "text-transform": "uppercase"
+ },
+ "paint": {
+ "icon-color": "rgb(182,198,215)",
+ "text-color": "rgb(182,198,215)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-place-hamlet",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "place_labels",
+ "minzoom": 13,
+ "filter": ["==", "kind", "hamlet"],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "symbol-sort-key": ["-", ["to-number", ["get", "population"], 0]],
+ "text-font": ["noto_sans_regular"],
+ "text-size": {"stops": [[10, 11], [12, 14]]}
+ },
+ "paint": {
+ "icon-color": "rgb(182,190,215)",
+ "text-color": "rgb(182,190,215)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-place-village",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "place_labels",
+ "minzoom": 11,
+ "filter": ["==", "kind", "village"],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "symbol-sort-key": ["-", ["to-number", ["get", "population"], 0]],
+ "text-font": ["noto_sans_regular"],
+ "text-size": {"stops": [[9, 11], [12, 14]]}
+ },
+ "paint": {
+ "icon-color": "rgb(182,190,215)",
+ "text-color": "rgb(182,190,215)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-place-town",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "place_labels",
+ "minzoom": 9,
+ "filter": ["==", "kind", "town"],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "symbol-sort-key": ["-", ["to-number", ["get", "population"], 0]],
+ "text-font": ["noto_sans_regular"],
+ "text-size": {"stops": [[8, 11], [12, 14]]}
+ },
+ "paint": {
+ "icon-color": "rgb(182,190,215)",
+ "text-color": "rgb(182,190,215)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-boundary-state",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "boundary_labels",
+ "minzoom": 5,
+ "filter": ["in", "admin_level", 4, "4"],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "text-font": ["noto_sans_regular"],
+ "text-transform": "uppercase",
+ "text-anchor": "top",
+ "text-offset": [0, 0.2],
+ "text-padding": 0,
+ "text-optional": true,
+ "text-size": {"stops": [[5, 8], [8, 12]]}
+ },
+ "paint": {
+ "icon-color": "rgb(178,178,194)",
+ "text-color": "rgb(178,178,194)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-place-city",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "place_labels",
+ "minzoom": 7,
+ "filter": ["==", "kind", "city"],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "symbol-sort-key": ["-", ["to-number", ["get", "population"], 0]],
+ "text-font": ["noto_sans_regular"],
+ "text-size": {"stops": [[7, 11], [10, 14]]}
+ },
+ "paint": {
+ "icon-color": "rgb(182,190,215)",
+ "text-color": "rgb(182,190,215)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-place-statecapital",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "place_labels",
+ "minzoom": 6,
+ "filter": ["==", "kind", "state_capital"],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "symbol-sort-key": ["-", ["to-number", ["get", "population"], 0]],
+ "text-font": ["noto_sans_regular"],
+ "text-size": {"stops": [[6, 11], [10, 15]]}
+ },
+ "paint": {
+ "icon-color": "rgb(182,190,215)",
+ "text-color": "rgb(182,190,215)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-place-capital",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "place_labels",
+ "minzoom": 5,
+ "filter": ["==", "kind", "capital"],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "symbol-sort-key": ["-", ["to-number", ["get", "population"], 0]],
+ "text-font": ["noto_sans_regular"],
+ "text-size": {"stops": [[5, 12], [10, 16]]}
+ },
+ "paint": {
+ "icon-color": "rgb(182,190,215)",
+ "text-color": "rgb(182,190,215)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-boundary-country-small",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "boundary_labels",
+ "minzoom": 4,
+ "filter": [
+ "all",
+ ["in", "admin_level", 2, "2"],
+ ["<=", "way_area", 10000000]
+ ],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "text-font": ["noto_sans_regular"],
+ "text-transform": "uppercase",
+ "text-anchor": "top",
+ "text-offset": [0, 0.2],
+ "text-padding": 0,
+ "text-optional": true,
+ "text-size": {"stops": [[4, 8], [5, 11]]}
+ },
+ "paint": {
+ "icon-color": "hsl(240,14%,77%)",
+ "text-color": "hsl(240,14%,77%)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-boundary-country-medium",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "boundary_labels",
+ "minzoom": 3,
+ "filter": [
+ "all",
+ ["in", "admin_level", 2, "2"],
+ ["<", "way_area", 90000000],
+ [">", "way_area", 10000000]
+ ],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "text-font": ["noto_sans_regular"],
+ "text-transform": "uppercase",
+ "text-anchor": "top",
+ "text-offset": [0, 0.2],
+ "text-padding": 0,
+ "text-optional": true,
+ "text-size": {"stops": [[3, 8], [5, 12]]}
+ },
+ "paint": {
+ "icon-color": "hsl(240,14%,77%)",
+ "text-color": "hsl(240,14%,77%)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "label-boundary-country-large",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "boundary_labels",
+ "minzoom": 2,
+ "filter": [
+ "all",
+ ["in", "admin_level", 2, "2"],
+ [">=", "way_area", 90000000]
+ ],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "text-font": ["noto_sans_regular"],
+ "text-transform": "uppercase",
+ "text-anchor": "top",
+ "text-offset": [0, 0.2],
+ "text-padding": 0,
+ "text-optional": true,
+ "text-size": {"stops": [[2, 8], [5, 13]]}
+ },
+ "paint": {
+ "icon-color": "hsl(240,14%,77%)",
+ "text-color": "hsl(240,14%,77%)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "marking-oneway",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ ["==", "oneway", true],
+ [
+ "in",
+ "kind",
+ "trunk",
+ "primary",
+ "secondary",
+ "tertiary",
+ "unclassified",
+ "residential",
+ "living_street"
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "symbol-spacing": 175,
+ "icon-rotate": 90,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 5,
+ "symbol-avoid-edges": true,
+ "icon-image": "basics:marking-arrow",
+ "text-font": ["noto_sans_regular"]
+ },
+ "paint": {
+ "icon-opacity": {"stops": [[16, 0], [17, 0.4], [20, 0.4]]},
+ "text-opacity": {"stops": [[16, 0], [17, 0.4], [20, 0.4]]}
+ }
+ },
+ {
+ "id": "marking-oneway-reverse",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "streets",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ ["==", "oneway_reverse", true],
+ [
+ "in",
+ "kind",
+ "trunk",
+ "primary",
+ "secondary",
+ "tertiary",
+ "unclassified",
+ "residential",
+ "living_street"
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "symbol-spacing": 75,
+ "icon-rotate": -90,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 5,
+ "symbol-avoid-edges": true,
+ "icon-image": "basics:marking-arrow",
+ "text-font": ["noto_sans_regular"]
+ },
+ "paint": {
+ "icon-opacity": {"stops": [[16, 0], [17, 0.4], [20, 0.4]]},
+ "text-opacity": {"stops": [[16, 0], [17, 0.4], [20, 0.4]]}
+ }
+ },
+ {
+ "id": "symbol-transit-station",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "public_transport",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ ["in", "kind", "station", "halt"],
+ ["!in", "station", "light_rail", "subway"]
+ ],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "icon-size": {"stops": [[13, 0.5], [15, 1]]},
+ "symbol-placement": "point",
+ "icon-keep-upright": true,
+ "text-font": ["noto_sans_regular"],
+ "text-size": 10,
+ "icon-anchor": "bottom",
+ "text-anchor": "top",
+ "icon-image": "basics:icon-rail"
+ },
+ "paint": {
+ "icon-opacity": 0.7,
+ "icon-color": "hsl(270,4%,60%)",
+ "text-color": "hsl(270,4%,60%)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "symbol-transit-airfield",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "public_transport",
+ "minzoom": 13,
+ "filter": ["all", ["==", "kind", "aerodrome"], ["!has", "iata"]],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "icon-size": {"stops": [[13, 0.5], [15, 1]]},
+ "symbol-placement": "point",
+ "icon-keep-upright": true,
+ "text-font": ["noto_sans_regular"],
+ "text-size": 10,
+ "icon-anchor": "bottom",
+ "text-anchor": "top",
+ "icon-image": "basics:icon-airfield"
+ },
+ "paint": {
+ "icon-opacity": 0.7,
+ "icon-color": "hsl(270,4%,60%)",
+ "text-color": "hsl(270,4%,60%)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "symbol-transit-airport",
+ "type": "symbol",
+ "source": "versatiles-shortbread",
+ "source-layer": "public_transport",
+ "minzoom": 12,
+ "filter": ["all", ["==", "kind", "aerodrome"], ["has", "iata"]],
+ "layout": {
+ "text-field": [
+ "coalesce",
+ ["get", "name"],
+ ["get", "name_en"],
+ ["get", "name_de"]
+ ],
+ "icon-size": {"stops": [[12, 0.5], [14, 1]]},
+ "symbol-placement": "point",
+ "icon-keep-upright": true,
+ "text-font": ["noto_sans_regular"],
+ "text-size": 10,
+ "icon-anchor": "bottom",
+ "text-anchor": "top",
+ "icon-image": "basics:icon-airport"
+ },
+ "paint": {
+ "icon-opacity": 0.7,
+ "icon-color": "hsl(270,4%,60%)",
+ "text-color": "hsl(270,4%,60%)",
+ "text-halo-color": "hsla(0,0%,0%,0.8)",
+ "text-halo-width": 2,
+ "text-halo-blur": 1
+ }
+ }
+ ],
+ "id": "80klscq"
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/reyboz/bustorino/ActivityIntro.kt b/app/src/main/java/it/reyboz/bustorino/ActivityIntro.kt
--- a/app/src/main/java/it/reyboz/bustorino/ActivityIntro.kt
+++ b/app/src/main/java/it/reyboz/bustorino/ActivityIntro.kt
@@ -32,8 +32,6 @@
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_intro)
- //check default settings and apply them
- checkApplyDefaultSettingsValues()
viewPager = findViewById(R.id.viewPager)
btnBackward = findViewById(R.id.btnPrevious)
btnForward = findViewById(R.id.btnNext)
diff --git a/app/src/main/java/it/reyboz/bustorino/ActivityPrincipal.java b/app/src/main/java/it/reyboz/bustorino/ActivityPrincipal.java
--- a/app/src/main/java/it/reyboz/bustorino/ActivityPrincipal.java
+++ b/app/src/main/java/it/reyboz/bustorino/ActivityPrincipal.java
@@ -33,6 +33,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBarDrawerToggle;
+import androidx.appcompat.app.AppCompatDelegate;
import androidx.appcompat.widget.Toolbar;
import androidx.core.graphics.Insets;
import androidx.core.view.*;
@@ -49,6 +50,7 @@
import java.util.Arrays;
import java.util.Map;
+import java.util.Objects;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.function.Consumer;
@@ -72,6 +74,7 @@
private final static String TAG_FAVORITES="favorites_frag";
private Snackbar snackbar;
+
private ServiceAlertsViewModel serviceAlertsViewModel;
//private FragmentKind showingFragmentKind;
@@ -116,6 +119,8 @@
}
};
+
+
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -123,10 +128,6 @@
setContentView(R.layout.activity_principal);
serviceAlertsViewModel = new ViewModelProvider(this).get(ServiceAlertsViewModel.class);
//Use LiveModel to sync fragment state
- /*if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
- getWindow().setNavigationBarContrastEnforced(false);
- }
- */
//onBackPressed solution required from Android 16
backPressedCallback.setEnabled(true);
@@ -282,8 +283,8 @@
}
//boolean onCreateComplete = true;
- //last but not least, set the good default values
- checkApplyDefaultSettingsValues();
+ //default values are set in the BustoApp
+ //checkApplyDefaultSettingsValues();
// handle the device "insets"
/*
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.rootRelativeLayout), (v, windowInsets) -> {
diff --git a/app/src/main/java/it/reyboz/bustorino/BustoApp.java b/app/src/main/java/it/reyboz/bustorino/BustoApp.java
--- a/app/src/main/java/it/reyboz/bustorino/BustoApp.java
+++ b/app/src/main/java/it/reyboz/bustorino/BustoApp.java
@@ -19,7 +19,13 @@
import android.content.Context;
+import android.content.SharedPreferences;
+import androidx.appcompat.app.AppCompatDelegate;
import androidx.multidex.MultiDexApplication;
+import androidx.preference.PreferenceManager;
+import it.reyboz.bustorino.backend.utils;
+import it.reyboz.bustorino.data.PreferencesHolder;
+import it.reyboz.bustorino.fragments.SettingsFragment;
import org.acra.ACRA;
import org.acra.BuildConfig;
import org.acra.ReportField;
@@ -29,8 +35,7 @@
import org.acra.data.StringFormat;
import java.lang.reflect.Array;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
import static org.acra.ReportField.*;
@@ -41,6 +46,9 @@
IS_SILENT, STACK_TRACE, INITIAL_CONFIGURATION, CRASH_CONFIGURATION, DISPLAY, USER_COMMENT,
USER_APP_START_DATE, USER_CRASH_DATE, LOGCAT, SHARED_PREFERENCES);
+ private Integer currentNightDayStatus = -1;
+
+
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
@@ -72,4 +80,76 @@
}
+ private final SharedPreferences.OnSharedPreferenceChangeListener appSharedPreference = (sharedPreferences, key) -> {
+ if(Objects.equals(key, PreferencesHolder.PREF_THEME_DAY_NIGHT)){
+ String value = sharedPreferences.getString(PreferencesHolder.PREF_THEME_DAY_NIGHT, "");
+ var state = PreferencesHolder.getAppThemeDayNight(value);
+ if(state!=null && !state.equals(currentNightDayStatus)){
+ currentNightDayStatus = state;
+ AppCompatDelegate.setDefaultNightMode(state);
+
+ }
+ }
+ };
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ checkApplyDefaultSettingsValues();
+
+ var dayorNight = PreferencesHolder.getAppThemeDayNight(this);
+ currentNightDayStatus = dayorNight;
+ AppCompatDelegate.setDefaultNightMode(dayorNight);
+
+ PreferencesHolder.getAppPreferences(this).registerOnSharedPreferenceChangeListener(appSharedPreference);
+
+ }
+
+ /**
+ * Adjust setting to match the default ones
+ */
+ protected void checkApplyDefaultSettingsValues(){
+ SharedPreferences mainSharedPref = PreferenceManager.getDefaultSharedPreferences(this);
+ SharedPreferences.Editor editor = mainSharedPref.edit();
+ boolean edit = false;
+
+ //Day or night theme
+ var str = mainSharedPref.getString(PreferencesHolder.PREF_THEME_DAY_NIGHT, "");
+ if(str.isEmpty()){
+ editor.putString(PreferencesHolder.PREF_THEME_DAY_NIGHT, "system");
+ edit = true;
+ }
+
+ //Main fragment to show
+ String screen = mainSharedPref.getString(SettingsFragment.PREF_KEY_STARTUP_SCREEN, "");
+ if (screen.isEmpty()){
+ editor.putString(SettingsFragment.PREF_KEY_STARTUP_SCREEN, "arrivals");
+ edit=true;
+ }
+ //Fetchers
+ final Set setSelected = mainSharedPref.getStringSet(SettingsFragment.KEY_ARRIVALS_FETCHERS_USE, new HashSet<>());
+ if (setSelected.isEmpty()){
+ String[] defaultVals = getResources().getStringArray(R.array.arrivals_sources_values_default);
+ editor.putStringSet(SettingsFragment.KEY_ARRIVALS_FETCHERS_USE, utils.convertArrayToSet(defaultVals));
+ edit=true;
+ }
+ //Live bus positions
+ final String keySourcePositions=getString(R.string.pref_positions_source);
+ final String positionsSource = mainSharedPref.getString(keySourcePositions, "");
+ if(positionsSource.isEmpty()){
+ String[] defaultVals = getResources().getStringArray(R.array.positions_source_values);
+ editor.putString(keySourcePositions, defaultVals[0]);
+ edit=true;
+ }
+ //Map style
+ final String mapStylePref = mainSharedPref.getString(SettingsFragment.LIBREMAP_STYLE_PREF_KEY, "");
+ if(mapStylePref.isEmpty()){
+ final String[] defaultVals = getResources().getStringArray(R.array.map_style_pref_values);
+ editor.putString(SettingsFragment.LIBREMAP_STYLE_PREF_KEY, defaultVals[0]);
+ edit=true;
+ }
+ if (edit){
+ editor.apply();
+ }
+
+ }
}
diff --git a/app/src/main/java/it/reyboz/bustorino/adapters/ArrivalsStopAdapter.java b/app/src/main/java/it/reyboz/bustorino/adapters/ArrivalsStopAdapter.java
--- a/app/src/main/java/it/reyboz/bustorino/adapters/ArrivalsStopAdapter.java
+++ b/app/src/main/java/it/reyboz/bustorino/adapters/ArrivalsStopAdapter.java
@@ -19,7 +19,6 @@
import android.content.Context;
import android.content.SharedPreferences;
-import android.location.Location;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.util.Pair;
@@ -39,7 +38,7 @@
import java.util.*;
public class ArrivalsStopAdapter extends RecyclerView.Adapter implements SharedPreferences.OnSharedPreferenceChangeListener {
- private final static int layoutRes = R.layout.arrivals_nearby_card;
+ private final static int layoutRes = R.layout.item_arrivals_nearby_card;
//private List stops;
private @NonNull GPSPoint userPosition;
private FragmentListenerMain listener;
diff --git a/app/src/main/java/it/reyboz/bustorino/adapters/PalinaAdapter.java b/app/src/main/java/it/reyboz/bustorino/adapters/PalinaAdapter.java
--- a/app/src/main/java/it/reyboz/bustorino/adapters/PalinaAdapter.java
+++ b/app/src/main/java/it/reyboz/bustorino/adapters/PalinaAdapter.java
@@ -19,6 +19,8 @@
import android.content.Context;
import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.cardview.widget.CardView;
import androidx.core.content.res.ResourcesCompat;
@@ -63,9 +65,9 @@
private static final int busBg = R.drawable.route_background_bus;
private static final int extraurbanoBg = R.drawable.route_background_bus_long_distance;
- private static final int busIcon = R.drawable.bus;
+ private static final int busIcon = R.drawable.ic_bus_small;
private static final int trainIcon = R.drawable.subway;
- private static final int tramIcon = R.drawable.tram;
+ private static final int tramIcon = R.drawable.ic_tram_24;
private final String KEY_CAPITALIZE;
private Capitalize capit;
@@ -123,7 +125,8 @@
}
vh.rowRouteDestination.setText(dest);
}
-
+ Drawable drawable = null;
+ final var resources = con.getResources();
switch (route.type) {
//UNKNOWN = BUS for the moment
case UNKNOWN:
@@ -131,28 +134,36 @@
default:
// convertView could contain another background, reset it
//vh.rowStopIcon.setBackgroundResource(busBg);
-
- vh.rowRouteDestination.setCompoundDrawablesWithIntrinsicBounds(busIcon, 0, 0, 0);
+ //drawable = ResourcesCompat.getDrawable(con.getResources(), busIcon, con.getTheme());
+ //vh.rowRouteDestination.setCompoundDrawablesWithIntrinsicBounds(busIcon, 0, 0, 0);
+ vh.busIcon.setImageDrawable(ResourcesCompat.getDrawable(resources, busIcon, con.getTheme()));
break;
case LONG_DISTANCE_BUS:
//vh.rowStopIcon.setBackgroundResource(extraurbanoBg);
vh.routeCard.setCardBackgroundColor(ResourcesCompat.getColor(res, R.color.extraurban_bus_bg, null));
- vh.rowRouteDestination.setCompoundDrawablesWithIntrinsicBounds(busIcon, 0, 0, 0);
+ vh.busIcon.setImageDrawable(ResourcesCompat.getDrawable(resources, extraurbanoBg, con.getTheme()));
break;
case METRO:
//vh.rowStopIcon.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
//vh.rowStopIcon.setBackgroundResource(metroBg);
vh.routeIDTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
vh.routeCard.setCardBackgroundColor(ResourcesCompat.getColor(res, R.color.metro_bg, null));
- vh.rowRouteDestination.setCompoundDrawablesWithIntrinsicBounds(trainIcon, 0, 0, 0);
+ // vh.rowRouteDestination.setCompoundDrawablesWithIntrinsicBounds(trainIcon, 0, 0, 0);
+ vh.busIcon.setImageDrawable(ResourcesCompat.getDrawable(resources, trainIcon, con.getTheme()));
break;
case RAILWAY:
//vh.rowStopIcon.setBackgroundResource(busBg);
- vh.rowRouteDestination.setCompoundDrawablesWithIntrinsicBounds(trainIcon, 0, 0, 0);
+ //vh.rowRouteDestination.setCompoundDrawablesWithIntrinsicBounds(trainIcon, 0, 0, 0);
+ vh.busIcon.setImageDrawable(ResourcesCompat.getDrawable(resources, trainIcon, con.getTheme()));
break;
case TRAM: // never used but whatever.
//vh.rowStopIcon.setBackgroundResource(busBg);
- vh.rowRouteDestination.setCompoundDrawablesWithIntrinsicBounds(tramIcon, 0, 0, 0);
+ drawable = ResourcesCompat.getDrawable(resources, trainIcon, con.getTheme());
+ assert drawable != null;
+ drawable.setTint(resources.getColor(R.color.black_icon_text, con.getTheme()) );
+ //vh.rowRouteDestination.setCompoundDrawablesWithIntrinsicBounds(tramIcon, 0, 0, 0);
+ vh.busIcon.setImageDrawable(ResourcesCompat.getDrawable(resources, tramIcon, con.getTheme()));
+
break;
}
@@ -181,19 +192,15 @@
final CardView routeCard;
final TextView rowRouteDestination;
final TextView rowRouteTimetable;
+ final ImageView busIcon;
public PalinaViewHolder(@NonNull @NotNull View view) {
super(view);
- /*
- convertView.findViewById(R.id.routeID);
- vh.rowRouteDestination = (TextView) convertView.findViewById(R.id.routeDestination);
- vh.rowRouteTimetable = (TextView) convertView.findViewById(R.id.routesThatStopHere);
- */
- //rowStopIcon = view.findViewById(R.id.routeID);
routeIDTextView = view.findViewById(R.id.routeNameTextView);
routeCard = view.findViewById(R.id.routeCard);
rowRouteDestination = view.findViewById(R.id.routeDestination);
rowRouteTimetable = view.findViewById(R.id.routesThatStopHere);
+ busIcon = view.findViewById(R.id.arrivalsBusIcon);
}
}
private static Capitalize getCapitalize(SharedPreferences shPr, String key){
diff --git a/app/src/main/java/it/reyboz/bustorino/adapters/SquareStopAdapter.java b/app/src/main/java/it/reyboz/bustorino/adapters/SquareStopAdapter.java
--- a/app/src/main/java/it/reyboz/bustorino/adapters/SquareStopAdapter.java
+++ b/app/src/main/java/it/reyboz/bustorino/adapters/SquareStopAdapter.java
@@ -17,7 +17,6 @@
*/
package it.reyboz.bustorino.adapters;
-import android.location.Location;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView;
@@ -28,7 +27,6 @@
import android.widget.TextView;
import it.reyboz.bustorino.R;
import it.reyboz.bustorino.backend.GPSPoint;
-import it.reyboz.bustorino.backend.RouteWithStop;
import it.reyboz.bustorino.backend.Stop;
import it.reyboz.bustorino.util.StopSorterByDistance;
import it.reyboz.bustorino.fragments.FragmentListenerMain;
@@ -37,7 +35,7 @@
import java.util.List;
public class SquareStopAdapter extends RecyclerView.Adapter {
- private final static int layoutRes = R.layout.stop_card;
+ private final static int layoutRes = R.layout.item_stop_nearby_card;
//private List stops;
private @Nullable GPSPoint userPosition;
private FragmentListenerMain listener;
diff --git a/app/src/main/java/it/reyboz/bustorino/adapters/StopAdapter.java b/app/src/main/java/it/reyboz/bustorino/adapters/StopAdapter.java
--- a/app/src/main/java/it/reyboz/bustorino/adapters/StopAdapter.java
+++ b/app/src/main/java/it/reyboz/bustorino/adapters/StopAdapter.java
@@ -18,6 +18,7 @@
package it.reyboz.bustorino.adapters;
import android.content.Context;
+import android.widget.ImageView;
import androidx.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
@@ -36,18 +37,25 @@
public class StopAdapter extends ArrayAdapter {
private LayoutInflater li;
private static final int row_layout = R.layout.entry_bus_stop;
- private static final int busIcon = R.drawable.bus;
+ private static final int busIcon = R.drawable.ic_bus;
private static final int trainIcon = R.drawable.subway;
private static final int tramIcon = R.drawable.tram;
private static final int cityIcon = R.drawable.city;
private static class ViewHolder {
- TextView busStopIDTextView;
- TextView busStopNameTextView;
+ final TextView busStopIDTextView;
+ final TextView busStopNameTextView;
//TextView busLineVehicleIcon;
- TextView busStopLinesTextView;
- TextView busStopLocaLityTextView;
+ final TextView busStopLinesTextView;
+ final TextView busStopLocaLityTextView;
+
+ ViewHolder(View view) {
+ busStopIDTextView = view.findViewById(R.id.busStopID);
+ busStopNameTextView = view.findViewById(R.id.busStopName);
+ busStopLinesTextView = view.findViewById(R.id.routesThatStopHere);
+ busStopLocaLityTextView = view.findViewById(R.id.busStopLocality);
+ }
}
public StopAdapter(Context context, List stops) {
@@ -62,11 +70,7 @@
if(convertView == null) {
convertView = li.inflate(row_layout, null);
- vh = new ViewHolder();
- vh.busStopIDTextView = (TextView) convertView.findViewById(R.id.busStopID);
- vh.busStopNameTextView = (TextView) convertView.findViewById(R.id.busStopName);
- vh.busStopLinesTextView = (TextView) convertView.findViewById(R.id.routesThatStopHere);
- vh.busStopLocaLityTextView = (TextView) convertView.findViewById(R.id.busStopLocality);
+ vh = new ViewHolder(convertView);
convertView.setTag(vh);
} else {
vh = (ViewHolder) convertView.getTag();
@@ -85,8 +89,10 @@
vh.busStopLinesTextView.setVisibility(View.VISIBLE); // might be GONE due to View Holder Pattern
}
+ /*
+ // DEPRECATED CODE: ALWAYS USE BUS STOP ICON
if(stop.type == null) {
- vh.busStopLinesTextView.setCompoundDrawablesWithIntrinsicBounds(busIcon, 0, 0, 0);
+ //vh.busStopLinesTextView.setCompoundDrawablesWithIntrinsicBounds(busIcon, 0, 0, 0);
} else {
switch(stop.type) {
case BUS:
@@ -106,6 +112,8 @@
}
}
+ */
+
if (stop.location == null) {
vh.busStopLocaLityTextView.setVisibility(View.GONE);
} else {
diff --git a/app/src/main/java/it/reyboz/bustorino/adapters/StopRecyclerAdapter.java b/app/src/main/java/it/reyboz/bustorino/adapters/StopRecyclerAdapter.java
--- a/app/src/main/java/it/reyboz/bustorino/adapters/StopRecyclerAdapter.java
+++ b/app/src/main/java/it/reyboz/bustorino/adapters/StopRecyclerAdapter.java
@@ -37,7 +37,7 @@
private List stops;
private static final int ITEM_LAYOUT_FAVORITES = R.layout.entry_bus_stop;
private static final int ITEM_LAYOUT_LINES = R.layout.stop_line_element;
- private static final int busIcon = R.drawable.bus;
+ private static final int busIcon = R.drawable.ic_bus;
private static final int trainIcon = R.drawable.subway;
private static final int tramIcon = R.drawable.tram;
private static final int cityIcon = R.drawable.city;
@@ -174,6 +174,8 @@
vh.busStopLinesTextView.setText(whatStopsHere);
vh.busStopLinesTextView.setVisibility(View.VISIBLE); // might be GONE due to View Holder Pattern
}
+ /*
+ //This is deprecated, always showing a bus
if(stop.type == null) {
vh.busStopLinesTextView.setCompoundDrawablesWithIntrinsicBounds(busIcon, 0, 0, 0);
@@ -196,6 +198,8 @@
}
}
+ */
+
if (stop.location == null || stop.location.toLowerCase(Locale.ROOT).equals("null")) {
vh.busStopLocaLityTextView.setVisibility(View.GONE);
} else {
diff --git a/app/src/main/java/it/reyboz/bustorino/backend/KotlinUtils.kt b/app/src/main/java/it/reyboz/bustorino/backend/KotlinUtils.kt
new file mode 100644
--- /dev/null
+++ b/app/src/main/java/it/reyboz/bustorino/backend/KotlinUtils.kt
@@ -0,0 +1,13 @@
+package it.reyboz.bustorino.backend
+
+import android.content.Context
+import android.content.res.Configuration
+
+object KotlinUtils {
+
+ @JvmStatic
+ fun isDarkTheme(context: Context): Boolean {
+ val uiMode = context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
+ return uiMode == Configuration.UI_MODE_NIGHT_YES
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/reyboz/bustorino/backend/VehicleUtils.kt b/app/src/main/java/it/reyboz/bustorino/backend/VehicleUtils.kt
--- a/app/src/main/java/it/reyboz/bustorino/backend/VehicleUtils.kt
+++ b/app/src/main/java/it/reyboz/bustorino/backend/VehicleUtils.kt
@@ -17,39 +17,41 @@
}
object VehicleUtils {
- private val items = listOf(
- VehicleClassInfo(2800, "Arancio", "Tram", 2801, 2857),
- VehicleClassInfo(2800, "Arancio", "Tram", 2858, 2902),
- VehicleClassInfo(5000, "5000", "Tram", 5000, 5053),
- VehicleClassInfo(6000, "6000", "Tram", 6000, 6005),
- VehicleClassInfo(6000, "6000", "Tram", 6006, 6054),
- VehicleClassInfo(8000, "Hitachi", "Tram", 8000, 8099),
- VehicleClassInfo(800, "Citelis 18m", "Bus 18m", 790, 797),
- VehicleClassInfo(800, "Citelis 18m", "Bus 18m", 800, 869),
- VehicleClassInfo(800, "Citelis 18m", "Bus 18m", 870, 874),
- VehicleClassInfo(800, "Citelis 18m", "Bus 18m", 1310, 1313),
- VehicleClassInfo(1350, "Conecto 18m", "Bus 18m", 1350, 1396),
- VehicleClassInfo(9300, "UrbanWay 18m", "Bus 18m", 9300, 9318),
- VehicleClassInfo(9300, "UrbanWay 18m", "Bus 18m", 9320, 9356),
- VehicleClassInfo(30, "BYD K9", "E-Bus", 30, 49),
+ val items = listOf(
+ VehicleClassInfo(30, "BYD K9UB", "E-Bus", 30, 49),
VehicleClassInfo(50, "BYD K7", "E-Bus", 50, 57),
- VehicleClassInfo(60, "MiniBusE", "E-Bus", 60, 81),
- VehicleClassInfo(110, "Neocity", "Bus", 110, 115),
- VehicleClassInfo(2300, "Cityclass", "Bus", 2300, 2349),
- VehicleClassInfo(3400, "Conecto", "Bus", 2400, 2447),
- VehicleClassInfo(2300, "Cityclass", "Bus", 2700, 2787),
- VehicleClassInfo(3000, "Citelis", "Bus", 3000, 3099),
- VehicleClassInfo(3000, "Citelis", "Bus", 3300, 3380),
- VehicleClassInfo(3400, "Conecto", "Bus", 3400, 3440),
- VehicleClassInfo(9000, "BYD K9", "E-Bus", 9000, 9059),
- VehicleClassInfo(9000, "BYD K9", "E-Bus", 9060, 9119),
- VehicleClassInfo(9000, "BYD K9", "E-Bus", 9120, 9121),
- VehicleClassInfo(9200, "Citymood", "Bus", 9200, 9251),
- VehicleClassInfo(9200, "Citymood", "Bus", 9252, 9261),
+ VehicleClassInfo(60, "Indcar BlueBus", "E-Bus", 60, 88),
+ VehicleClassInfo(110, "BMC Neocity", "Bus", 110, 115),
+ VehicleClassInfo(800, "Irisbus Citelis", "Bus 18m", 790, 797),
+ VehicleClassInfo(800, "Irisbus Citelis", "Bus 18m", 800, 869),
+ VehicleClassInfo(800, "Irisbus Citelis", "Bus 18m", 870, 874),
+ VehicleClassInfo(800, "Irisbus Citelis CNG", "Bus 18m", 1310, 1313),
+ VehicleClassInfo(1350, "Mercedes Conecto G", "Bus 18m", 1350, 1396),
+ VehicleClassInfo(2300, "Irisbus CityClass", "Bus", 2300, 2349),
+ VehicleClassInfo(3400, "Mercedes Conecto", "Bus", 2400, 2447),
+ VehicleClassInfo(2300, "Irisbus CityClass", "Bus", 2700, 2787),
+ VehicleClassInfo(2800, "2800 (prima serie)", "Tram", 2801, 2857),
+ VehicleClassInfo(2800, "2800 (seconda serie)", "Tram", 2858, 2902),
+ VehicleClassInfo(3000, "Irisbus Citelis", "Bus", 3000, 3099),
+ VehicleClassInfo(3000, "Irisbus Citelis", "Bus", 3300, 3380),
+ VehicleClassInfo(3400, "Mercedes Conecto", "Bus", 3400, 3440),
+ VehicleClassInfo(5000, "P.R. (5000)", "Tram", 5000, 5053),
+ VehicleClassInfo(6000, "CityWay (6000) monodir.", "Tram", 6000, 6005),
+ VehicleClassInfo(6000, "CityWay (6000) bidir.", "Tram", 6006, 6054),
+ VehicleClassInfo(8000, "Hitachi (8000)", "Tram", 8000, 8099),
+ VehicleClassInfo(9000, "BYD K9UB", "E-Bus", 9000, 9059),
+ VehicleClassInfo(9000, "BYD K9UB", "E-Bus", 9060, 9119),
+ VehicleClassInfo(9000, "BYD K9UB", "E-Bus", 9120, 9121),
+ VehicleClassInfo(9200, "Menarini Citymood", "Bus", 9200, 9251),
+ VehicleClassInfo(9200, "Menarini Citymood", "Bus", 9252, 9261),
+ VehicleClassInfo(9300, "Iveco Urbanway", "Bus 18m", 9300, 9318),
+ VehicleClassInfo(9300, "Iveco Urbanway", "Bus 18m", 9320, 9356),
VehicleClassInfo(9400, "Iveco E-Way", "E-Bus", 9400, 9599),
- VehicleClassInfo(9600, "Iveco E-Way 18m", "E-Bus", 9600, 9699)
+ VehicleClassInfo(9600, "Iveco E-Way 18m", "E-Bus", 9600, 9699),
+ VehicleClassInfo(9700, "Iveco E-Way 18m BRT", "E-Bus", 9700, 9799)
)
+
fun getTypeForLabel(label: String): VehicleClassInfo? {
try {
val matricola = Integer.parseInt(label)
diff --git a/app/src/main/java/it/reyboz/bustorino/data/GtfsMaintenanceWorker.kt b/app/src/main/java/it/reyboz/bustorino/data/GtfsMaintenanceWorker.kt
--- a/app/src/main/java/it/reyboz/bustorino/data/GtfsMaintenanceWorker.kt
+++ b/app/src/main/java/it/reyboz/bustorino/data/GtfsMaintenanceWorker.kt
@@ -32,7 +32,7 @@
val notification = NotificationCompat.Builder(context, Notifications.DB_UPDATE_CHANNELS_ID)
//.setContentIntent(PendingIntent.getActivity(context, 0, Intent(context, MainActivity::class.java), Constants.PENDING_INTENT_FLAG_IMMUTABLE))
- .setSmallIcon(R.drawable.bus)
+ .setSmallIcon(R.drawable.ic_bus)
.setOngoing(true)
.setAutoCancel(true)
.setOnlyAlertOnce(true)
diff --git a/app/src/main/java/it/reyboz/bustorino/data/PreferencesHolder.java b/app/src/main/java/it/reyboz/bustorino/data/PreferencesHolder.java
--- a/app/src/main/java/it/reyboz/bustorino/data/PreferencesHolder.java
+++ b/app/src/main/java/it/reyboz/bustorino/data/PreferencesHolder.java
@@ -20,11 +20,13 @@
import android.content.Context;
import android.content.SharedPreferences;
import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatDelegate;
import it.reyboz.bustorino.R;
import static android.content.Context.MODE_PRIVATE;
import androidx.preference.PreferenceManager;
+import it.reyboz.bustorino.backend.KotlinUtils;
import it.reyboz.bustorino.fragments.SettingsFragment;
import it.reyboz.bustorino.map.MapLibreUtils;
@@ -42,6 +44,9 @@
public static final String DB_LAST_UPDATE_KEY = "NextGenDB.LastDBUpdate";
public static final String PREF_FAVORITE_LINES = "pref_favorite_lines";
+ // match the one in preferences.xml
+ public static final String PREF_THEME_DAY_NIGHT = "app_theme_day_night";
+
public static final Set KEYS_MERGE_SET = Set.of(PREF_FAVORITE_LINES);
public static final Set IGNORE_KEYS_LOAD_MAIN = Set.of(PREF_GTFS_DB_VERSION, PREF_INTRO_ACTIVITY_RUN, DB_GTT_VERSION_KEY, DB_LAST_UPDATE_KEY);
@@ -98,11 +103,31 @@
public static String getMapLibreStyleFile(Context con){
final SharedPreferences pref = getAppPreferences(con);
final String mapStyle_val = pref.getString(SettingsFragment.LIBREMAP_STYLE_PREF_KEY, "");
- return switch (mapStyle_val) {
+ final boolean isNightMode = KotlinUtils.isDarkTheme(con);
+ String styleFile;
+ switch (mapStyle_val) {
//MUST MATCH IN keys.xml -> map_style_pref_values
- case "versatiles_c" -> MapLibreUtils.STYLE_VERSATILES_COLORFUL_JSON;
- case "osm_legacy" -> MapLibreUtils.STYLE_OSM_RASTER;
- default -> MapLibreUtils.getDefaultStyleJson();
+ case "osm_legacy":
+ styleFile = MapLibreUtils.STYLE_OSM_RASTER;
+ break;
+ case "versatiles_c":
+ default:
+ styleFile = (isNightMode) ? MapLibreUtils.STYLE_VERSATILES_ECLIPSE_JSON : MapLibreUtils.STYLE_VERSATILES_COLORFUL_JSON;
+ }
+ return styleFile;
+ }
+
+ public static Integer getAppThemeDayNight(Context context){
+ final SharedPreferences pref = getAppPreferences(context);
+ final var value = pref.getString(PREF_THEME_DAY_NIGHT, "");
+ return getAppThemeDayNight(value);
+ }
+ public static Integer getAppThemeDayNight(String prefValue){
+ return switch (prefValue){
+ case "day" -> AppCompatDelegate.MODE_NIGHT_NO;
+ case "night" -> AppCompatDelegate.MODE_NIGHT_YES;
+ case "system" -> AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM;
+ default -> AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM;
};
}
}
diff --git a/app/src/main/java/it/reyboz/bustorino/fragments/GeneralMapLibreFragment.kt b/app/src/main/java/it/reyboz/bustorino/fragments/GeneralMapLibreFragment.kt
--- a/app/src/main/java/it/reyboz/bustorino/fragments/GeneralMapLibreFragment.kt
+++ b/app/src/main/java/it/reyboz/bustorino/fragments/GeneralMapLibreFragment.kt
@@ -29,6 +29,7 @@
import android.location.LocationManager
import android.os.Bundle
import android.util.Log
+import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -170,6 +171,7 @@
protected lateinit var stopNumberTextView: TextView
protected lateinit var linesPassingTextView: TextView
protected lateinit var extraBottomTextView: TextView
+ protected lateinit var linesBottomTextView: TextView
protected lateinit var arrivalsCard: CardView
protected lateinit var directionsCard: CardView
protected lateinit var bottomrightImage: ImageView
@@ -271,6 +273,8 @@
arrivalsCard = view.findViewById(R.id.arrivalsCardButton)
directionsCard = view.findViewById(R.id.directionsCardButton)
vehicleIcon = view.findViewById(R.id.vehicleIcon)
+ linesBottomTextView = view.findViewById(R.id.linesBottomTextView)
+ linesBottomTextView.text = getString(R.string.lines_fill, "")
bottomSheetBehavior = BottomSheetBehavior.from(bottomSheet)
bottomSheetBehavior.state = BottomSheetBehavior.STATE_HIDDEN
@@ -682,9 +686,11 @@
ResourcesCompat.getDrawable(resources, R.drawable.ic_magnifying_glass, activity?.theme)
)
// if you change this, remember to change the color of the vehicleIcon
- val colorBlue = ResourcesCompat.getColor(resources, R.color.blue_500, activity?.theme)
+ val colorBlue = ResourcesCompat.getColor(resources, R.color.bus_marker_color_selected, activity?.theme)
ViewCompat.setBackgroundTintList(directionsCard, ColorStateList.valueOf(colorBlue))
linesPassingTextView.text = getString(R.string.vehicle_fill, data.posUpdate.vehicle)
+ linesPassingTextView.gravity = Gravity.CENTER_VERTICAL
+ linesBottomTextView.visibility = View.GONE
arrivalsCard.visibility = View.GONE
extraBottomTextView.text = getString(R.string.updated_fill, utils.unixTimestampToLocalTime(data.posUpdate.timestamp))
@@ -849,9 +855,11 @@
stopTitleTextView.visibility = View.VISIBLE
val string_show = if (stop.numRoutesStopping==0) ""
- else requireContext().getString(R.string.lines_fill, stop.routesThatStopHereToString())
+ else stop.routesThatStopHereToString() //requireContext().getString(R.string.lines_fill, stop.routesThatStopHereToString())
linesPassingTextView.text = string_show
linesPassingTextView.visibility = View.VISIBLE
+ linesPassingTextView.gravity = Gravity.TOP
+ linesBottomTextView.visibility =View.VISIBLE
//SET ON CLICK LISTENER
arrivalsCard.setOnClickListener{
@@ -865,7 +873,7 @@
ViewUtils.openStopInOutsideApp(stop, context)
}
context?.let {
- val colorIcon = ViewUtils.getColorFromTheme(it, android.R.attr.colorAccent)//ResourcesCompat.getColor(resources,R.attr.colorAccent,activity?.theme)
+ val colorIcon = ViewUtils.getColorFromTheme(it, R.attr.colorAccent)//ResourcesCompat.getColor(resources,R.attr.colorAccent,activity?.theme)
ViewCompat.setBackgroundTintList(directionsCard, ColorStateList.valueOf(colorIcon))
}
@@ -924,12 +932,17 @@
protected fun initStopsLayer(style: Style, stopsFeatures: FeatureCollection?){
//determine default layer
- var layerAbove = ""
- if (lastMapStyle == MapLibreUtils.STYLE_OSM_RASTER){
- layerAbove = "osm-raster"
- } else if (lastMapStyle == MapLibreUtils.STYLE_VECTOR){
- layerAbove = "symbol-transit-airfield"
+
+ val layerAbove = if (lastMapStyle == MapLibreUtils.STYLE_OSM_RASTER){
+ "osm-raster"
+ } else// if (lastMapStyle == MapLibreUtils.STYLE_VERSATILES_ECLIPSE_JSON){
+ "symbol-transit-airfield"
+ /*} else {
+ //
+ "poi_park"
}
+
+ */
initStopsLayer(style, stopsFeatures, layerAbove)
}
diff --git a/app/src/main/java/it/reyboz/bustorino/map/MapLibreUtils.kt b/app/src/main/java/it/reyboz/bustorino/map/MapLibreUtils.kt
--- a/app/src/main/java/it/reyboz/bustorino/map/MapLibreUtils.kt
+++ b/app/src/main/java/it/reyboz/bustorino/map/MapLibreUtils.kt
@@ -18,13 +18,21 @@
companion object{
//const val STYLE_BRIGHT_DEFAULT_JSON = "map_style_good_noshops.json"
const val STYLE_VERSATILES_COLORFUL_JSON = "versatiles_colorful_light.json"
+ const val STYLE_VERSATILES_ECLIPSE_JSON = "versatiles_eclipse_modif.json" //"versatiles_eclipse.json"
const val STYLE_OSM_RASTER="openstreetmap_raster.json"
- const val STYLE_VECTOR = STYLE_VERSATILES_COLORFUL_JSON
private const val DEBUG_TAG ="BusTO-MapLibreUtils"
@JvmStatic
- fun getDefaultStyleJson() = STYLE_VECTOR
+ fun isStyleVector(styleFile: String): Boolean {
+ return when(styleFile){
+ //be careful to include all the style cases
+ STYLE_OSM_RASTER -> false
+ STYLE_VERSATILES_COLORFUL_JSON -> true
+ STYLE_VERSATILES_ECLIPSE_JSON -> true
+ else -> true
+ }
+ }
@JvmStatic
fun shortestRotation(from: Float, to: Float): Float {
diff --git a/app/src/main/java/it/reyboz/bustorino/middleware/GeneralActivity.java b/app/src/main/java/it/reyboz/bustorino/middleware/GeneralActivity.java
--- a/app/src/main/java/it/reyboz/bustorino/middleware/GeneralActivity.java
+++ b/app/src/main/java/it/reyboz/bustorino/middleware/GeneralActivity.java
@@ -231,44 +231,4 @@
return WindowInsetsCompat.CONSUMED;
};
- /**
- * Adjust setting to match the default ones
- */
- protected void checkApplyDefaultSettingsValues(){
- SharedPreferences mainSharedPref = PreferenceManager.getDefaultSharedPreferences(this);
- SharedPreferences.Editor editor = mainSharedPref.edit();
- //Main fragment to show
- String screen = mainSharedPref.getString(SettingsFragment.PREF_KEY_STARTUP_SCREEN, "");
- boolean edit = false;
- if (screen.isEmpty()){
- editor.putString(SettingsFragment.PREF_KEY_STARTUP_SCREEN, "arrivals");
- edit=true;
- }
- //Fetchers
- final Set setSelected = mainSharedPref.getStringSet(SettingsFragment.KEY_ARRIVALS_FETCHERS_USE, new HashSet<>());
- if (setSelected.isEmpty()){
- String[] defaultVals = getResources().getStringArray(R.array.arrivals_sources_values_default);
- editor.putStringSet(SettingsFragment.KEY_ARRIVALS_FETCHERS_USE, utils.convertArrayToSet(defaultVals));
- edit=true;
- }
- //Live bus positions
- final String keySourcePositions=getString(R.string.pref_positions_source);
- final String positionsSource = mainSharedPref.getString(keySourcePositions, "");
- if(positionsSource.isEmpty()){
- String[] defaultVals = getResources().getStringArray(R.array.positions_source_values);
- editor.putString(keySourcePositions, defaultVals[0]);
- edit=true;
- }
- //Map style
- final String mapStylePref = mainSharedPref.getString(SettingsFragment.LIBREMAP_STYLE_PREF_KEY, "");
- if(mapStylePref.isEmpty()){
- final String[] defaultVals = getResources().getStringArray(R.array.map_style_pref_values);
- editor.putString(SettingsFragment.LIBREMAP_STYLE_PREF_KEY, defaultVals[0]);
- edit=true;
- }
- if (edit){
- editor.commit();
- }
-
- }
}
diff --git a/app/src/main/res/drawable/bottom_sheet_background.xml b/app/src/main/res/drawable/bottom_sheet_background.xml
--- a/app/src/main/res/drawable/bottom_sheet_background.xml
+++ b/app/src/main/res/drawable/bottom_sheet_background.xml
@@ -1,7 +1,7 @@
-
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bus_stop_new.xml b/app/src/main/res/drawable/bus_stop_new.xml
--- a/app/src/main/res/drawable/bus_stop_new.xml
+++ b/app/src/main/res/drawable/bus_stop_new.xml
@@ -12,10 +12,10 @@
+ android:fillColor="@color/white"/>
diff --git a/app/src/main/res/drawable/bus_stop_new_highlight.xml b/app/src/main/res/drawable/bus_stop_new_highlight.xml
--- a/app/src/main/res/drawable/bus_stop_new_highlight.xml
+++ b/app/src/main/res/drawable/bus_stop_new_highlight.xml
@@ -9,13 +9,14 @@
android:strokeWidth="0.0936408"
android:fillColor="?colorAccent"
android:strokeColor="#00000000"/>
+
+ android:fillColor="@color/white"/>
diff --git a/app/src/main/res/drawable/ic_bus.xml b/app/src/main/res/drawable/ic_bus.xml
new file mode 100644
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bus.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_bus_stilized.xml b/app/src/main/res/drawable/ic_bus_stilized.xml
--- a/app/src/main/res/drawable/ic_bus_stilized.xml
+++ b/app/src/main/res/drawable/ic_bus_stilized.xml
@@ -4,6 +4,6 @@
android:viewportWidth="48"
android:viewportHeight="48">
diff --git a/app/src/main/res/drawable/magnifying_glass_larger.xml b/app/src/main/res/drawable/magnifying_glass_larger.xml
--- a/app/src/main/res/drawable/magnifying_glass_larger.xml
+++ b/app/src/main/res/drawable/magnifying_glass_larger.xml
@@ -6,5 +6,5 @@
+ android:fillColor="@color/white"/>
diff --git a/app/src/main/res/drawable/map_bus_position_icon_sel.xml b/app/src/main/res/drawable/map_bus_position_icon_sel.xml
--- a/app/src/main/res/drawable/map_bus_position_icon_sel.xml
+++ b/app/src/main/res/drawable/map_bus_position_icon_sel.xml
@@ -1,7 +1,7 @@
-
diff --git a/app/src/main/res/layout/activity_principal.xml b/app/src/main/res/layout/activity_principal.xml
--- a/app/src/main/res/layout/activity_principal.xml
+++ b/app/src/main/res/layout/activity_principal.xml
@@ -41,15 +41,14 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
- android:background="@color/grey_050"
- android:theme="@style/ThemeOverlay.AppCompat.Light"
+ android:theme="@style/ThemeOverlay.AppCompat.DayNight"
app:headerLayout="@layout/nav_header"
app:itemIconTint="@color/teal_500"
app:itemTextAppearance="?android:attr/textAppearanceMedium"
- app:itemTextColor="@color/black_900"
+ app:itemTextColor="?android:textColorPrimary"
android:fitsSystemWindows="true"
app:menu="@menu/drawer_main" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/entry_alert_line_adapter.xml b/app/src/main/res/layout/entry_alert_line_adapter.xml
--- a/app/src/main/res/layout/entry_alert_line_adapter.xml
+++ b/app/src/main/res/layout/entry_alert_line_adapter.xml
@@ -22,7 +22,7 @@
android:textStyle="bold"
android:textSize="17sp"
android:fontFamily="@font/lato_bold"
- android:textColor="@color/black_900"
+ android:textColor="?android:textColorPrimary"
android:text="Alerts for line"
android:layout_alignParentTop="true"
android:layout_marginBottom="5dp"
@@ -35,10 +35,10 @@
android:id="@+id/messageBodyTextView"
android:textSize="16sp"
android:fontFamily="@font/lato_regular"
- android:textColor="@color/black_900"
+ android:textColor="?android:textColorPrimary"
android:text="Alert text"
android:layout_below="@id/messageTitleTextView"
/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/entry_bus_line_passage.xml b/app/src/main/res/layout/entry_bus_line_passage.xml
--- a/app/src/main/res/layout/entry_bus_line_passage.xml
+++ b/app/src/main/res/layout/entry_bus_line_passage.xml
@@ -50,6 +50,17 @@
+
+ Chiaro
+ Scuro
+ Segui il sistema
+
+ Imposta tema scuro o chiaro
diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml
new file mode 100644
--- /dev/null
+++ b/app/src/main/res/values-night/colors.xml
@@ -0,0 +1,26 @@
+
+
+ #ababab
+
+ #0b6fc1
+ #bfbfbf
+
+ #1a4db2
+
+
+
+ #3770e2
+
+ #c34322
+
+ #861313
+
+ #3657b0
+ #2270c3
+
+ @color/grey_400
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml
new file mode 100644
--- /dev/null
+++ b/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,11 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -14,6 +14,12 @@
#8A4247
#FFF3E0
+
+ #e08700
+
+
+ #d16900
+
#2378e8
#0079f5
#2a968b
@@ -25,7 +31,10 @@
#228b22
#0ABA34
- #009688
+ #009688
+ #00a38d
+ #009480
+ #00a887
#4DB6AC
#80cbc4
#008175
@@ -59,13 +68,16 @@
@color/red_dark
@color/blue_extra
+ #3089e8
#FF039BE5
#FF01579B
#FF40C4FF
#FF00B0FF
#66000000
+ #555
+ #cccccc
-
+ @color/grey_500
#00000000
@color/orange_500
@@ -74,4 +86,6 @@
@color/orange_icons_10light
@color/grey_400
@color/orange_750_l45
+
+ @color/blue_700
\ No newline at end of file
diff --git a/app/src/main/res/values/keys.xml b/app/src/main/res/values/keys.xml
--- a/app/src/main/res/values/keys.xml
+++ b/app/src/main/res/values/keys.xml
@@ -40,4 +40,17 @@
- osm_legacy
+
+
+ - day
+ - night
+ - system
+
+
+
+ - @string/day_night_theme_set_light
+ - @string/day_night_theme_set_dark
+ - @string/day_night_theme_keep_system
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -156,7 +156,7 @@
Near me
Nearby stops
- Nearby connections
+ Nearby arrivals
App version
The number of stops to show in the recent stops is invalid
Invalid value, put a valid number
@@ -299,6 +299,14 @@
- @string/nav_map_text
- @string/lines
+
+
+ Light
+ Dark
+ Change it with the system
+
+
+ Set dark or light theme
Source of real time positions for buses and trams
MaTO (updated more frequently, might have errors)
GTFS RT (less frequently updated, more accurate)
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -71,7 +71,23 @@
+
-
-