Page MenuHomeGitPull.it

D249.1780168332.diff
No OneTemporary

Authored By
Unknown
Size
393 KB
Referenced Files
None
Subscribers
None

D249.1780168332.diff

This file is larger than 256 KB, so syntax highlighting was skipped.
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">
<activity
android:name=".ActivityBackup"
android:label="@string/backup_restore"
@@ -56,7 +56,7 @@
<activity
android:name=".ActivityIntro"
android:exported="false"
- android:theme="@style/AppTheme.NoActionBar.Light"
+ android:theme="@style/AppThemeDayNight.NoActionBar"
/>
<activity
android:name=".ActivityExperiments"
@@ -134,7 +134,7 @@
android:name=".ActivitySettings"
android:label="@string/title_activity_settings"
android:parentActivityName=".ActivityPrincipal"
- android:theme="@style/AppTheme.NoActionBar">
+ android:theme="@style/AppThemeDayNight.NoActionBar">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="it.reyboz.bustorino.ActivityPrincipal"/>
diff --git a/app/src/main/assets/versatiles_eclipse_neutral_to90.json b/app/src/main/assets/versatiles_eclipse_neutral_to90.json
new file mode 100644
--- /dev/null
+++ b/app/src/main/assets/versatiles_eclipse_neutral_to90.json
@@ -0,0 +1,18184 @@
+{
+ "version": 8,
+ "name": "versatiles-eclipse",
+ "metadata": {
+ "license": "https://creativecommons.org/publicdomain/zero/1.0/",
+ "maputnik:renderer": "mlgljs"
+ },
+ "sources": {
+ "versatiles-shortbread": {
+ "attribution": "© <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> 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,43.2%,4.8%)"
+ }
+ },
+ {
+ "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,90.0%,11.4%,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,16.2%,9.5%,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,45.9%,11.4%)",
+ "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,26.1%,19.0%)",
+ "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,36.9%,23.8%)",
+ "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,36.9%,23.8%)",
+ "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,19.8%,16.1%)",
+ "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,36.9%,23.8%)",
+ "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,51.3%,4.8%)"
+ }
+ },
+ {
+ "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,43.2%,4.8%)",
+ "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,43.2%,4.8%)",
+ "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,43.2%,4.8%)"
+ }
+ },
+ {
+ "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,90.0%,23.8%)",
+ "fill-opacity": 0.1
+ }
+ },
+ {
+ "id": "site-college",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "sites",
+ "filter": [
+ "in",
+ "kind",
+ "college"
+ ],
+ "paint": {
+ "fill-color": "hsl(60,90.0%,23.8%)",
+ "fill-opacity": 0.1
+ }
+ },
+ {
+ "id": "site-school",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "sites",
+ "filter": [
+ "in",
+ "kind",
+ "school"
+ ],
+ "paint": {
+ "fill-color": "hsl(60,90.0%,23.8%)",
+ "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,9.9%,8.5%)"
+ }
+ },
+ {
+ "id": "site-bicycleparking",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "sites",
+ "filter": [
+ "in",
+ "kind",
+ "bicycle_parking"
+ ],
+ "paint": {
+ "fill-color": "hsl(24,9.9%,8.5%)"
+ }
+ },
+ {
+ "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,9.9%,13.3%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 15,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "building",
+ "type": "fill",
+ "source": "versatiles-shortbread",
+ "source-layer": "buildings",
+ "paint": {
+ "fill-color": "hsl(30,34.2%,7.6%)",
+ "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(117,68,25)",
+ "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(117,68,25)",
+ "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(117,68,25)",
+ "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(117,68,25)",
+ "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(117,68,25)",
+ "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(117,68,25)",
+ "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(117,68,25)",
+ "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(117,68,25)",
+ "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(69,56,4)",
+ "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(69,56,4)",
+ "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(69,56,4)",
+ "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(97,57,5)",
+ "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(69,56,4)",
+ "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(69,56,4)",
+ "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(69,56,4)",
+ "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(97,57,5)",
+ "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(20,16,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,64.8%,29.4%)",
+ "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,64.8%,29.4%)",
+ "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,64.8%,29.4%)",
+ "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,64.8%,29.4%)",
+ "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,64.8%,29.4%)",
+ "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,64.8%,29.4%)",
+ "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,64.8%,29.4%)",
+ "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,64.8%,29.4%)",
+ "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,90.0%,16.1%)",
+ "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,90.0%,16.1%)",
+ "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,90.0%,16.1%)",
+ "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,90.0%,21.8%)",
+ "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,90.0%,16.1%)",
+ "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,90.0%,16.1%)",
+ "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,90.0%,16.1%)",
+ "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,90.0%,21.8%)",
+ "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(20,16,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(20,16,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(20,16,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(20,16,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(20,16,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(20,16,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(20,16,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(20,16,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(20,16,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(20,16,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(20,16,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(20,16,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(20,16,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(20,16,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(20,16,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(20,16,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(20,16,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(20,16,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(20,16,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(20,16,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(20,16,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(20,16,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,64.8%,29.4%)",
+ "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,64.8%,29.4%)",
+ "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,64.8%,29.4%)",
+ "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,64.8%,29.4%)",
+ "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,64.8%,29.4%)",
+ "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,64.8%,29.4%)",
+ "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,64.8%,29.4%)",
+ "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,64.8%,29.4%)",
+ "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,90.0%,16.1%)",
+ "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,90.0%,16.1%)",
+ "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,90.0%,16.1%)",
+ "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,90.0%,21.8%)",
+ "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,90.0%,16.1%)",
+ "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,90.0%,16.1%)",
+ "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,90.0%,16.1%)",
+ "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,90.0%,21.8%)",
+ "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(15,10,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(15,10,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(14,10,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(90,84,78)",
+ "text-color": "rgb(90,84,78)",
+ "text-halo-color": "rgb(21,16,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,90.0%,21.8%)",
+ "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<String> 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/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<SquareStopAdapter.SquareViewHolder> {
- private final static int layoutRes = R.layout.stop_card;
+ private final static int layoutRes = R.layout.item_stop_nearby_card;
//private List<Stop> 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<Stop> {
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<Stop> 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<Stop> 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/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<String> KEYS_MERGE_SET = Set.of(PREF_FAVORITE_LINES);
public static final Set<String> 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
@@ -673,7 +673,7 @@
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)
arrivalsCard.visibility = View.GONE
@@ -846,7 +846,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))
}
@@ -905,12 +905,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_neutral_to90.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<String> 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 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
- <solid android:color="@android:color/white" />
+ <solid android:color="?android:colorBackground" />
<corners
android:topLeftRadius="14sp"
android:topRightRadius="14sp" />
</shape>
\ 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 @@
<path
android:pathData="m3.5412,1.164c-0.732,0 -1.2681,0.085 -1.6077,0.2548 -0.3395,0.1698 -0.509,0.4376 -0.509,0.8036v2.5135c0,0.1279 0.0238,0.2459 0.0723,0.354 0.0485,0.108 0.1129,0.2064 0.1922,0.2946v0.5421c0,0.075 0.0253,0.1379 0.076,0.1886 0.0507,0.0507 0.1137,0.076 0.1886,0.076h0.2646c0.075,0 0.1374,-0.0253 0.1881,-0.076 0.0507,-0.0507 0.0765,-0.1136 0.0765,-0.1886L2.4829,5.662L3.7474,5.662L3.642,5.5565C3.5147,5.4293 3.4139,5.2859 3.3391,5.1328L2.4829,5.1328c-0.1455,0 -0.2705,-0.0519 -0.3741,-0.1555 -0.1036,-0.1036 -0.155,-0.2281 -0.155,-0.3736v-0.7937h1.3565c0.0768,-0.1767 0.1873,-0.3423 0.3318,-0.4868 0.0145,-0.0145 0.0295,-0.0285 0.0444,-0.0424h-0.1452,-1.5875v-0.7937h3.175v0.4175c0.1863,0.0447 0.366,0.124 0.5292,0.2372v-0.9193c0,-0.3792 -0.1636,-0.6502 -0.4899,-0.8134C4.8417,1.2458 4.2997,1.164 3.5412,1.164ZM3.5541,1.6932c0.4851,0 0.837,0.0253 1.0552,0.076 0.2183,0.0507 0.3602,0.1137 0.4263,0.1886L2.0726,1.9578c0.0794,-0.0662 0.2282,-0.1268 0.4465,-0.1819 0.2183,-0.0551 0.5632,-0.0827 1.0351,-0.0827zM2.6152,4.0745c-0.1102,0 -0.2039,0.0386 -0.2811,0.1158 -0.0772,0.0772 -0.1158,0.1709 -0.1158,0.2811 0,0.1102 0.0386,0.2039 0.1158,0.2811 0.0772,0.0772 0.1709,0.1158 0.2811,0.1158 0.1102,0 0.2039,-0.0386 0.2811,-0.1158 0.0772,-0.0772 0.1158,-0.1709 0.1158,-0.2811 0,-0.1102 -0.0386,-0.204 -0.1158,-0.2811 -0.0772,-0.0772 -0.1709,-0.1158 -0.2811,-0.1158z"
android:strokeWidth="0.00661458"
- android:fillColor="?colorOnPrimary"/>
+ android:fillColor="@color/white"/>
<path
android:pathData="m4.7541,3.2766c-0.3147,0 -0.6292,0.1199 -0.8693,0.3599 -0.4802,0.4802 -0.4802,1.2587 0,1.7389l0.8693,0.8693 0.8696,-0.8693c0.4801,-0.4802 0.4801,-1.2587 0,-1.7389 -0.2401,-0.2401 -0.5549,-0.3599 -0.8696,-0.3599zM4.7541,3.9596c0.3018,0 0.5464,0.2447 0.5464,0.5464 0,0.3018 -0.2447,0.5464 -0.5464,0.5464 -0.3018,0 -0.5464,-0.2447 -0.5464,-0.5464 0,-0.3018 0.2447,-0.5464 0.5464,-0.5464z"
android:strokeWidth="0.136612"
- android:fillColor="?colorOnPrimary"
+ android:fillColor="@color/white"
android:strokeColor="#00000000"/>
</vector>
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"/>
+ <!-- previously, fillColor was set to ?colorOnPrimary -->
<path
android:pathData="m3.5412,1.164c-0.732,0 -1.2681,0.085 -1.6077,0.2548 -0.3395,0.1698 -0.509,0.4376 -0.509,0.8036v2.5135c0,0.1279 0.0238,0.2459 0.0723,0.354 0.0485,0.108 0.1129,0.2064 0.1922,0.2946v0.5421c0,0.075 0.0253,0.1379 0.076,0.1886 0.0507,0.0507 0.1137,0.076 0.1886,0.076h0.2646c0.075,0 0.1374,-0.0253 0.1881,-0.076 0.0507,-0.0507 0.0765,-0.1136 0.0765,-0.1886L2.4829,5.662L3.7474,5.662L3.642,5.5565C3.5147,5.4293 3.4139,5.2859 3.3391,5.1328L2.4829,5.1328c-0.1455,0 -0.2705,-0.0519 -0.3741,-0.1555 -0.1036,-0.1036 -0.155,-0.2281 -0.155,-0.3736v-0.7937h1.3565c0.0768,-0.1767 0.1873,-0.3423 0.3318,-0.4868 0.0145,-0.0145 0.0295,-0.0285 0.0444,-0.0424h-0.1452,-1.5875v-0.7937h3.175v0.4175c0.1863,0.0447 0.366,0.124 0.5292,0.2372v-0.9193c0,-0.3792 -0.1636,-0.6502 -0.4899,-0.8134C4.8417,1.2458 4.2997,1.164 3.5412,1.164ZM3.5541,1.6932c0.4851,0 0.837,0.0253 1.0552,0.076 0.2183,0.0507 0.3602,0.1137 0.4263,0.1886L2.0726,1.9578c0.0794,-0.0662 0.2282,-0.1268 0.4465,-0.1819 0.2183,-0.0551 0.5632,-0.0827 1.0351,-0.0827zM2.6152,4.0745c-0.1102,0 -0.2039,0.0386 -0.2811,0.1158 -0.0772,0.0772 -0.1158,0.1709 -0.1158,0.2811 0,0.1102 0.0386,0.2039 0.1158,0.2811 0.0772,0.0772 0.1709,0.1158 0.2811,0.1158 0.1102,0 0.2039,-0.0386 0.2811,-0.1158 0.0772,-0.0772 0.1158,-0.1709 0.1158,-0.2811 0,-0.1102 -0.0386,-0.204 -0.1158,-0.2811 -0.0772,-0.0772 -0.1709,-0.1158 -0.2811,-0.1158z"
android:strokeWidth="0.00661458"
- android:fillColor="?colorOnPrimary"/>
+ android:fillColor="@color/white"/>
<path
android:pathData="m4.7541,3.2766c-0.3147,0 -0.6292,0.1199 -0.8693,0.3599 -0.4802,0.4802 -0.4802,1.2587 0,1.7389l0.8693,0.8693 0.8696,-0.8693c0.4801,-0.4802 0.4801,-1.2587 0,-1.7389 -0.2401,-0.2401 -0.5549,-0.3599 -0.8696,-0.3599zM4.7541,3.9596c0.3018,0 0.5464,0.2447 0.5464,0.5464 0,0.3018 -0.2447,0.5464 -0.5464,0.5464 -0.3018,0 -0.5464,-0.2447 -0.5464,-0.5464 0,-0.3018 0.2447,-0.5464 0.5464,-0.5464z"
android:strokeWidth="0.136612"
- android:fillColor="?colorOnPrimary"
+ android:fillColor="@color/white"
android:strokeColor="#00000000"/>
</vector>
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 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="30dp"
+ android:tint="@color/black_icon_text"
+ android:viewportHeight="24"
+ android:viewportWidth="24"
+ android:width="30dp">
+
+ <path android:fillColor="#111"
+ android:pathData="M4,16c0,0.88 0.39,1.67 1,2.22L5,20c0,0.55 0.45,1 1,1h1c0.55,0 1,-0.45 1,-1v-1h8v1c0,0.55 0.45,1 1,1h1c0.55,0 1,-0.45 1,-1v-1.78c0.61,-0.55 1,-1.34 1,-2.22L20,6c0,-3.5 -3.58,-4 -8,-4s-8,0.5 -8,4v10zM7.5,17c-0.83,0 -1.5,-0.67 -1.5,-1.5S6.67,14 7.5,14s1.5,0.67 1.5,1.5S8.33,17 7.5,17zM16.5,17c-0.83,0 -1.5,-0.67 -1.5,-1.5s0.67,-1.5 1.5,-1.5 1.5,0.67 1.5,1.5 -0.67,1.5 -1.5,1.5zM18,11L6,11L6,6h12v5z"/>
+
+</vector>
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">
<path
- android:fillColor="#FFFFFFFF"
+ android:fillColor="?colorPrimary"
android:pathData="M12.45,42.5q-0.75,0 -1.35,-0.475 -0.6,-0.475 -0.6,-1.175v-4.1q-1.45,-0.85 -2.125,-2.375T7.7,31.15L7.7,11.2q0,-3.85 3.9,-5.65 3.9,-1.8 12.45,-1.8 8.45,0 12.35,1.775Q40.3,7.3 40.3,11.2v19.95q0,1.7 -0.675,3.225Q38.95,35.9 37.5,36.75v4.1q0,0.7 -0.6,1.175 -0.6,0.475 -1.35,0.475h-0.65q-0.85,0 -1.425,-0.475 -0.575,-0.475 -0.575,-1.125v-2.5L15.1,38.4v2.5q0,0.65 -0.575,1.125T13.1,42.5ZM24.05,10L37,10 11,10h13.05ZM32.8,24.65L11.1,24.65h25.8,-4.1ZM11.1,21.65h25.8L36.9,13L11.1,13ZM16.35,32.55q1.15,0 1.95,-0.8t0.8,-1.95q0,-1.15 -0.8,-1.95t-1.95,-0.8q-1.15,0 -1.95,0.8t-0.8,1.95q0,1.15 0.8,1.95t1.95,0.8ZM31.65,32.55q1.15,0 1.95,-0.8t0.8,-1.95q0,-1.15 -0.8,-1.95t-1.95,-0.8q-1.15,0 -1.95,0.8t-0.8,1.95q0,1.15 0.8,1.95t1.95,0.8ZM11,10h26q-1.2,-1.3 -4.6,-2.05 -3.4,-0.75 -8.35,-0.75 -5.9,0 -9.05,0.675 -3.15,0.675 -4,2.125ZM15.2,35h17.6q1.75,0 2.925,-1.375Q36.9,32.25 36.9,30.55v-5.9L11.1,24.65v5.9q0,1.7 1.175,3.075Q13.45,35 15.2,35Z"/>
</vector>
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 @@
<path
android:pathData="M14.857,13.791 L10.872,9.805A5.409,5.409 0,1 0,9.805 10.871l3.987,3.987zM6.598,10.452A3.853,3.853 0,1 1,10.452 6.597,3.859 3.859,0 0,1 6.598,10.452Z"
android:strokeWidth="1.36203"
- android:fillColor="?attr/colorOnPrimary"/>
+ android:fillColor="@color/white"/>
</vector>
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 @@
<vector android:height="40dp" android:viewportHeight="35.719"
android:viewportWidth="35.719" android:width="40dp" xmlns:android="http://schemas.android.com/apk/res/android">
- <path android:fillColor="@color/blue_500"
- android:strokeColor="@color/black"
+ <path android:fillColor="@color/bus_marker_color_selected"
+ android:strokeColor="?android:textColorPrimary"
android:pathData="m17.859,0.505c-2.419,2.799 -6.614,7.924 -8.107,10.349 -1.294,2.102 -2.431,4.162 -2.431,6.824 0,5.83 4.714,10.559 10.538,10.583 5.824,-0.024 10.538,-4.753 10.538,-10.583 0,-2.662 -1.138,-4.722 -2.431,-6.824C24.474,8.429 20.279,3.304 17.859,0.505Z"
android:strokeLineJoin="round"
android:strokeWidth="0.8"/>
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="@color/black_icon_text"
android:fitsSystemWindows="true"
app:menu="@menu/drawer_main" />
</androidx.drawerlayout.widget.DrawerLayout>
\ 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"
/>
</RelativeLayout>
</androidx.cardview.widget.CardView>
\ 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 @@
</TextView>
</RelativeLayout>
</androidx.cardview.widget.CardView>
+ <ImageView
+ android:id="@+id/arrivalsBusIcon"
+ android:layout_width="28dp"
+ android:layout_height="28dp"
+ android:layout_alignParentTop="true"
+ android:layout_toEndOf="@id/routeCard"
+ android:src="@drawable/ic_bus"
+ android:scaleType="fitCenter"
+ app:tint="@color/black_icon_text"
+
+ />
<!--the icon comes from setCompoundDrawables in PalinaAdapter -->
<!--android:drawableLeft="@drawable/bus"
@@ -57,11 +68,12 @@
<TextView
android:id="@+id/routeDestination"
android:textAppearance="?android:attr/textAppearanceLarge"
- android:textColor="@color/grey_600"
+ android:textColor="@color/black_icon_text"
android:layout_height="wrap_content"
android:layout_width="match_parent"
- android:layout_toEndOf="@id/routeCard"
+ android:layout_toEndOf="@id/arrivalsBusIcon"
android:layout_alignTop="@id/routeCard"
+ android:textSize="21sp"
android:maxLines="1"
android:drawablePadding="0dp"
android:singleLine="true">
diff --git a/app/src/main/res/layout/entry_bus_stop.xml b/app/src/main/res/layout/entry_bus_stop.xml
--- a/app/src/main/res/layout/entry_bus_stop.xml
+++ b/app/src/main/res/layout/entry_bus_stop.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:paddingTop="8dip"
- android:paddingBottom="8dip"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content" xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:paddingTop="8dip"
+ android:paddingBottom="8dip"
android:background="?android:attr/selectableItemBackground"
>
@@ -39,21 +39,30 @@
android:layout_alignParentStart="true"
android:textColor="@color/grey_600"
android:textAppearance="?android:attr/textAppearanceMedium"/>
+ <ImageView
+ android:id="@+id/arrivalsBusIcon"
+ android:layout_width="26dp"
+ android:layout_height="26dp"
+ android:layout_alignParentStart="true"
+ android:layout_below="@id/busStopLocality"
+ android:layout_marginStart="16sp"
+ android:src="@drawable/ic_bus"
+ android:scaleType="fitCenter"
+ app:tint="@color/black_icon_text"
+
+ />
<TextView
android:id="@+id/routesThatStopHere"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/busStopLocality"
- android:layout_marginLeft="16sp"
- android:layout_marginStart="16sp"
- android:layout_marginRight="16sp"
- android:layout_marginEnd="16sp"
+ android:layout_marginStart="4dp"
+ android:layout_marginEnd="16dp"
android:gravity="center_vertical"
- android:layout_toLeftOf="@id/busStopID"
android:layout_toStartOf="@id/busStopID"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true"
+ android:layout_toEndOf="@id/arrivalsBusIcon"
+ android:layout_marginTop="3dp"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/grey_600"/>
diff --git a/app/src/main/res/layout/fragment_dialog_alerts_line.xml b/app/src/main/res/layout/fragment_dialog_alerts_line.xml
--- a/app/src/main/res/layout/fragment_dialog_alerts_line.xml
+++ b/app/src/main/res/layout/fragment_dialog_alerts_line.xml
@@ -12,7 +12,7 @@
android:textStyle="bold"
android:textSize="18sp"
android:fontFamily="@font/pitagon_medium"
- android:textColor="@color/black_900"
+ android:textColor="?android:textColorPrimary"
android:text="Alerts for line"
android:layout_width="wrap_content"
android:layout_marginBottom="5dp"
diff --git a/app/src/main/res/layout/fragment_lines_detail.xml b/app/src/main/res/layout/fragment_lines_detail.xml
--- a/app/src/main/res/layout/fragment_lines_detail.xml
+++ b/app/src/main/res/layout/fragment_lines_detail.xml
@@ -69,7 +69,7 @@
app:layout_constraintTop_toBottomOf="@id/switchImageButton"
app:layout_constraintEnd_toStartOf="@id/lineInfoWarningButton"
app:layout_constraintStart_toStartOf="parent"
- android:textColor="@color/grey_700"
+ android:textColor="@color/black_icon_text"
android:fontFamily="@font/lato_regular"
android:textSize="18sp"
android:gravity="center"
diff --git a/app/src/main/res/layout/fragment_lines_grid.xml b/app/src/main/res/layout/fragment_lines_grid.xml
--- a/app/src/main/res/layout/fragment_lines_grid.xml
+++ b/app/src/main/res/layout/fragment_lines_grid.xml
@@ -43,6 +43,8 @@
android:layout_margin="4dp"
android:layout_marginStart="16dp"
android:rotation="90"
+ app:tint="?android:textColorPrimary"
+
/>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -50,7 +52,7 @@
android:textAppearance="@style/TextAppearance.AppCompat.Body2"
android:textSize="@dimen/subtitle_size"
android:layout_margin="4dp"
- android:textColor="@color/black_900"
+ android:textColor="?android:textColorPrimary"
android:gravity="center"
android:id="@+id/favoritesTitleView"
app:layout_constraintTop_toBottomOf="@id/updateMessageTextView"
@@ -81,6 +83,8 @@
android:layout_margin="4dp"
android:layout_marginStart="16dp"
android:rotation="0"
+ app:tint="?android:textColorPrimary"
+
/>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -88,7 +92,7 @@
android:textAppearance="@style/TextAppearance.AppCompat.Body2"
android:textSize="@dimen/subtitle_size"
android:layout_margin="4dp"
- android:textColor="@color/black_900"
+ android:textColor="?android:textColorPrimary"
android:gravity="center"
android:id="@+id/urbanLinesTitleView"
app:layout_constraintTop_toBottomOf="@id/favoritesRecyclerView"
@@ -120,13 +124,14 @@
android:layout_margin="4dp"
android:layout_marginStart="16dp"
android:rotation="0"
+ app:tint="?android:textColorPrimary"
/>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/turist_lines"
android:textAppearance="@style/TextAppearance.AppCompat.Body2"
android:textSize="@dimen/subtitle_size"
- android:textColor="@color/black_900"
+ android:textColor="?android:textColorPrimary"
android:layout_margin="4dp"
android:layout_marginStart="6dp"
android:gravity="center"
@@ -158,6 +163,8 @@
android:layout_margin="4dp"
android:layout_marginStart="16dp"
android:rotation="0"
+ app:tint="?android:textColorPrimary"
+
/>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -165,7 +172,7 @@
android:textAppearance="@style/TextAppearance.AppCompat.Body2"
android:textSize="@dimen/subtitle_size"
android:layout_margin="4dp"
- android:textColor="@color/black_900"
+ android:textColor="?android:textColorPrimary"
android:gravity="center"
android:layout_marginStart="6dp"
android:id="@+id/extraurbanLinesTitleView"
diff --git a/app/src/main/res/layout/include_map_bottom_sheet.xml b/app/src/main/res/layout/include_map_bottom_sheet.xml
--- a/app/src/main/res/layout/include_map_bottom_sheet.xml
+++ b/app/src/main/res/layout/include_map_bottom_sheet.xml
@@ -119,7 +119,7 @@
android:layout_width="30sp"
android:layout_height="30sp"
android:layout_gravity="center"
- app:tint="?colorOnPrimary"
+ app:tint="@android:color/white"
app:srcCompat="@drawable/ic_baseline_departure_board_24" />
</androidx.cardview.widget.CardView>
@@ -145,6 +145,7 @@
android:layout_width="30sp"
android:layout_height="30sp"
android:layout_gravity="center"
+ app:tint="@android:color/white"
app:srcCompat="@drawable/navigation_right" />
</androidx.cardview.widget.CardView>
diff --git a/app/src/main/res/layout/stop_card.xml b/app/src/main/res/layout/item_stop_nearby_card.xml
rename from app/src/main/res/layout/stop_card.xml
rename to app/src/main/res/layout/item_stop_nearby_card.xml
--- a/app/src/main/res/layout/stop_card.xml
+++ b/app/src/main/res/layout/item_stop_nearby_card.xml
@@ -26,8 +26,11 @@
android:id="@+id/stop_nameText"
style="@style/TextAppearance.AppCompat.Medium"
android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true" android:paddingLeft="6dp"
- android:textColor="@color/primary_material_dark" android:layout_marginBottom="6dp"
+ android:layout_alignParentStart="true"
+ android:paddingLeft="6dp"
+ android:textSize="20sp"
+ android:textColor="?android:textColorPrimary"
+ android:layout_marginBottom="6dp"
android:layout_marginTop="6dp" android:layout_marginLeft="6dp"
android:layout_marginStart="6dp" android:layout_marginRight="6dp" android:layout_marginEnd="6dp"/>
<TextView
@@ -35,10 +38,10 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="stopNumber"
- android:textSize="16sp"
+ android:textSize="18sp"
android:layout_below="@id/stop_nameText"
android:textIsSelectable="true" android:layout_marginTop="6dp"
- android:textColor="@color/orange_700"
+ android:textColor="?colorPrimaryDark"
android:layout_marginStart="12dp" android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"/>
<TextView
@@ -49,7 +52,8 @@
android:layout_marginStart="10dp"
android:minWidth="50dp"
android:textSize="16sp"
- android:id="@+id/stop_distanceTextView" android:layout_toEndOf="@+id/stop_numberText"
+ android:id="@+id/stop_distanceTextView"
+ android:layout_toEndOf="@+id/stop_numberText"
android:layout_toRightOf="@id/stop_numberText"
android:layout_alignTop="@+id/stop_numberText"
/>
@@ -101,7 +105,7 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text=""
+ android:text="1,2,3,4"
android:id="@+id/stop_linesText"
android:layout_toRightOf="@+id/stop_distanceTextView"
android:minWidth="80dp"
@@ -110,8 +114,11 @@
android:layout_alignTop="@+id/stop_nameText"
android:nestedScrollingEnabled="true"
android:gravity="center_horizontal|center"
- android:textColor="@color/blue_700" android:textSize="14sp" android:layout_weight="1"
+ android:textColor="@color/lines_nearby_color"
+ android:fontFamily="@font/nevermind_compact"
+ android:textSize="16sp"
+ android:layout_weight="1"
android:padding="5dp" android:maxWidth="100sp" android:layout_gravity="center_vertical|end"
android:layout_marginRight="5dp"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
\ No newline at end of file
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -257,4 +257,11 @@
<string name="no_permission_dialog_text_location">Per usare questa funzionalità, l\'app necessita dell\'accesso alla posizione, che ora può essere dato solo dalle impostazioni di sistema.</string>
<string name="no_permission_dialog_open">Apri le impostazioni</string>
<string name="back_again_to_close">Premi ancora \"indietro\" per uscire dall\'app</string>
+
+ <!-- Theme -->
+ <string name="day_night_theme_set_light">Chiaro</string>
+ <string name="day_night_theme_set_dark">Scuro</string>
+ <string name="day_night_theme_keep_system">Segui il sistema</string>
+
+ <string name="pref_theme_day_night_title">Imposta tema scuro o chiaro</string>
</resources>
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,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <color name="black_icon_text">#cccccc</color>
+ <!-- luminosity from 52 to 40 -->
+ <color name="blue_500">#0b6fc1</color>
+ <color name="black_800">#bfbfbf</color>
+ <!-- darker color, 40% luminosity -->
+ <color name="blue_700">#1a4db2</color>
+ <!-- 45% luminos -->
+ <color name="lines_nearby_color">#1d56c8</color>
+
+ <color name="red_orange">#c34322</color>
+ <!-- color of the polyline in line screen-->
+ <color name="red_dark">#861313</color>
+ <!-- bus marker in the map -->
+ <color name="bus_marker_color">#3657b0</color>
+ <color name="bus_marker_color_selected">#2270c3</color>
+
+
+</resources>
\ 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 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <style name="AppThemeDayNight" parent="Theme.MaterialComponents.DayNight">
+ <item name="android:textColorSecondary">@color/text_secondary_night</item>
+ <item name="colorPrimary">@color/orange_500_night</item>
+ <item name="colorPrimaryDark">@color/orange_700_night</item>
+ <item name="colorAccent">@color/teal_500_night</item>
+
+
+ </style>
+</resources>
\ 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 @@
<color name="brown_vd">#8A4247</color><!-- #1976D2 -->
<color name="dialog_background">#FFF3E0</color>
+ <!-- night color, from 50 to 44 luminosity -->
+ <color name="orange_500_night">#e08700</color>
+
+ <!-- night color, to 41 luminosity -->
+ <color name="orange_700_night">#d16900</color>
+
<color name="blue_mid_2">#2378e8</color>
<color name="blue_c_or_700">#0079f5</color>
<color name="teal_dark">#2a968b</color>
@@ -25,7 +31,10 @@
<color name="forest_green">#228b22</color>
<color name="green_extra">#0ABA34</color>
- <color name="teal_500">#009688</color>
+ <color name="OLD_teal_500">#009688</color>
+ <color name="teal_500">#00a38d</color>
+ <color name="teal_500_night">#009480</color>
+ <color name="teal_500_proposal">#00a887</color>
<color name="teal_300">#4DB6AC</color>
<color name="teal_200">#80cbc4</color>
<color name="teal_900">#008175</color>
@@ -59,11 +68,14 @@
<color name="line_drawn_poly">@color/red_dark</color>
<color name="bus_marker_color">@color/blue_extra</color>
+ <color name="bus_marker_color_selected">#3089e8</color>
<color name="light_blue_600">#FF039BE5</color>
<color name="light_blue_900">#FF01579B</color>
<color name="light_blue_A200">#FF40C4FF</color>
<color name="light_blue_A400">#FF00B0FF</color>
<color name="black_overlay">#66000000</color>
+ <color name="black_icon_text">#666666</color>
+ <color name="text_secondary_night">#cccccc</color>
<color name="colorTransparent">#00000000</color>
@@ -74,4 +86,6 @@
<color name="map_icon_background_active">@color/orange_icons_10light</color>
<color name="map_icon_background_inactive">@color/grey_400</color>
<color name="alerts_color_button">@color/orange_750_l45</color>
+
+ <color name="lines_nearby_color">@color/blue_700</color>
</resources>
\ 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 @@
<item>osm_legacy</item>
</array>
+ <!-- Tema scuro / chiaro da Material -->
+ <array name="day_night_keys" translatable="false">
+ <item>day</item>
+ <item>night</item>
+ <item>system</item>
+ </array>
+
+ <array name="day_night_values">
+ <item>@string/day_night_theme_set_light</item>
+ <item>@string/day_night_theme_set_dark</item>
+ <item>@string/day_night_theme_keep_system</item>
+ </array>
+
</resources>
\ 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
@@ -299,6 +299,14 @@
<item>@string/nav_map_text</item>
<item>@string/lines</item>
</array>
+
+
+ <string name="day_night_theme_set_light">Light</string>
+ <string name="day_night_theme_set_dark">Dark</string>
+ <string name="day_night_theme_keep_system">Change it with the system</string>
+
+ <!-- title used in the preferences screen -->
+ <string name="pref_theme_day_night_title">Set dark or light theme</string>
<string name="positions_source_pref_title">Source of real time positions for buses and trams</string>
<string name="positions_source_mato_descr">MaTO (updated more frequently, might have errors)</string>
<string name="positions_source_gtfsrt_descr">GTFS RT (less frequently updated, more accurate)</string>
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 @@
</style>
<!-- styles that support night mode -->
+ <!-- copied all things inside AppTheme -->
<style name="AppThemeDayNight" parent="Theme.MaterialComponents.DayNight">
+
+ <!-- All customizations that are NOT specific to a particular API-level can go here. -->
+ <item name="colorPrimary">@color/orange_500</item>
+ <item name="colorPrimaryDark">@color/orange_700</item>
+ <item name="colorAccent">@color/teal_500</item>
+ <item name="colorOnPrimary">@color/white</item>
+ <!-- For the preferences Fragment -->
+ <!--<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>-->
+
+ <item name="android:textColor">@color/black_800</item>
+ <!-- keep default for day, change for night-->
+ <!--
+ <item name="android:textColorPrimary">@color/grey_700</item>
+ <item name="android:textColorSecondary">@color/text_secondary</item>
+ -->
</style>
<style name="AppThemeDayNight.NoActionBar" parent="AppThemeDayNight">
diff --git a/app/src/main/res/values/theme.xml b/app/src/main/res/values/theme.xml
--- a/app/src/main/res/values/theme.xml
+++ b/app/src/main/res/values/theme.xml
@@ -1,20 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
- <style name="FavTheme" parent="AppMaterialTheme.NoActionBar">
+ <style name="FavTheme" parent="AppThemeDayNight.NoActionBar">
<item name="colorPrimary">@color/blue_500</item>
<item name="colorPrimaryDark">@color/blue_700</item>
<item name="colorAccent">@color/teal_500</item>
</style>
- <style name="AboutTheme" parent="AppMaterialTheme.NoActionBar">
+ <style name="AboutTheme" parent="AppThemeDayNight.NoActionBar">
<item name="colorPrimary">@color/teal_500</item>
<item name="colorPrimaryDark">@color/teal_900</item>
<item name="colorAccent">@color/blue_700</item>
<item name="colorOnPrimary">@color/white</item>
</style>
- <style name="MapTheme" parent="AppMaterialTheme.NoActionBar">
+ <style name="MapTheme" parent="AppThemeDayNight.NoActionBar">
<item name="colorPrimary">@color/orange_500</item>
<item name="colorPrimaryDark">@color/orange_700</item>
<item name="colorAccent">@color/teal_500</item>
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -3,6 +3,14 @@
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.preference.PreferenceCategory android:title="@string/general_settings">
+ <androidx.preference.ListPreference
+ android:key="app_theme_day_night"
+ android:entryValues="@array/day_night_keys"
+ android:entries="@array/day_night_values"
+ android:title="@string/pref_theme_day_night_title"
+ android:summary="%s"
+ />
+
<androidx.preference.ListPreference
android:key="startup_screen_to_show"
android:entries="@array/first_screen_shown"

File Metadata

Mime Type
text/plain
Expires
Sat, May 30, 21:12 (22 h, 35 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1930194
Default Alt Text
D249.1780168332.diff (393 KB)

Event Timeline