Updated walkabout style to provide sdk toggles 44/106744/1 accepted/tizen/common/20170102.152132 accepted/tizen/mobile/20170102.060410 accepted/tizen/wearable/20170102.060427 submit/tizen/20170102.001631
authorVarun <tallytalwar@gmail.com>
Thu, 22 Dec 2016 21:37:02 +0000 (16:37 -0500)
committerVarun <tallytalwar@gmail.com>
Thu, 22 Dec 2016 22:20:57 +0000 (17:20 -0500)
- provides building toggle
- provides public transit toggle
- provides localized language selection

Change-Id: I40785198ff2ee9373d1972cf2ebb105d92acaec4

scenes/walkabout-style/images/walkabout@2x.png [new file with mode: 0644]
scenes/walkabout-style/walkabout-style.yaml

diff --git a/scenes/walkabout-style/images/walkabout@2x.png b/scenes/walkabout-style/images/walkabout@2x.png
new file mode 100644 (file)
index 0000000..b557c33
Binary files /dev/null and b/scenes/walkabout-style/images/walkabout@2x.png differ
index 21ec58b..625e0a9 100644 (file)
 
 global:
     #ux/ui
-    #
-    # missing language
-    # missing transit overlay
-    #
+    ux_language: false             # l10n language code, trusting OSM in v0.10 tiles, fixed in v1.0 tiles
+    ux_language_fallback: false    # l10n language code, trusting OSM in v0.10 tiles, fixed in v1.0 tiles
+    ux_language_text_source: |
+        function() {
+            // if a ux_langauge has been defined use that, else if there is feature name in the fallback_ux_language then use that, else use the feature's default name in the local language
+            return (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature.name;
+        }
+    ux_language_text_source_boundary_lines: |
+        function() {
+            var right = (global.ux_language && feature['name:right:'+global.ux_language]) || (global.ux_language_fallback && feature['name:right:'+global.ux_language_fallback]) || feature['name:right'];
+            var left = (global.ux_language && feature['name:left:'+global.ux_language]) || (global.ux_language_fallback && feature['name:left:'+global.ux_language_fallback]) || feature['name:left'];
+            if( right && left ) {
+                //if( right.includes(' ') || left.includes(' ') ) {
+                    return left + " - " + right;
+                //} else {
+                //    return right + '\n' + left;
+                //}
+            } else {
+                return (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature.name;
+            }
+        }
+    ux_language_text_source_short: |
+        function() {
+            return (global.ux_language && feature['name:short:'+global.ux_language]) || (global.ux_language_fallback && feature['name:short:'+global.ux_language_fallback]) || feature['name:short'];
+        }
+    ux_language_text_source_short_proxy_name: |
+        function() {
+            var name  = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'] || '';
+            var short = (global.ux_language && feature['name:short:'+global.ux_language]) || (global.ux_language_fallback && feature['name:short:'+global.ux_language_fallback]) || feature['name:short'];
+            return short ? name : '';
+        }
+    ux_language_text_source_abbreviation: |
+        function() {
+            var name  = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'] || '';
+            var abbrev = (global.ux_language && feature['name:abbreviation:'+global.ux_language]) || (global.ux_language_fallback && feature['name:abbreviation:'+global.ux_language_fallback]) || feature['name:abbreviation'];
+            return abbrev || name;
+        }
+    ux_language_text_source_iata: |
+        function() {
+            var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'];
+            if(feature.iata) {
+                if (name) {
+                    return name + ' (' + feature.iata + ')';
+                }
+                else {
+                    return feature.iata;
+                }
+            } else {
+                return name;
+            }
+        }
+    ux_language_text_source_ocean: |
+        function() {
+            var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'] || '';
+            name = name.split(' ').join('\n');
+            return name.split('').join('  ');
+        }
+    ux_language_text_source_sea: |
+        function() {
+            var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'] || '';
+            name = name.split(' ').join('\n');
+            return name.split('').join(' ');
+        }
+    ux_language_text_source_continent_stacked_only: |
+        function() {
+            var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'] || '';
+            return name.split(' ').join('\n');
+        }
+    ux_language_text_source_continent: |
+        function() {
+            var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'] || '';
+            name = name.split(' ').join('\n');
+            return name.split('').join(' ');
+        }
+    ux_language_text_source_road_ref_and_name: |
+        function() {
+            // if a ux_langauge has been defined use that, else if there is feature name in the fallback_ux_language then use that, else use the feature's default name in the local language
+            return (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature.name;
+
+            /*
+            var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'];
+            if(feature.ref && name) {
+                return (feature.ref + ' ' + name);
+            } else {
+                return name;
+            }
+            */
+        }
+    ux_language_text_source_road_ref_and_name_short: |
+        function() {
+            // if a ux_langauge has been defined use that, else if there is feature name in the fallback_ux_language then use that, else use the feature's default name in the local language
+            return (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature.name;
+
+            /*
+            var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'];
+            if (feature.ref && (feature.ref.length < 6) && name) {
+                return feature.ref + ' ' + name;
+            } else {
+                return name;
+            }
+            */
+        }
+    ux_language_text_source_piste_advanced: |
+        function() {
+            var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'];
+            return name ? ('◆ ' + name) : '◆';
+        }
+    ux_language_text_source_piste_expert: |
+        function() {
+            var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'];
+            return name ? ('◆◆ ' + name) : '◆◆';
+        }
+    ux_language_text_source_building_and_address: |
+        function() {
+            var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'];
+            if (name && feature.addr_housenumber) {
+                return name + '\n' + feature.addr_housenumber;
+            } else {
+                return name;
+            }
+        }
+
     # To facilitate data visualizations several recommended sort orders are provided
     #
     # Your classic raster map overlay.
@@ -72,8 +190,21 @@ global:
     sdk_order_under_everything_8: 8
     sdk_order_under_everything_9: 9
     #
+    # TRANSIT OVERLAY
+    # should default to "auto", with SDK overriding it to true or false,
+    # or app logic sets other booleans that triggers auto behavior later
+    sdk_transit_overlay: false
+    #
+    # SHIELDS
+    sdk_shield_color: black
+    sdk_shield_text_color: white
+    #
+    # enable interactivity for key features
+    interactive: true
+    #
     # default order for basemap features
     feature_order: function() { return feature.sort_rank; }
+    building_extrude: true
     #
     # TODO: YAML based globals below will move into this Tangram globals block
 
@@ -92,23 +223,23 @@ labels-global:
     - &icon_visible_landuse_green     true      #this needs work
     - &text_visible_landuse_green     true
     - &label_visible_poi_landuse      true
-    - &icon_visible_poi_landuse       false     #false for default
-    - &text_visible_poi_landuse       false     #false for default
+    - &icon_visible_poi_landuse       true      #false for default
+    - &text_visible_poi_landuse       true      #false for default
     - &label_visible_poi_landuse_e    true
-    - &icon_visible_poi_landuse_e     false     #false for default
+    - &icon_visible_poi_landuse_e     true      #false for default
     - &text_visible_poi_landuse_e     true
-    - &label_visible_station          false     #false for default
-    - &icon_visible_station           false     #false for default
-    - &text_visible_station           false     #false for default
+    - &label_visible_station          true      #false for default
+    - &icon_visible_station           true      #false for default
+    - &text_visible_station           true      #false for default
     - &text_visible_highway           true
-    - &text_visible_highway_e         false     #false for default
+    - &text_visible_highway_e         true      #false for default
     - &text_visible_trunk_primary     true
-    - &text_visible_trunk_primary_e2  false     #false for default
-    - &text_visible_trunk_primary_e   false     #false for default
+    - &text_visible_trunk_primary_e2  true      #false for default
+    - &text_visible_trunk_primary_e   true      #false for default
     - &text_visible_secondary         true
-    - &text_visible_secondary_e       false     #false for default
+    - &text_visible_secondary_e       true      #false for default
     - &text_visible_tertiary          true
-    - &text_visible_tertiary_e        false     #false for default
+    - &text_visible_tertiary_e        true      #false for default
     - &text_visible_minor_road        true
     - &text_visible_minor_road_e      true
     - &text_visible_service_road      true
@@ -116,9 +247,9 @@ labels-global:
     - &text_visible_piste             true
     - &text_visible_steps             true
     - &text_visible_aerialway         true
-    - &text_visible_shields           true
+    - &text_visible_shields           false
     - &text_visible_exits             true
-    - &text_visible_exits_e           false     #false for default
+    - &text_visible_exits_e           true      #false for default
     - &text_visible_airport_gate      true
 
 settings:
@@ -290,421 +421,354 @@ scene:
     # animated: true
 
 fonts:
+    Open Sans:
+        - weight: 300 # Light
+          url: fonts/OpenSans-Light.woff
+        - weight: normal # Regular
+          url: fonts/OpenSans-Regular.woff
+        - weight: normal # Regular
+          style: italic
+          url: fonts/OpenSans-Italic.woff
+        - weight: 600 # Semi Bold
+          url: fonts/OpenSans-Semibold.woff
+        - weight: 600 # Semi Bold
+          style: italic
+          url: fonts/OpenSans-SemiboldItalic.woff
+        - weight: bold
+          url: fonts/OpenSans-Bold.woff
     Montserrat:
-        url: https://fonts.gstatic.com/s/montserrat/v7/zhcz-_WihjSQC0oHJ9TCYL3hpw3pgy2gAi-Ip7WPMi0.woff
+        - weight: normal
+          #url: https://fonts.gstatic.com/s/montserrat/v7/zhcz-_WihjSQC0oHJ9TCYL3hpw3pgy2gAi-Ip7WPMi0.woff
+          url: fonts/Montserrat-Regular.woff
 
 textures:
     pois:
-        url: images/poi_icons_18@2x.png
+        url: images/walkabout@2x.png
         filtering: mipmap
         sprites:
             # define sprites: [x origin, y origin, width, height]
-            'US:CA_1char': [220, 606, 82, 92]
-            'US:CA_2char': [120, 606, 94, 94]
-            'US:CA_3char': [0, 606, 112, 92]
-            'US:CA_4char': [808, 510, 124, 92]
-            'US:CA_5char': [672, 510, 128, 92]
-            'US:I_1char': [0, 710, 90, 100]
-            'US:I_2char': [138, 314, 102, 102]
-            'US:I_3char': [0, 314, 132, 100]
-            'US:I_4char': [756, 210, 140, 100]
-            'US:I_5char': [596, 210, 152, 100]
-            'US:NY_1char': [768, 418, 72, 88]
-            'US:NY_2char': [112, 418, 88, 88]
-            'US:NY_3char': [0, 418, 104, 86]
-            'US:NY_4char': [896, 314, 116, 86]
-            'US:NY_5char': [768, 314, 120, 86]
-            'US:PA_1char': [688, 418, 72, 88]
-            'US:PA_2char': [592, 418, 88, 88]
-            'US:PA_3char': [472, 418, 112, 88]
-            'US:PA_4char': [344, 418, 120, 88]
-            'US:PA_5char': [208, 418, 128, 88]
-            'US:US_1char': [900, 606, 88, 94]
-            'US:US_2char': [788, 608, 106, 94]
-            'US:US_3char': [642, 606, 138, 100]
-            'US:US_4char': [478, 606, 158, 100]
-            'US:US_5char': [308, 606, 164, 100]
+            'US:CA-1char': [688, 786, 82, 92]
+            'US:CA-2char': [588, 786, 92, 92]
+            'US:CA-3char': [468, 786, 112, 92]
+            'US:CA-4char': [336, 786, 124, 92]
+            'US:CA-5char': [200, 786, 128, 92]
+            'US:I-1char': [514, 890, 90, 100]
+            'US:I-2char': [0, 502, 102, 102]
+            'US:I-3char': [856, 370, 134, 100]
+            'US:I-4char': [708, 370, 140, 100]
+            'US:I-5char': [548, 370, 152, 100]
+            'US:NY-1char': [656, 606, 72, 88]
+            'US:NY-2char': [0, 606, 88, 88]
+            'US:NY-3char': [880, 502, 104, 86]
+            'US:NY-4char': [756, 502, 116, 86]
+            'US:NY-5char': [628, 502, 120, 86]
+            'US:PA-1char': [576, 606, 72, 88]
+            'US:PA-2char': [480, 606, 88, 88]
+            'US:PA-3char': [360, 606, 112, 88]
+            'US:PA-4char': [232, 606, 120, 88]
+            'US:PA-5char': [96, 606, 128, 88]
+            'US:US-1char': [420, 890, 88, 94]
+            'US:US-2char': [308, 892, 106, 94]
+            'US:US-3char': [162, 890, 136, 100]
+            'US:US-4char': [0, 890, 156, 100]
+            'US:US-5char': [776, 786, 164, 100]
             airport: [952, 0, 38, 38]
             aerodrome: [952, 0, 38, 38]
-            allotments: [46, 814, 38, 38]
-            aquarium: [916, 168, 38, 38]
-            art-gallery: [824, 168, 38, 38]
-            art_gallery: [824, 168, 38, 38]
-            art: [824, 168, 38, 38]
-            athletics-sports: [368, 168, 38, 38]
-            pitch: [368, 168, 38, 38]
-            athletic_sports: [368, 168, 38, 38]
-            recreation_ground: [368, 168, 38, 38]
-            atm: [92, 168, 38, 38]
-            attraction: [550, 210, 38, 38]
-            automotive-shop: [184, 168, 38, 38]
-            car_repair: [184, 168, 38, 38]
-            automotive: [184, 168, 38, 38]
-            tyres: [184, 168, 38, 38]
-            bakery: [732, 168, 38, 38]
-            pastry: [732, 168, 38, 38]
-            chocolate: [732, 168, 38, 38]
-            bank: [138, 168, 38, 38]
-            bar: [414, 168, 38, 38]
-            pub: [414, 168, 38, 38]
-            baseball-field: [690, 84, 38, 38]
-            basketball-court: [644, 84, 38, 38]
-            battlefield: [324, 710, 38, 38]
-            bbq: [738, 710, 38, 38]
-            beach: [828, 84, 38, 38]
-            beach-resort: [232, 710, 38, 38]
-            beach_resort: [232, 710, 38, 38]
-            beer-garden: [458, 210, 38, 38]
-            biergarten: [458, 210, 38, 38]
-            brewery: [458, 210, 38, 38]
+            allotments: [460, 252, 38, 38]
+            aquarium: [824, 168, 38, 38]
+            atm: [0, 168, 38, 38]
+            attraction: [458, 210, 38, 38]
+            bakery: [640, 168, 38, 38]
+            bank: [46, 168, 38, 38]
+            category-predicate-money: [46, 168, 38, 38]
+            bar: [322, 168, 38, 38]
+            pub: [322, 168, 38, 38]
+            category-predicate-drink: [322, 168, 38, 38]
+            baseball: [552, 84, 38, 38]
+            basketball: [506, 84, 38, 38]
+            battlefield: [732, 210, 38, 38]
+            bbq: [138, 252, 38, 38]
+            beach: [690, 84, 38, 38]
+            beach_resort: [640, 210, 38, 38]
             bench: [630, 0, 38, 38]
-            bicycle-parking: [828, 126, 38, 38]
-            bike-shop: [46, 168, 38, 38]
-            bicycle: [46, 168, 38, 38]
-            bicycle_rental: [46, 168, 38, 38]
-            bike: [46, 168, 38, 38]
-            bike_shop: [46, 168, 38, 38]
-            boat-ferry: [906, 0, 38, 38]
-            ferry_terminal: [906, 0, 38, 38]
-            ferry-boat: [906, 0, 38, 38]
-            ferry: [906, 0, 38, 38]
-            boat-ramp: [276, 84, 38, 38]
-            slipway: [276, 84, 38, 38]
-            boat_ramp: [276, 84, 38, 38]
-            boat-rental: [92, 814, 38, 38]
-            boat_rental: [92, 814, 38, 38]
-            bookstore: [0, 168, 38, 38]
-            books: [0, 168, 38, 38]
-            bridge: [92, 126, 38, 38]
-            buddhism: [966, 84, 38, 38]
-            building: [598, 168, 38, 38]
-            auditorium: [598, 168, 38, 38]
-            terminal: [598, 168, 38, 38]
-            hangar: [598, 168, 38, 38]
-            retirement_home: [598, 168, 38, 38]
-            manor: [598, 168, 38, 38]
-            recreation_center: [598, 168, 38, 38]
-            apartments: [598, 168, 38, 38]
-            burger: [320, 210, 38, 38]
-            fast_food: [320, 210, 38, 38]
-            bus-station: [860, 0, 38, 38]
-            bus_stop: [860, 0, 38, 38]
+            bicycle: [964, 126, 38, 38]
+            bicycle_rental: [964, 126, 38, 38]
+            bicycle_rental_station: [964, 126, 38, 38]
+            bicycle_parking: [736, 126, 38, 38]
+            biergarten: [366, 210, 38, 38]
+            brewery: [366, 210, 38, 38]
+            boat_rental: [506, 252, 38, 38]
+            books: [918, 126, 38, 38]
+            bridge: [966, 84, 38, 38]
+            buddhist: [828, 84, 38, 38]
+            building: [506, 168, 38, 38]
+            hangar: [506, 168, 38, 38]
+            nursing_home: [506, 168, 38, 38]
+            manor: [506, 168, 38, 38]
+            apartments: [506, 168, 38, 38]
+            care_home: [506, 168, 38, 38]
             bus_station: [860, 0, 38, 38]
-            butcher: [46, 84, 38, 38]
-            campground: [0, 126, 38, 38]
-            camp_site: [0, 126, 38, 38]
-            caravan_site: [0, 126, 38, 38]
-            candy-store: [182, 210, 38, 38]
-            candy: [182, 210, 38, 38]
-            confectionery: [182, 210, 38, 38]
-            capital-l: [652, 814, 16, 16]
-            capital-m: [632, 814, 12, 12]
-            capital-s: [612, 814, 10, 10]
-            capital-xl: [676, 814, 20, 20]
-            capital-xs: [598, 814, 8, 8]
-            car-dealership: [964, 126, 38, 38]
-            car: [964, 126, 38, 38]
-            caravan-site: [462, 710, 38, 38]
-            caravan_site: [462, 710, 38, 38]
-            castle: [506, 42, 38, 38]
-            fort: [506, 42, 38, 38]
-            cemetery: [920, 84, 38, 38]
-            grave_yard: [920, 84, 38, 38]
-            church: [414, 126, 38, 38]
-            clothing-store: [0, 210, 38, 38]
-            clothes: [0, 210, 38, 38]
-            chothing-store: [0, 210, 38, 38]
-            "clothesstore": [0, 210, 38, 38]
-            fashion: [0, 210, 38, 38]
-            coffee-shop: [686, 168, 38, 38]
-            cafe: [686, 168, 38, 38]
-            college-university: [46, 210, 38, 38]
-            university: [46, 210, 38, 38]
-            college: [46, 210, 38, 38]
-            convenience-store: [184, 84, 38, 38]
-            convenience: [184, 84, 38, 38]
-            convenience_store: [184, 84, 38, 38]
-            beverages: [184, 84, 38, 38]
-            county_shield_1char: [848, 418, 72, 72]
-            county_shield_2char: [672, 314, 88, 72]
-            county_shield_3char: [560, 314, 104, 72]
-            county_shield_4char: [416, 314, 136, 72]
-            county_shield_5char: [248, 314, 160, 72]
+            bus_stop: [860, 0, 38, 38]
+            butcher: [0, 84, 38, 38]
+            cafe: [594, 168, 38, 38]
+            camp_site: [874, 84, 38, 38]
+            capital-l: [268, 294, 32, 32]
+            capital-m: [236, 294, 24, 24]
+            capital-s: [206, 294, 20, 20]
+            capital-xl: [356, 294, 40, 40]
+            capital-xs: [184, 294, 16, 16]
+            car: [872, 126, 38, 38]
+            category-namespace-mobility: [872, 126, 38, 38]
+            category-predicate-mobility: [872, 126, 38, 38]
+            car_repair: [92, 168, 38, 38]
+            car_sharing: [676, 0, 38, 38]
+            caravan_site: [870, 210, 38, 38]
+            castle: [460, 42, 38, 38]
+            fort: [460, 42, 38, 38]
+            cemetery: [782, 84, 38, 38]
+            grave_yard: [782, 84, 38, 38]
+            christian: [276, 126, 38, 38]
+            cinema: [870, 168, 38, 38]
+            clothes: [916, 168, 38, 38]
+            fashion: [916, 168, 38, 38]
+            college: [962, 168, 38, 38]
+            university: [962, 168, 38, 38]
+            confectionery: [90, 210, 38, 38]
+            convenience: [138, 84, 38, 38]
+            county_shield-1char: [736, 606, 72, 72]
+            county_shield-2char: [532, 502, 88, 72]
+            county_shield-3char: [420, 502, 104, 72]
+            county_shield-4char: [276, 502, 136, 72]
+            county_shield-5char: [108, 502, 160, 72]
             courthouse: [446, 0, 38, 38]
+            dam: [966, 252, 38, 38]
             dentist: [266, 0, 38, 38]
-            department-store: [918, 126, 38, 38]
-            department_store: [918, 126, 38, 38]
+            department_store: [826, 126, 38, 38]
             doctors: [224, 0, 38, 38]
             clinic: [224, 0, 38, 38]
-            dog-park: [646, 710, 38, 38]
-            dog_park: [646, 710, 38, 38]
-            dog_run: [646, 710, 38, 38]
-            dog-run: [646, 710, 38, 38]
-            dot-black: [506, 814, 38, 38]
-            dot-white: [460, 814, 38, 38]
-            drinking-water: [412, 210, 38, 38]
-            dry-cleaning: [138, 84, 38, 38]
-            dry_cleaning: [138, 84, 38, 38]
-            electronics-store: [782, 126, 38, 38]
-            electronics: [782, 126, 38, 38]
-            computer: [782, 126, 38, 38]
-            factory: [552, 168, 38, 38]
-            industrial: [552, 168, 38, 38]
-            chimney: [552, 168, 38, 38]
-            sub_station: [552, 168, 38, 38]
-            substation: [552, 168, 38, 38]
-            wastewater_plant: [552, 168, 38, 38]
-            works: [552, 168, 38, 38]
-            water_works: [552, 168, 38, 38]
-            plant: [552, 168, 38, 38]
-            generator: [552, 168, 38, 38]
-            fire-station: [400, 0, 38, 38]
+            dog_park: [46, 252, 38, 38]
+            dot-black: [92, 294, 38, 38]
+            dot-white: [920, 252, 38, 38]
+            drinking_water: [320, 210, 38, 38]
+            dry_cleaning: [92, 84, 38, 38]
+            electronics: [690, 126, 38, 38]
+            computer: [690, 126, 38, 38]
+            enclosure: [0, 294, 38, 38]
+            estate_agent: [184, 42, 38, 38]
+            factory: [460, 168, 38, 38]
+            industrial: [460, 168, 38, 38]
+            chimney: [460, 168, 38, 38]
+            substation: [460, 168, 38, 38]
+            wastewater_plant: [460, 168, 38, 38]
+            works: [460, 168, 38, 38]
+            water_works: [460, 168, 38, 38]
+            plant: [460, 168, 38, 38]
+            generator: [460, 168, 38, 38]
+            category-predicate-industry: [460, 168, 38, 38]
+            fast_food: [228, 210, 38, 38]
+            ferry: [906, 0, 38, 38]
+            ferry_terminal: [906, 0, 38, 38]
             fire_station: [400, 0, 38, 38]
-            firepit: [600, 710, 38, 38]
-            fishing-area: [508, 710, 38, 38]
-            fishing_area: [508, 710, 38, 38]
-            fitness: [0, 84, 38, 38]
-            gym: [0, 84, 38, 38]
-            fitness_center: [0, 84, 38, 38]
-            flower-shop: [368, 126, 38, 38]
-            florist: [368, 126, 38, 38]
-            forest: [228, 210, 38, 38]
-            conservation: [228, 210, 38, 38]
-            nature_reserve: [228, 210, 38, 38]
-            fountain: [506, 126, 38, 38]
-            garden: [874, 84, 38, 38]
-            gas: [230, 814, 38, 38]
-            gas_canister: [230, 814, 38, 38]
-            gas-station: [136, 210, 38, 38]
-            fuel: [136, 210, 38, 38]
-            generic: [552, 814, 38, 38]
-            subway_entrance: [552, 814, 38, 38]
-            generic_shield_1char: [592, 510, 72, 72]
-            generic_shield_2char: [488, 510, 98, 72]
-            generic_shield_3char: [348, 510, 132, 72]
-            generic_shield_4char: [188, 510, 152, 72]
-            generic_shield_5char: [0, 510, 180, 72]
-            geyser: [186, 710, 38, 38]
-            gift-shop: [322, 126, 38, 38]
-            gift: [322, 126, 38, 38]
-            golf-course: [598, 84, 38, 38]
-            golf_course: [598, 84, 38, 38]
-            government-building: [322, 168, 38, 38]
-            townhall: [322, 168, 38, 38]
-            public_building: [322, 168, 38, 38]
-            embassy: [322, 168, 38, 38]
-            grocery-store: [736, 126, 38, 38]
-            supermarket: [736, 126, 38, 38]
-            health_food: [736, 126, 38, 38]
-            greengrocer: [736, 126, 38, 38]
-            harbor-marina: [276, 168, 38, 38]
-            marina: [276, 168, 38, 38]
-            harbor: [276, 168, 38, 38]
-            harbor_marina: [276, 168, 38, 38]
-            dock: [276, 168, 38, 38]
-            mooring: [276, 168, 38, 38]
-            hardware-store: [966, 42, 38, 38]
-            hardware: [966, 42, 38, 38]
-            doityourself: [966, 42, 38, 38]
-            paint: [966, 42, 38, 38]
-            historic-site: [276, 126, 38, 38]
+            firepit: [0, 252, 38, 38]
+            fishing: [916, 210, 38, 38]
+            fishing_area: [916, 210, 38, 38]
+            fitness: [966, 42, 38, 38]
+            fitness_station: [966, 42, 38, 38]
+            florist: [230, 126, 38, 38]
+            forest: [136, 210, 38, 38]
+            natural_forest: [136, 210, 38, 38]
+            nature_reserve: [136, 210, 38, 38]
+            conservation: [136, 210, 38, 38]
+            protected_area: [136, 210, 38, 38]
+            grass: [136, 210, 38, 38]
+            fountain: [368, 126, 38, 38]
+            fuel: [44, 210, 38, 38]
+            gallery: [732, 168, 38, 38]
+            garden: [736, 84, 38, 38]
+            gas_canister: [644, 252, 38, 38]
+            gate: [46, 294, 38, 38]
+            generic: [138, 294, 38, 38]
+            category-namespace-other: [138, 294, 38, 38]
+            category-predicate-addressing: [138, 294, 38, 38]
+            generic_shield-1char: [404, 698, 72, 72]
+            generic_shield-2char: [300, 698, 98, 72]
+            generic_shield-3char: [160, 698, 132, 72]
+            generic_shield-4char: [0, 698, 152, 72]
+            generic_shield-5char: [816, 606, 180, 72]
+            geyser: [594, 210, 38, 38]
+            gift: [184, 126, 38, 38]
+            golf_course: [460, 84, 38, 38]
+            government: [230, 168, 38, 38]
+            townhall: [230, 168, 38, 38]
+            public: [230, 168, 38, 38]
+            embassy: [230, 168, 38, 38]
+            category-predicate-civic: [230, 168, 38, 38]
+            hairdresser: [92, 42, 38, 38]
+            hardware: [920, 42, 38, 38]
+            doityourself: [920, 42, 38, 38]
+            painter: [920, 42, 38, 38]
+            historical: [138, 126, 38, 38]
             hospital: [182, 0, 38, 38]
-            hot-spring: [460, 84, 38, 38]
-            hot_spring: [460, 84, 38, 38]
+            category-namespace-health: [182, 0, 38, 38]
+            category-predicate-health: [182, 0, 38, 38]
+            hot_spring: [322, 84, 38, 38]
             hotel: [814, 0, 38, 38]
             motel: [814, 0, 38, 38]
             hostel: [814, 0, 38, 38]
-            hunting: [140, 710, 38, 38]
-            ice-cream-shop: [504, 210, 38, 38]
-            ice_cream: [504, 210, 38, 38]
-            information: [96, 710, 38, 38]
-            info: [96, 710, 38, 38]
-            jewelry-store: [828, 42, 38, 38]
-            jewelry: [828, 42, 38, 38]
-            jewelry_store: [828, 42, 38, 38]
+            category-predicate-sleep: [814, 0, 38, 38]
+            hunting: [548, 210, 38, 38]
+            ice_cream: [412, 210, 38, 38]
+            information: [504, 210, 38, 38]
+            jewelry: [782, 42, 38, 38]
+            jewish: [44, 0, 38, 38]
             landmark: [354, 0, 38, 38]
             memorial: [354, 0, 38, 38]
             monument: [354, 0, 38, 38]
-            wayside_shrine: [354, 0, 38, 38]
             tower: [354, 0, 38, 38]
             beacon: [354, 0, 38, 38]
-            laundry: [782, 42, 38, 38]
-            dry_cleaning: [782, 42, 38, 38]
+            laundry: [736, 42, 38, 38]
             library: [0, 0, 38, 38]
-            light-rail: [768, 0, 38, 38]
             light_rail: [768, 0, 38, 38]
             tram_stop: [768, 0, 38, 38]
-            lighthouse: [414, 84, 38, 38]
-            liquor-store: [690, 126, 38, 38]
-            alcohol: [690, 126, 38, 38]
-            liquor: [690, 126, 38, 38]
-            mall: [736, 42, 38, 38]
-            market: [690, 42, 38, 38]
-            variety_store: [690, 42, 38, 38]
-            boutique: [690, 42, 38, 38]
-            dairy: [690, 42, 38, 38]
-            retail: [690, 42, 38, 38]
-            mine: [874, 42, 38, 38]
-            mobile-phone-shop: [598, 42, 38, 38]
-            mobile_phone: [598, 42, 38, 38]
-            mosque: [90, 0, 38, 38]
-            motorcycle: [876, 710, 38, 38]
-            mountain: [368, 84, 38, 38]
-            peak: [368, 84, 38, 38]
-            movie-theatre: [962, 168, 38, 38]
-            cinema: [962, 168, 38, 38]
-            movie-theater: [962, 168, 38, 38]
-            museum: [230, 126, 38, 38]
-            observatory: [230, 126, 38, 38]
-            music-store: [460, 42, 38, 38]
-            music: [460, 42, 38, 38]
-            musical_instrument: [460, 42, 38, 38]
-            newsstand: [414, 42, 38, 38]
-            kiosk: [414, 42, 38, 38]
-            newsagent: [414, 42, 38, 38]
-            observatory: [184, 814, 38, 38]
-            office: [782, 84, 38, 38]
-            insurance: [782, 84, 38, 38]
-            company: [782, 84, 38, 38]
-            optical-shop: [368, 42, 38, 38]
-            optician: [368, 42, 38, 38]
-            optical_shop: [368, 42, 38, 38]
-            outdoor: [322, 814, 38, 38]
-            park: [460, 126, 38, 38]
-            parking: [874, 126, 38, 38]
-            performing-arts: [778, 168, 38, 38]
-            theater: [778, 168, 38, 38]
-            theatre: [778, 168, 38, 38]
-            pet-store: [322, 42, 38, 38]
-            pet: [322, 42, 38, 38]
-            pet-service: [322, 42, 38, 38]
-            pet_store: [322, 42, 38, 38]
-            pharmacy: [92, 84, 38, 38]
-            chemist: [92, 84, 38, 38]
-            photography-lab: [276, 42, 38, 38]
-            photo_studio: [276, 42, 38, 38]
-            photography_lab: [276, 42, 38, 38]
-            photographer: [276, 42, 38, 38]
-            picnic-spot: [830, 710, 38, 38]
-            picnic_site: [830, 710, 38, 38]
-            picnic_table: [830, 710, 38, 38]
+            lighthouse: [276, 84, 38, 38]
+            liquor: [598, 126, 38, 38]
+            alcohol: [598, 126, 38, 38]
+            mall: [690, 42, 38, 38]
+            marina: [184, 168, 38, 38]
+            dock: [184, 168, 38, 38]
+            mine: [828, 42, 38, 38]
+            mobile_phone: [552, 42, 38, 38]
+            motorcycle: [276, 252, 38, 38]
+            museum: [92, 126, 38, 38]
+            music: [414, 42, 38, 38]
+            muslim: [90, 0, 38, 38]
+            newspaper: [368, 42, 38, 38]
+            kiosk: [368, 42, 38, 38]
+            observatory: [598, 252, 38, 38]
+            office: [644, 84, 38, 38]
+            insurance: [644, 84, 38, 38]
+            company: [644, 84, 38, 38]
+            category-predicate-service: [644, 84, 38, 38]
+            optician: [322, 42, 38, 38]
+            outdoor: [736, 252, 38, 38]
+            park: [322, 126, 38, 38]
+            national_park: [322, 126, 38, 38]
+            battlefield: [322, 126, 38, 38]
+            protected_area: [322, 126, 38, 38]
+            category-predicate-nature: [322, 126, 38, 38]
+            parking: [782, 126, 38, 38]
+            peak: [230, 84, 38, 38]
+            pet: [276, 42, 38, 38]
+            pharmacy: [46, 84, 38, 38]
+            photographic_laboratory: [230, 42, 38, 38]
+            photographer: [230, 42, 38, 38]
+            picnic_site: [230, 252, 38, 38]
+            picnic_table: [230, 252, 38, 38]
             pier: [722, 0, 38, 38]
-            playground: [552, 42, 38, 38]
+            place_of_worship: [368, 168, 38, 38]
+            chapel: [368, 168, 38, 38]
+            wayside_shrine: [368, 168, 38, 38]
+            category-predicate-religion: [368, 168, 38, 38]
+            playground: [506, 42, 38, 38]
             police: [308, 0, 38, 38]
-            pool: [322, 84, 38, 38]
-            swimming_pool: [322, 84, 38, 38]
-            post-office: [506, 168, 38, 38]
-            post_office: [506, 168, 38, 38]
-            quarry: [920, 42, 38, 38]
-            mineshaft: [920, 42, 38, 38]
-            adit: [920, 42, 38, 38]
-            ranger-station: [784, 710, 38, 38]
-            ranger_station: [784, 710, 38, 38]
-            real-estate: [230, 42, 38, 38]
-            estate_agent: [230, 42, 38, 38]
-            real_estate: [230, 42, 38, 38]
-            recreation-track: [968, 710, 38, 38]
-            recreation_track: [968, 710, 38, 38]
-            recycling-facility: [184, 42, 38, 38]
-            recycling: [184, 42, 38, 38]
-            rental-car: [676, 0, 38, 38]
-            car_rental: [676, 0, 38, 38]
-            car_sharing: [676, 0, 38, 38]
-            restaurant: [274, 210, 38, 38]
-            deli: [274, 210, 38, 38]
+            post_office: [414, 168, 38, 38]
+            quarry: [874, 42, 38, 38]
+            mineshaft: [874, 42, 38, 38]
+            adit: [874, 42, 38, 38]
+            ranger_station: [184, 252, 38, 38]
+            recreation_track: [368, 252, 38, 38]
+            recycling: [138, 42, 38, 38]
+            restaurant: [182, 210, 38, 38]
+            category-namespace-eat_and_drink: [182, 210, 38, 38]
+            category-predicate-eat: [182, 210, 38, 38]
+            retail: [644, 42, 38, 38]
+            store: [644, 42, 38, 38]
+            category-namespace-shop_and_service: [644, 42, 38, 38]
+            category-predicate-shop: [644, 42, 38, 38]
             ruin: [584, 0, 38, 38]
             ruins: [584, 0, 38, 38]
             archaeological_site: [584, 0, 38, 38]
-            salon-barber: [138, 42, 38, 38]
-            hairdresser: [138, 42, 38, 38]
-            salon: [138, 42, 38, 38]
-            beauty_salon: [138, 42, 38, 38]
-            school: [736, 84, 38, 38]
-            kindergarten: [736, 84, 38, 38]
-            scuba-diving: [276, 814, 38, 38]
-            scuba_diving: [276, 814, 38, 38]
-            dive_centre: [276, 814, 38, 38]
-            shoe-store: [644, 42, 38, 38]
-            shoes: [644, 42, 38, 38]
-            shoe_store: [644, 42, 38, 38]
-            shower: [416, 710, 38, 38]
-            ski-area: [552, 126, 38, 38]
-            slipway: [370, 710, 38, 38]
-            soccer-field: [552, 84, 38, 38]
-            spiritual-center: [460, 168, 38, 38]
-            spiritual_center: [460, 168, 38, 38]
-            place_of_worship: [460, 168, 38, 38]
-            wayside_chapel: [460, 168, 38, 38]
-            sporting-goods-shop: [92, 42, 38, 38]
-            sporting_goods: [92, 42, 38, 38]
-            sports: [92, 42, 38, 38]
-            outdoor: [92, 42, 38, 38]
-            spring: [506, 84, 38, 38]
-            stadium: [644, 126, 38, 38]
-            subway-entrance: [538, 0, 38, 38]
-            summer-camp: [0, 814, 38, 38]
-            summer_camp: [0, 814, 38, 38]
-            swimming-area: [554, 710, 38, 38]
-            swimming_area: [554, 710, 38, 38]
-            synagogue: [44, 0, 38, 38]
-            tailor-shop: [46, 42, 38, 38]
+            school: [598, 84, 38, 38]
+            kindergarten: [598, 84, 38, 38]
+            category-namespace-education_and_religion: [598, 84, 38, 38]
+            category-predicate-education: [598, 84, 38, 38]
+            scuba_diving: [690, 252, 38, 38]
+            dive_centre: [690, 252, 38, 38]
+            sdk_shield-1char: [484, 698, 84, 84]
+            sdk_shield-2char: [576, 698, 112, 84]
+            sdk_shield-3char: [696, 698, 144, 84]
+            sdk_shield-4char: [848, 698, 168, 84]
+            sdk_shield-5char: [0, 786, 192, 84]
+            shoemaker: [598, 42, 38, 38]
+            shower: [824, 210, 38, 38]
+            ski: [414, 126, 38, 38]
+            winter_sports: [414, 126, 38, 38]
+            ski_rental: [414, 126, 38, 38]
+            ski_school: [414, 126, 38, 38]
+            ski_jumping: [414, 126, 38, 38]
+            skiing: [414, 126, 38, 38]
+            slipway: [778, 210, 38, 38]
+            soccer: [414, 84, 38, 38]
+            sports: [276, 168, 38, 38]
+            pitch: [276, 168, 38, 38]
+            sports_centre: [276, 168, 38, 38]
+            recreation_ground: [276, 168, 38, 38]
+            spring: [368, 84, 38, 38]
+            stadium: [506, 126, 38, 38]
+            subway_entrance: [538, 0, 38, 38]
+            summer_camp: [414, 252, 38, 38]
+            supermarket: [644, 126, 38, 38]
+            greengrocer: [644, 126, 38, 38]
+            swimming_area: [962, 210, 38, 38]
+            swimming_pool: [552, 126, 38, 38]
             tailor: [46, 42, 38, 38]
-            telescope: [138, 814, 38, 38]
-            tennis: [598, 126, 38, 38]
-            theme-park: [184, 126, 38, 38]
-            theme_park: [184, 126, 38, 38]
-            miniature_golf: [184, 126, 38, 38]
-            toilets: [46, 126, 38, 38]
-            townspot-l: [862, 814, 16, 16]
-            townspot-l-rev: [756, 814, 16, 16]
-            townspot-m: [842, 814, 12, 12]
-            townspot-m-rev: [736, 814, 12, 12]
-            townspot-s: [824, 814, 10, 10]
-            townspot-s-rev: [718, 814, 10, 10]
-            townspot-xl: [886, 814, 20, 20]
-            townspot-xl-rev: [780, 814, 20, 20]
-            townspot-xs: [808, 814, 8, 8]
-            townspot-xs-rev: [704, 814, 6, 6]
-            toy-game-store: [0, 42, 38, 38]
+            telescope: [552, 252, 38, 38]
+            tennis: [460, 126, 38, 38]
+            theatre: [686, 168, 38, 38]
+            category-predicate-fun: [686, 168, 38, 38]
+            theme_park: [46, 126, 38, 38]
+            amusement_ride: [46, 126, 38, 38]
+            toilets: [920, 84, 38, 38]
+            townspot-l: [656, 294, 32, 32]
+            townspot-l-rev: [484, 294, 32, 32]
+            townspot-m: [624, 294, 24, 24]
+            townspot-m-rev: [452, 294, 24, 24]
+            townspot-s: [596, 294, 20, 20]
+            townspot-s-rev: [424, 294, 20, 20]
+            townspot-xl: [696, 294, 40, 40]
+            townspot-xl-rev: [524, 294, 38, 38]
+            townspot-xs: [572, 294, 16, 16]
+            townspot-xs-rev: [404, 294, 12, 12]
             toys: [0, 42, 38, 38]
-            baby_goods: [0, 42, 38, 38]
-            traffic-signal: [92, 210, 38, 38]
-            traffic_signals: [92, 210, 38, 38]
-            trailhead: [368, 814, 38, 38]
-            train-station: [492, 0, 38, 38]
+            traffic_signals: [0, 210, 38, 38]
+            trailhead: [782, 252, 38, 38]
+            train_station: [492, 0, 38, 38]
             station: [492, 0, 38, 38]
-            train-staion: [492, 0, 38, 38]
-            tree: [414, 814, 38, 38]
-            veterinarian: [136, 0, 38, 38]
-            pet_care: [136, 0, 38, 38]
+            category-predicate-transport: [492, 0, 38, 38]
+            tree: [828, 252, 38, 38]
+            tree-s: [874, 252, 38, 38]
+            ux-current-location: [294, 370, 88, 88]
+            ux-locate-off: [824, 294, 72, 72]
+            ux-locate-on: [744, 294, 72, 72]
+            ux-route-arrow: [0, 370, 128, 128]
+            ux-route-start: [214, 370, 72, 92]
+            ux-route-stop: [136, 370, 72, 92]
+            ux-search-active: [388, 370, 72, 108]
+            ux-search-inactive: [468, 370, 72, 108]
+            ux-transit-stop: [308, 296, 42, 36]
             veterinary: [136, 0, 38, 38]
-            view-point: [870, 168, 38, 38]
-            viewpoint: [870, 168, 38, 38]
-            view_point: [870, 168, 38, 38]
-            vista: [870, 168, 38, 38]
-            vineyard: [230, 168, 38, 38]
-            volcano: [230, 84, 38, 38]
-            water-tower: [922, 710, 38, 38]
-            water_tower: [922, 710, 38, 38]
-            waterfall: [692, 710, 38, 38]
-            waterpark: [278, 710, 38, 38]
-            water_park: [278, 710, 38, 38]
-            wine-bar: [366, 210, 38, 38]
-            winery: [640, 168, 38, 38]
-            wine: [640, 168, 38, 38]
-            zoo: [138, 126, 38, 38]
-            #
-            ux-current-location: [294, 856, 88, 88]
-            ux-locate-off: [628, 856, 72, 72]
-            ux-locate-on: [548, 856, 72, 72]
-            ux-route-arrow: [0, 856, 128, 128]
-            ux-route-start: [214, 856, 72, 92]
-            ux-route-stop: [136, 856, 72, 92]
-            ux-search-active: [388, 856, 72, 108]
-            ux-search-inactive: [468, 856, 72, 108]
-            #
-            # HACK: not currently in source sprite sheet (capital-xl)
-            ux-transit-stop: [676, 814, 20, 20]
+            viewpoint: [778, 168, 38, 38]
+            category-namespace-do_and_see: [778, 168, 38, 38]
+            category-predicate-attraction: [778, 168, 38, 38]
+            vineyard: [138, 168, 38, 38]
+            volcano: [184, 84, 38, 38]
+            water_park: [686, 210, 38, 38]
+            water_slide: [686, 210, 38, 38]
+            water_tower: [322, 252, 38, 38]
+            waterfall: [92, 252, 38, 38]
+            wine: [274, 210, 38, 38]
+            winery: [548, 168, 38, 38]
+            zoo: [0, 126, 38, 38]
 
     building-grid:
         url: images/building-grid.gif
@@ -770,6 +834,10 @@ sources:
 #    mz_default_point:
 #        type: GeoJSON
 #        url: https://gist.githubusercontent.com/anonymous/16324c771edfce45be0721390389b878/raw/7dbaebf17da7da8562e6c6f8768bc8cff83efa88/map.geojson
+#    # Default shield styling (SDK)
+#    mz_default_shield:
+#        type: GeoJSON
+#        url: https://gist.githubusercontent.com/nvkelso/3c08dba1eced4d01df98c1a9a7801162/raw/d83a5a396fc7b22309b8ca89336ad2dcfff6c452/map.geojson
 #    # Default line styling (SDK)
 #    mz_default_line:
 #        type: GeoJSON
@@ -799,6 +867,10 @@ styles:
         base: lines
         dash: [1.25, 1.25]
         dash_background_color: [0.808,0.860,0.851]
+    dashed_big:
+        base: lines
+        dash: [2.0, 1.0]
+        dash_background_color: [0.808,0.860,0.851]
     dashedTunnel:
         base: lines
         dash: [5, 3]
@@ -1178,19 +1250,25 @@ styles:
     ux-location-gem-overlay:
         base: points
         texture: pois
-        interactive: true
+        interactive: global.interactive
         blend: overlay
         blend_order: 2
     ux-icons-overlay:
         base: points
         texture: pois
-        interactive: true
+        interactive: global.interactive
         blend: overlay
         blend_order: 3
     sdk-point-overlay:
         base: points
         texture: pois
-        interactive: true
+        interactive: global.interactive
+        blend: overlay
+        blend_order: 3
+    sdk-shield-overlay:
+        base: points
+        texture: pois
+        interactive: global.interactive
         blend: overlay
         blend_order: 3
     sdk-line-overlay:
@@ -1234,7 +1312,6 @@ layers:
         data: { source: mz_current_location }
         draw:
             ux-location-gem-overlay:
-                interactive: true
                 sprite: ux-current-location
                 size: 36px
                 collide: false
@@ -1245,7 +1322,6 @@ layers:
         data: { source: mz_route_location }
         draw:
             ux-location-gem-overlay:
-                interactive: true
                 sprite: ux-route-arrow
                 size: [60px,60px]
                 collide: false
@@ -1256,7 +1332,7 @@ layers:
         data: { source: mz_route_start }
         draw:
             ux-icons-overlay:
-                interactive: true
+                interactive: global.interactive
                 priority: 1
                 sprite: ux-route-start
                 size: [36px,46px]
@@ -1269,7 +1345,7 @@ layers:
         data: { source: mz_route_destination }
         draw:
             ux-icons-overlay:
-                interactive: true
+                interactive: global.interactive
                 priority: 1
                 sprite: ux-route-stop
                 size: [36px,46px]
@@ -1282,7 +1358,7 @@ layers:
         data: { source: mz_route_transit_stop }
         draw:
             ux-icons-overlay:
-                interactive: true
+                interactive: global.interactive
                 sprite: ux-transit-stop
                 size: [15px,15px]
                 collide: false
@@ -1293,7 +1369,7 @@ layers:
         data: { source: mz_search_result }
         draw:
             ux-icons-overlay:
-                interactive: true
+                interactive: global.interactive
                 sprite: ux-search-active
                 size: [36px,54px]
                 collide: false
@@ -1310,7 +1386,7 @@ layers:
         data: { source: mz_dropped_pin }
         draw:
             ux-icons-overlay:
-                interactive: true
+                interactive: global.interactive
                 sprite: ux-search-active
                 size: [36px,54px]
                 collide: false
@@ -1324,7 +1400,7 @@ layers:
         data: { source: mz_default_point }
         draw:
             sdk-point-overlay:
-                interactive: true
+                interactive: global.interactive
                 sprite: ux-search-active
                 size: [36px,54px]
                 collide: false
@@ -1332,6 +1408,115 @@ layers:
                 transition:
                     [show, hide]:
                         time: 0s
+    mz_default_shield:
+        data: { source: mz_default_shield }
+        draw:
+            sdk-shield-overlay:
+                interactive: global.interactive
+                sprite: |
+                    function() {
+                        if( feature.shield_text ) {
+                            return ('sdk_shield-' + feature.shield_text.length + 'char');
+                        } else {
+                            return ('sdk_shield-' + feature.name.length + 'char');
+                        }
+                    }
+                sprite_default: sdk_shield-1char
+                color: global.sdk_shield_color
+                collide: false
+                transition:
+                    [show, hide]:
+                        time: 0s
+                text:
+                    # offset: [0px, -1px]
+                    text_source: |
+                        function() {
+                            if( feature.shield_text ) {
+                                return feature.shield_text;
+                            } else {
+                                return feature.name;
+                            }
+                        }
+                    anchor: center
+                    font:
+                        family: Montserrat
+                        fill: global.sdk_shield_text_color
+                        style: bold
+                        size: [[7,7px],[12,8px],[16,11px]]
+
+        width_1char:
+            filter: |
+                function() {
+                    if( feature.shield_text ) {
+                        return (feature.shield_text.length === 1);
+                    } else {
+                        return (feature.name.length === 1);
+                    }
+                }
+            draw:
+                sdk-shield-overlay:
+                    size: [[6,[16px,16px]],[13,[18px,18px]],[16,[21px,21px]]]
+        width_2char:
+            filter: |
+                function() {
+                    if( feature.shield_text ) {
+                        return (feature.shield_text.length === 2);
+                    } else {
+                        return (feature.name.length === 2);
+                    }
+                }
+            draw:
+                sdk-shield-overlay:
+                    size: [[6,[21px,16px]],[13,[24px,18px]],[16,[28px,21px]]]
+        width_3char:
+            filter: |
+                function() {
+                    if( feature.shield_text ) {
+                        return (feature.shield_text.length === 3);
+                    } else {
+                        return (feature.name.length === 3);
+                    }
+                }
+            draw:
+                sdk-shield-overlay:
+                    size: [[6,[27px,16px]],[13,[31px,18px]],[16,[36px,21px]]]
+        width_4char:
+            filter: |
+                function() {
+                    if( feature.shield_text ) {
+                        return (feature.shield_text.length === 4);
+                    } else {
+                        return (feature.name.length === 4);
+                    }
+                }
+            draw:
+                sdk-shield-overlay:
+                    size: [[6,[32px,16px]],[13,[36px,18px]],[16,[41px,21px]]]
+        width_5char:
+            filter: |
+                function() {
+                    if( feature.shield_text ) {
+                        return (feature.shield_text.length === 5);
+                    } else {
+                        return (feature.name.length === 5);
+                    }
+                }
+            draw:
+                sdk-shield-overlay:
+                    size: [[6,[37px,16px]],[13,[41px,18px]],[16,[48px,21px]]]
+        # this is kinda a hack
+        width_longggggg:
+            filter: |
+                function() {
+                    if( feature.shield_text ) {
+                        return (feature.shield_text.length > 5);
+                    } else {
+                        return (feature.name.length > 5);
+                    }
+                }
+            draw:
+                sdk-shield-overlay:
+                    visible: false
     mz_default_line:
         data: { source: mz_default_line }
         draw:
@@ -1362,7 +1547,6 @@ layers:
         data: { source: mapzen, layer: water }
         draw:
             polygons:
-                #interactive: true
                 order: function() { return feature.sort_rank; }
                 #color: [0.608,0.925,0.965]
         later:
@@ -1491,7 +1675,6 @@ layers:
             draw:
                 lines:
                     order: function() { return feature.sort_rank; }
-                    interactive: true
                     color: [[10,[0.472,0.834,0.890]],[14,[0.511,0.877,0.930]]]
                     # color: [0.592,0.929,0.961]
                     #color: [[11,[0.753,0.820,0.835]],[12,[0.710,0.800,0.824]],[13,[0.886,0.937,0.988]]]
@@ -1515,13 +1698,12 @@ layers:
                     lines:
                         visible: false
                     dots-lines:
-                        interactive: true
                         order: function() { return feature.sort_rank; }
                         color: [[10,[0.472,0.834,0.890]],[14,[0.511,0.877,0.930]]]
                         width: [[10,0px],[11,0.5px],[12,1px],[13,2px],[14,3px],[15,4px],[16,5px]]
 
     water-line-labels:
-        data: { source: mapzen, layer: [water] }
+        data: { source: mapzen, layer: water }
         visible: *text_visible_water_labels
         filter:
             all:
@@ -1531,16 +1713,13 @@ layers:
                 - $zoom: { min: 11 }
         draw:
             text-blend-order:
+                text_source: global.ux_language_text_source
                 font:
                     fill: *text_fill_water
                     family: *text_font_family
                     style: italic
-                    weight: 400
-                    size: [[12,11px],[13,12px]]
-        water-line-labels-z17:
-            filter: { $zoom: [17] }
-            draw:
-                text-blend-order: { font: { size: 14px } }
+                    weight: normal
+                    size: [[12,10px],[17,14px]]
         not-river-not-stream:
             filter: { kind: [canal,dam,ditch,drain], $zoom: { max: 14 } }
             draw:
@@ -1557,7 +1736,6 @@ layers:
         filter: { not: { kind: [platform] }, $zoom: { min: 14 } }
         draw:
             lines:
-                interactive: true
                 order: function() { return feature.sort_rank || 275; }
         railway:
             filter: { kind: [railway,train] }
@@ -1584,7 +1762,6 @@ layers:
         filter: { kind: rail, not: { railway: [subway,light_rail,tram] } }
         draw:
             lines:
-                interactive: true
                 order: function() { return feature.sort_rank; }
                 color: [0.588,0.671,0.698]
                 width: [[12,0px],[13,0.25px],[14,0.4px],[15,0.75px],[16,0.75px],[18,1m]]
@@ -1617,7 +1794,6 @@ layers:
         filter: { not: { kind: rail } }
         draw:
             lines:
-                interactive: true
                 #color: black
                 width: 1px
                 order: function() { return feature.sort_rank; }
@@ -1626,6 +1802,7 @@ layers:
                     order: 352
             text-blend-order:
                 visible: false    # labels are enabled by each layer below
+                text_source: global.ux_language_text_source
                 font:
                     family: *text_font_family
                     weight: 500
@@ -1655,7 +1832,7 @@ layers:
                         width: function () { return 3/16 * Math.log($zoom); }
 
         natural_earth_highways:
-            filter: { source: 'naturalearthdata.com' }
+            filter: { source: 'naturalearthdata.com', $zoom: { max: 8 } }
             draw:
                 lines:
                     color: [[5, [0.5,0.5,0.5]],[6, [0.350,0.350,0.350]]]
@@ -1664,7 +1841,7 @@ layers:
                         color: *highway_casing1
                         width: [[9, 0px], [10, 0px], [12, 1px], [16, 2px]]
             major_road:
-                filter: { type: ['Secondary Highway','Road'] }
+                filter: { kind: major_road }
                 draw:
                     lines:
                         color: [[5, [0.75,0.75,0.75]], [8, [0.4,0.4,0.4]], [13, [0.4,0.4,0.4]], [17, *major_road1]]
@@ -1673,7 +1850,7 @@ layers:
                         outline:
                             width: [[8, 0.0px], [9, 0.0px], [11, .5px], [16, .75px]]
             minor_road:
-                filter: { type: 'Unknown' }
+                filter: { kind: minor_road }
                 draw:
                     lines:
                         color: [[12, *minor_road1], [17, *minor_road2]]
@@ -1681,7 +1858,7 @@ layers:
                         # outline:
                         #     width: [[12, 0px], [14, .5px], [17, 1px]]
             ferry:
-                filter: { kind: Ferry }
+                filter: { kind: ferry }
                 draw:
                     lines:
                         color: *ferry1
@@ -1689,7 +1866,7 @@ layers:
                         outline:
                             width: 0px
         highway:
-            filter: { kind: highway }
+            filter: { kind: highway, $zoom: { min: 8 } }
             draw:
                 lines:
                     color: [[8, [0.408,0.430,0.461]], [14, [0.408,0.430,0.461]], [15, [1.0,1.0,1.0]], [16, [1.0,1.0,1.0]]]
@@ -1739,54 +1916,6 @@ layers:
                         cap: round
                         outline:
                             cap: butt
-            # labels-highway-early:
-            #     filter: { $zoom: [7,8,9] }
-            #     draw:
-            #         text-blend-order:
-            #             priority: 50
-            #             visible: *text_visible_shields
-            #             text_source: ref
-            #             font:
-            #                 fill: [0.408,0.427,0.459]
-            #                 weight: 400
-            #                 size: 9px
-            #                 stroke: { color: [0.898,0.906,0.910], width: 4 }
-            # labels-highway-z10:
-            #     filter:
-            #         $zoom: 10
-            #     draw:
-            #         text-blend-order:
-            #             visible: *text_visible_shields
-            #             text_source: ref
-            #             font:
-            #                 fill: [0.408,0.427,0.459]
-            #                 weight: 400
-            #                 size: 9px
-            #                 stroke: { color: [0.898,0.906,0.910], width: 4 }
-            # labels-highway-z11:
-            #     filter:
-            #         $zoom: 11
-            #     draw:
-            #         text-blend-order:
-            #             visible: *text_visible_shields
-            #             text_source: ref
-            #             font:
-            #                 fill: [0.408,0.427,0.459]
-            #                 weight: 600
-            #                 size: 10px
-            #                 stroke: { color: [0.898,0.906,0.910], width: 4 }
-            # labels-highway-z12:
-            #     filter:
-            #         $zoom: 12
-            #     draw:
-            #         text-blend-order:
-            #             visible: *text_visible_shields
-            #             text_source: ref
-            #             font:
-            #                 fill: [0.408,0.427,0.459]
-            #                 weight: 600
-            #                 size: 10px
-            #                 stroke: { color: [0.898,0.906,0.910], width: 4 }
             labels-highway-z13:
                 filter:
                     $zoom: 13
@@ -1794,8 +1923,6 @@ layers:
                     text-blend-order:
                         priority: 50
                         visible: *text_visible_highway
-                        #text_source: ref
-                        #text_source: function() { if( feature.ref && feature.name ) { return feature.ref + " " + feature.name; } else { return feature.name; } }
                         font:
                             fill: [0.408,0.427,0.459]
                             weight: 600
@@ -1808,8 +1935,6 @@ layers:
                     text-blend-order:
                         priority: 50
                         visible: *text_visible_highway
-                        #text_source: ref
-                        #text_source: function() { if( feature.ref && feature.name ) { return feature.ref + " " + feature.name; } else { return feature.name; } }
                         font:
                             fill: [0.408,0.427,0.459]
                             weight: 600
@@ -1958,7 +2083,6 @@ layers:
                             text-blend-order:
                                 priority: 51
                                 visible: *text_visible_trunk_primary_e2
-                                #text_source: function() { if( feature.ref && feature.name ) { return feature.ref + " " + feature.name; } else { return feature.name; } }
                                 font:
                                     fill: [0.495,0.511,0.532]
                                     size: 11px
@@ -1969,7 +2093,6 @@ layers:
                             text-blend-order:
                                 priority: 51
                                 visible: *text_visible_trunk_primary
-                                #text_source: function() { if( feature.ref && feature.name ) { return feature.ref + " " + feature.name; } else { return feature.name; } }
                                 font:
                                     fill: [0.495,0.511,0.532]
                                     weight: 600
@@ -1981,7 +2104,6 @@ layers:
                             text-blend-order:
                                 priority: 51
                                 visible: *text_visible_trunk_primary
-                                #text_source: function() { if( feature.ref && feature.name ) { return feature.ref + " " + feature.name; } else { return feature.name; } }
                                 font:
                                     fill: [0.495,0.511,0.532]
                                     weight: 600
@@ -1993,7 +2115,6 @@ layers:
                             text-blend-order:
                                 priority: 51
                                 visible: *text_visible_trunk_primary
-                                #text_source: function() { if( feature.ref && feature.name ) { return feature.ref + " " + feature.name; } else { return feature.name; } }
                                 font:
                                     fill: [0.495,0.511,0.532]
                                     weight: 600
@@ -2005,7 +2126,6 @@ layers:
                             text-blend-order:
                                 priority: 51
                                 visible: *text_visible_trunk_primary
-                                #text_source: function() { if( feature.ref && feature.name ) { return feature.ref + " " + feature.name; } else { return feature.name; } }
                                 font:
                                     fill: [0.495,0.511,0.532]
                                     weight: 600
@@ -2047,7 +2167,6 @@ layers:
                         text-blend-order:
                             priority: 51
                             visible: *text_visible_trunk_primary_e
-                            #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                             font:
                                 fill: [0.495,0.511,0.532]
                                 size: 9px
@@ -2059,7 +2178,6 @@ layers:
                         text-blend-order:
                             priority: 51
                             visible: *text_visible_trunk_primary_e
-                            #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                             font:
                                 fill: [0.495,0.511,0.532]
                                 size: 10px
@@ -2071,7 +2189,6 @@ layers:
                         text-blend-order:
                             priority: 51
                             visible: *text_visible_trunk_primary
-                            #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                             font:
                                 fill: [0.495,0.511,0.532]
                                 size: 11px
@@ -2083,7 +2200,6 @@ layers:
                         text-blend-order:
                             priority: 51
                             visible: *text_visible_trunk_primary
-                            #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                             font:
                                 fill: [0.495,0.511,0.532]
                                 size: 11px
@@ -2094,7 +2210,6 @@ layers:
                         text-blend-order:
                             priority: 51
                             visible: *text_visible_trunk_primary
-                            #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                             font:
                                 fill: [0.495,0.511,0.532]
                                 size: 12px
@@ -2105,7 +2220,6 @@ layers:
                         text-blend-order:
                             priority: 51
                             visible: *text_visible_trunk_primary
-                            #text_source: function() { if( feature.ref && feature.name ) { return feature.ref + " " + feature.name; } else { return feature.name; } }
                             font:
                                 fill: [0.495,0.511,0.532]
                                 weight: 600
@@ -2117,7 +2231,6 @@ layers:
                         text-blend-order:
                             priority: 51
                             visible: *text_visible_trunk_primary
-                            #text_source: function() { if( feature.ref && feature.name ) { return feature.ref + " " + feature.name; } else { return feature.name; } }
                             font:
                                 fill: [0.495,0.511,0.532]
                                 weight: 600
@@ -2129,7 +2242,6 @@ layers:
                         text-blend-order:
                             priority: 51
                             visible: *text_visible_trunk_primary
-                            #text_source: function() { if( feature.ref && feature.name ) { return feature.ref + " " + feature.name; } else { return feature.name; } }
                             font:
                                 fill: [0.495,0.511,0.532]
                                 weight: 600
@@ -2206,7 +2318,6 @@ layers:
                             text-blend-order:
                                 priority: 56
                                 visible: *text_visible_secondary_e
-                                #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                                 font:
                                     fill: [0.536,0.556,0.581]
                                     size: 11px
@@ -2217,7 +2328,6 @@ layers:
                             text-blend-order:
                                 priority: 56
                                 visible: *text_visible_secondary_e
-                                #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                                 font:
                                     fill: [0.536,0.556,0.581]
                                     size: 11px
@@ -2228,7 +2338,6 @@ layers:
                             text-blend-order:
                                 priority: 56
                                 visible: *text_visible_secondary_e
-                                #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                                 font:
                                     fill: [0.536,0.556,0.581]
                                     weight: 600
@@ -2240,7 +2349,6 @@ layers:
                             text-blend-order:
                                 priority: 56
                                 visible: *text_visible_secondary_e
-                                #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                                 font:
                                     fill: [0.536,0.556,0.581]
                                     weight: 600
@@ -2259,7 +2367,6 @@ layers:
                             text-blend-order:
                                 priority: 56
                                 visible: *text_visible_secondary_e
-                                #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                                 font:
                                     fill: [0.536,0.556,0.581]
                                     stroke: { color: [0.843,0.961,0.914], width: 4 }
@@ -2269,7 +2376,6 @@ layers:
                             text-blend-order:
                                 priority: 56
                                 visible: *text_visible_secondary_e
-                                #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                                 font:
                                     fill: [0.536,0.556,0.581]
                                     stroke: { color: [1.00,1.00,1.00], width: 4 }
@@ -2292,7 +2398,6 @@ layers:
                         text-blend-order:
                             priority: 56
                             visible: *text_visible_secondary_e
-                            #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                             font:
                                 fill: [0.536,0.556,0.581]
                                 size: 9px
@@ -2304,7 +2409,6 @@ layers:
                         text-blend-order:
                             priority: 56
                             visible: *text_visible_secondary_e
-                            #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                             font:
                                 fill: [0.536,0.556,0.581]
                                 size: 9px
@@ -2316,7 +2420,6 @@ layers:
                         text-blend-order:
                             priority: 56
                             visible: *text_visible_secondary
-                            #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                             font:
                                 fill: [0.536,0.556,0.581]
                                 size: 10px
@@ -2327,7 +2430,6 @@ layers:
                         text-blend-order:
                             priority: 56
                             visible: *text_visible_secondary
-                            #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                             font:
                                 fill: [0.536,0.556,0.581]
                                 size: 12px
@@ -2338,8 +2440,6 @@ layers:
                         text-blend-order:
                             priority: 56
                             visible: *text_visible_secondary
-                            #text_source: ref
-                            #text_source: function() { if( feature.ref && feature.name ) { return feature.ref + " " + feature.name; } else { return feature.name; } }
                             font:
                                 fill: [0.536,0.556,0.581]
                                 size: 13px
@@ -2412,7 +2512,6 @@ layers:
                             text-blend-order:
                                 priority: 57
                                 visible: *text_visible_tertiary_e
-                                #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                                 font:
                                     fill: [0.536,0.556,0.581]
                                     stroke: { color: [0.843,0.961,0.914], width: 4 }
@@ -2422,7 +2521,6 @@ layers:
                             text-blend-order:
                                 priority: 57
                                 visible: *text_visible_tertiary_e
-                                #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                                 font:
                                     fill: [0.536,0.556,0.581]
                                     stroke: { color: [1.00,1.00,1.00], width: 4 }
@@ -2444,7 +2542,6 @@ layers:
                         text-blend-order:
                             priority: 57
                             visible: *text_visible_tertiary_e
-                            #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                             font:
                                 fill: [0.536,0.556,0.581]
                                 size: 9px
@@ -2455,7 +2552,6 @@ layers:
                         text-blend-order:
                             priority: 57
                             visible: *text_visible_tertiary_e
-                            #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                             font:
                                 fill: [0.536,0.556,0.581]
                                 size: 9px
@@ -2466,7 +2562,6 @@ layers:
                         text-blend-order:
                             priority: 57
                             visible: *text_visible_tertiary
-                            #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                             font:
                                 fill: [0.536,0.556,0.581]
                                 size: 10px
@@ -2477,7 +2572,6 @@ layers:
                         text-blend-order:
                             priority: 57
                             visible: *text_visible_tertiary
-                            #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                             font:
                                 fill: [0.536,0.556,0.581]
                                 size: 12px
@@ -2488,7 +2582,6 @@ layers:
                         text-blend-order:
                             priority: 57
                             visible: *text_visible_tertiary
-                            #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                             font:
                                 fill: [0.536,0.556,0.581]
                                 size: 13px
@@ -2499,7 +2592,6 @@ layers:
                         text-blend-order:
                             priority: 57
                             visible: *text_visible_tertiary
-                            #text_source: function() { if( feature.ref && feature.name ) { if( feature.ref.length < 6 ) { return feature.ref + " " + feature.name; } else { return feature.name; } } else { return feature.name; } }
                             font:
                                 fill: [0.536,0.556,0.581]
                                 size: 13px
@@ -2547,7 +2639,6 @@ layers:
                         text-blend-order:
                             priority: 59
                             visible: *text_visible_minor_road_e
-                            text_source: name
                             font:
                                 fill: [0.536,0.556,0.581]
                                 stroke: { color: [0.843,0.961,0.914], width: 4 }
@@ -2557,7 +2648,6 @@ layers:
                         text-blend-order:
                             priority: 59
                             visible: *text_visible_minor_road_e
-                            text_source: name
                             font:
                                 fill: [0.536,0.556,0.581]
                                 stroke: { color: [1.00,1.00,1.00], width: 4 }
@@ -2610,7 +2700,6 @@ layers:
                     text-blend-order:
                         priority: 59
                         visible: *text_visible_minor_road_e
-                        text_source: name
                         font:
                             fill: [0.536,0.556,0.581]
                             size: 9px
@@ -2621,7 +2710,6 @@ layers:
                     text-blend-order:
                         priority: 59
                         visible: *text_visible_minor_road_e
-                        text_source: name
                         font:
                             fill: [0.536,0.556,0.581]
                             size: 12px
@@ -2632,7 +2720,6 @@ layers:
                     text-blend-order:
                         priority: 59
                         visible: *text_visible_minor_road_e
-                        text_source: name
                         font:
                             fill: [0.40,0.40,0.40]
                             size: 12px
@@ -2643,7 +2730,6 @@ layers:
                     text-blend-order:
                         priority: 59
                         visible: *text_visible_minor_road
-                        text_source: name
                         font:
                             fill: [0.40,0.40,0.40]
                             size: 13px
@@ -2669,7 +2755,6 @@ layers:
                         text-blend-order:
                             priority: 60
                             visible: *text_visible_service_road
-                            text_source: name
                             font:
                                 fill: [0.536,0.556,0.581]
                                 stroke: { color: [0.843,0.961,0.914], width: 4 }
@@ -2729,7 +2814,6 @@ layers:
                     text-blend-order:
                         priority: 60
                         visible: *text_visible_service_road
-                        text_source: name
                         font:
                             # need fill color?
                             fill: [0.536,0.556,0.581]
@@ -2741,770 +2825,229 @@ layers:
                     text-blend-order:
                         priority: 60
                         visible: *text_visible_service_road
-                        text_source: name
                         font:
                             fill: [0.536,0.556,0.581]
                             size: 13px
                             stroke: { color: [0.969,0.973,0.973], width: 4 }
 
-        shields:
+        path:
             filter:
-                $zoom: { min: 6 }
-                #
-                # United State looks great with shield_text alone, but...
-                #
-                #shield_text: true    # some roads don't have shield text, deal with that later
-                #
-                # Europe doesn't have many network relations set, so we could look for either
-                # shield_text or ref (with no shield_text) but...
-                # that makes United States look a bit funky with `(xxx)` and generic shields
-                # showing up in fields of custom state shields like US:CA and US:NY
-                #
-                any:
-                    - shield_text: true    # some roads don't have shield text, deal with that later
-                    - all:
-                        - shield_text: false    # some roads don't have shield text, deal with that later
-                        - ref: true
-                        - kind_detail: [motorway, trunk, primary, secondary, tertiary]
-            # default
+                all:
+                    - kind: [path, portage_way]
+                not:
+                    - kind_detail: [footway, steps, track, cycleway]
+                    - kind_detail: [pier]
             draw:
-                icons:
-                    # you need to match any custom shield to the vector tile `network` values
-                    sprite: |
-                        function() {
-                            if( feature.shield_text ) {
-                                return ('generic_shield_' + feature.shield_text.length + 'char');
-                            } else {
-                                return ('generic_shield_' + feature.ref.length + 'char');
-                            }
-                        }
-                    sprite_default: generic_shield_5char
-                    priority: 58
-                    repeat_group: shields
-                    repeat_distance: [[8,90px],[10,40px],[13,30px]]
-                    placement: midpoint
-                    placement_min_length_ratio:
-                        - [8, 0.1]
-                        - [9, 0.25]
-                        - [10, 0.25]
-                        - [11, 0.15]
-                        - [12, 1]
-                        - [13, 1.50]
-                        - [14, 2.0]
-                    cull_from_tile: true
+                dashedline:
+                    order: function() { return feature.sort_rank; }
                     visible: false
-                    text:
-                        offset: [0px, -0.5px]
-                        repeat_distance: 200px
-                        anchor: center
-                        text_source: |
-                            function() {
-                                if( feature.shield_text ) {
-                                    return feature.shield_text;
-                                } else {
-                                    return feature.ref;
-                                }
-                            }
-                        font:
-                            family: Montserrat
-                            #fill: [0.308,0.308,0.308]
-                            fill: [0.320,0.320,0.320]
-                            size: [[7,7px],[12,8px],[16,11px]]
-
-            default_priority_highway:
+                    color: [0.350,0.350,0.350]
+                    width: [[14, 0.35px], [15, 0.5px], [16, 1px], [17, 2px], [18, 3px], [19, 4px]]
+                    # outline:
+                    #     color: [0.790,0.790,0.790]
+                    #     width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
+            early:
                 filter:
-                    all:
-                        - kind_detail: motorway
-                        - $zoom: { min: 9 }
+                    $zoom: { max: 17 }
                 draw:
-                    icons:
-                        priority: 47
-                        #color: yellow
-                        visible: *text_visible_shields
-
-            default_priority_trunk:
-                filter:
-                    all:
-                        - kind_detail: [trunk]
-                        - $zoom: { min: 10 }
+                    lines:
+                        order: 351
+                        outline:
+                            order: 350
+            portage_way:
+                filter: { kind: portage_way }
                 draw:
-                    icons:
-                        priority: 48
-                        #color: red
-                        visible: *text_visible_shields
-            default_priority_primary:
-                filter:
-                    all:
-                        - kind_detail: [primary]
-                        - $zoom: { min: 12 }
+                    lines:
+                        color: [0.350,0.350,0.350]
+            pedestrian:
+                filter: { kind_detail: pedestrian }
                 draw:
-                    icons:
-                        priority: 49
-                        #color: aqua
-                        visible: *text_visible_shields
-            default_priority_trunk_secondary:
-                filter:
-                    all:
-                        - kind_detail: [secondary]
-                        - $zoom: { min: 12 }
+                    lines:
+                        color: [[16,[0.749,0.749,0.749]]]
+                        width: [[14, 0.35px], [15, 0.35px], [16, 1px], [17, 2px], [18, 3px], [19, 4px]]
+                        # outline:
+                        #     color: [0.790,0.790,0.790]
+                        #     width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
+            bridge:
+                filter: { is_bridge: true }
                 draw:
-                    icons:
-                        priority: 53
-                        #color: blue
-                        visible: *text_visible_shields
-            default_priority_trunk_tertiary:
-                filter:
-                    all:
-                        - kind_detail: tertiary
-                        - $zoom: { min: 13 }
+                    lines:
+                        width: [[14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
+                        cap: round
+                        outline:
+                            color: [[15,*path_bridge_casing2],[16,*path_bridge_casing1]]
+                            width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
+                            cap: butt
+            in_park:
+                filter: { landuse_kind: [park,nature_reserve,conservation,golf_course,garden] }
                 draw:
-                    icons:
-                        priority: 55
-                        #color: green
-                        visible: *text_visible_shields
-            # not-special:
-            #     filter:
-            #         not: { network: ['US:I','US:US'] }
-            #         $zoom: { max: 9 }
+                    dashedline:
+                        color: [0.350,0.350,0.350]
+                        # outline:
+                        #     color: [0.790,0.790,0.790]
+                        #     width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
+            #     golf_course:
+            #         filter: { landuse_kind: golf_course }
+            #         draw:
+            #             lines:
+            #                 color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
+            #                 outline:
+            #                     color: [0.790,0.790,0.790]
+            #                     width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
+            #     nature_reserve:
+            #         filter: { landuse_kind: nature_reserve }
+            #         draw:
+            #             lines:
+            #                 color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
+            #                 outline:
+            #                     color: [0.790,0.790,0.790]
+            #                     width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
+            #     conservation:
+            #         filter: { landuse_kind: conservation }
+            #         draw:
+            #             lines:
+            #                 color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
+            #                 outline:
+            #                     color: [0.790,0.790,0.790]
+            #                     width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
+            # in_cemetery_garden:
+            #     filter: { landuse_kind: [cemetery,garden] }
             #     draw:
-            #         icons:
-            #             visible: false
-            width_1char:
-                filter: |
-                    function() {
-                        if( feature.shield_text ) {
-                            return (feature.shield_text.length === 1)
-                        } else {
-                            return (feature.ref.length === 1)
-                        }
-                    }
+            #         lines:
+            #             color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
+            #             width: [[14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
+            #             outline:
+            #                 color: [0.790,0.790,0.790]
+            #                 width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
+            # in_zoo:
+            #     filter: { landuse_kind: zoo }
+            #     draw:
+            #         lines:
+            #             color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
+            #             width: [[14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
+            #             outline:
+            #                 color: [0.790,0.790,0.790]
+            #                 width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
+            # in_university:
+            #     filter: { landuse_kind: university }
+            #     draw:
+            #         lines:
+            #             color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
+            #             width: [[14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
+            #             outline:
+            #                 color: [0.790,0.790,0.790]
+            #                 width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
+            # in_hospital:
+            #     filter: { landuse_kind: hospital }
+            #     draw:
+            #         lines:
+            #             color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
+            #             width: [[14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
+            #             outline:
+            #                 color: [0.790,0.790,0.790]
+            #                 width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
+            labels-path:
+                filter: { $zoom: { min: 17 } }
                 draw:
-                    icons:
-                        size: [[6,[14px,14px]],[13,[16px,16px]],[16,[18px,18px]]]
-            width_2char:
-                filter: |
-                    function() {
-                        if( feature.shield_text ) {
-                            return (feature.shield_text.length === 2)
-                        } else {
-                            return (feature.ref.length === 2)
-                        }
-                    }
+                    text-blend-order:
+                        priority: 61
+                        visible: *text_visible_path
+                        font:
+                            fill: [0.536,0.556,0.581]
+                            size: 12px
+                            stroke: { color: *text_stroke, width: 4 }
+        track:
+            filter: { kind: path, kind_detail: track }
+            draw:
+                lines:
+                    color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
+                    width: [[13, 0px], [14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
+                    cap: butt
+                    join: round
+                    outline:
+                        color: [0.790,0.790,0.790]
+                        width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
+            bridge:
+                filter: { is_bridge: true }
                 draw:
-                    icons:
-                        size: [[6,[18px,14px]],[13,[20px,15px]],[16,[24px,18px]]]
-            width_3char:
-                filter: |
-                    function() {
-                        if( feature.shield_text ) {
-                            return (feature.shield_text.length === 3)
-                        } else {
-                            return (feature.ref.length === 3)
-                        }
-                    }
+                    lines:
+                        cap: butt
+                        width: [[13, 0px], [14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
+                        cap: round
+                        outline:
+                            color: [1.0,1.0,1.0]
+                            width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
+                            cap: butt
+            in_park:
+                filter: { landuse_kind: [park,national_park,nature_reserve,conservation,golf_course,garden,battlefield] }
                 draw:
-                    icons:
-                        size: [[6,[25px,14px]],[13,[27px,15px]],[16,[33px,18px]]]
-            width_4char:
-                filter: |
-                    function() {
-                        if( feature.shield_text ) {
-                            return (feature.shield_text.length === 4)
-                        } else {
-                            return (feature.ref.length === 4)
-                        }
-                    }
-                draw:
-                    icons:
-                        size: [[6,[29px,14px]],[13,[31px,15px]],[16,[38px,18px]]]
-                # London sucks
-                early:
-                    filter: { $zoom: { max: 14 } }
-                    draw:
-                        icons:
-                            visible: false
-            width_5char:
-                filter: |
-                    function() {
-                        if( feature.shield_text ) {
-                            return (feature.shield_text.length === 5)
-                        } else {
-                            return (feature.ref.length === 5)
-                        }
-                    }
-                draw:
-                    icons:
-                        size: [[6,[34px,14px]],[13,[37px,15px]],[16,[45px,18px]]]
-                # London sucks
-                early:
-                    filter: { $zoom: { max: 14 } }
-                    draw:
-                        icons:
-                            visible: false
-            # this is kinda a hack
-            width_longggggg:
-                filter: |
-                    function() {
-                        if( feature.shield_text ) {
-                            return (feature.shield_text.length > 5)
-                        } else {
-                            return (feature.ref.length > 5)
-                        }
-                    }
-                draw:
-                    icons:
-                        visible: false
-            # missing-route-relations:
-            #     filter: { shield_text: false }
-            #     draw:
-            #         lines:
-            #             order: 1000
-            #             color: red
-            #             width: 2px
-            #
-            # Now for the good stuff
-            #
-            legit-shields:
-                filter: { shield_text: true }
-                # draw:
-                #     icons:
-                #         color: red
-                # US Interstate roads
-                US-I:
-                    filter:
-                        network: 'US:I'
-                    draw:
-                        icons:
-                            # you need to match any custom shield to the vector tile `network` values
-                            sprite: function() { return (feature.network + '_' + feature.shield_text.length + 'char'); }
-                            priority: 46
-                            visible: *text_visible_shields
-                            text:
-                                offset: [0px, 0.5px]
-                                font:
-                                    fill: [1.0,1.0,1.0]
-                                    size: [[7,8px],[13,9px],[15,11px]]
-                    width_1char:
-                        filter: function() { return (feature.shield_text.length === 1) }
-                        draw:
-                            icons:
-                                size: [[6,[15px,18px]],[13,[17px,20px]],[15,[22px,25px]]]
-                    width_2char:
-                        filter: function() { return (feature.shield_text.length === 2) }
-                        draw:
-                            icons:
-                                size: [[6,[18px,18px]],[13,[20px,20px]],[15,[25px,25px]]]
-                    width_3char:
-                        filter: function() { return (feature.shield_text.length === 3) }
-                        draw:
-                            icons:
-                                size: [[6,[23px,18px]],[13,[26px,20px]],[15,[33px,25px]]]
-                    width_4char:
-                        filter: function() { return (feature.shield_text.length === 4) }
-                        draw:
-                            icons:
-                                size: [[6,[25px,18px]],[13,[27px,20px]],[15,[35px,25px]]]
-                    width_5char:
-                        filter: function() { return (feature.shield_text.length === 5) }
-                        draw:
-                            icons:
-                                size: [[6,[26px,18px]],[13,[30px,20px]],[15,[38px,25px]]]
-                # US Federal Routes
-                US-US:
-                    filter:
-                        network: ['US:US','US:US:Business', 'US:US:Truck', 'US:US:Alternate']
-                        $zoom: { min: 7 }
-                    draw:
-                        icons:
-                            # you need to match any custom shield to the vector tile `network` values
-                            sprite: |
-                                function() { return ('US:US_' + feature.shield_text.length + 'char'); }
-                            priority: 47
-                            cull_from_tile: true
-                            visible: *text_visible_shields
-                            text:
-                                offset: [0px, -0.7px]
-                                font:
-                                    fill: [0.0,0.0,0.0]
-                                    size: [[7,8px],[13,9px],[15,11px]]
-                    # early:
-                    #     filter: { $zoom: [7] }
-                    #     icons:
-                    #         visible: false
-                    width_1char:
-                        filter: function() { return (feature.shield_text.length === 1) }
-                        draw:
-                            icons:
-                                size: [[6,[15px,17px]],[13,[17px,19px]],[15,[22px,24px]]]
-                    width_2char:
-                        filter: function() { return (feature.shield_text.length === 2) }
-                        draw:
-                            icons:
-                                size: [[6,[18px,17px]],[13,[20px,19px]],[15,[26px,24px]]]
-                    width_3char:
-                        filter: function() { return (feature.shield_text.length === 3) }
-                        draw:
-                            icons:
-                                size: [[6,[22px,17px]],[13,[25px,19px]],[15,[34px,25px]]]
-                    width_4char:
-                        filter: function() { return (feature.shield_text.length === 4) }
-                        draw:
-                            icons:
-                                size: [[6,[25px,17px]],[13,[29px,19px]],[15,[39px,25px]]]
-                    width_5char:
-                        filter: function() { return (feature.shield_text.length === 5) }
-                        draw:
-                            icons:
-                                size: [[6,[27px,17px]],[13,[30px,19px]],[15,[41px,25px]]]
-                # US State Routes
-                # US-states:
-                #     # Match state highways: `US:??`
-                #     filter: |
-                #         function() {
-                #             return feature.shield_text &&
-                #                 /^US:(?!US)\w\w$/.test(feature.network)
-                #         }
-                #     draw:
-                #         icons:
-                #             # you need to match any custom shield to the vector tile `network` values
-                #             priority: 18
-                #     early:
-                #         filter: { $zoom: [7,8,9] }
-                #         icons:
-                #             visible: false
-                US-CA:
-                    # Match California state highways: `US:CA`
-                    filter: |
-                        function() {
-                            return feature.shield_text &&
-                                /^US:CA$/.test(feature.network)
-                        }
-                    draw:
-                        icons:
-                            sprite: function() { return (feature.network + '_' + feature.shield_text.length + 'char'); }
-                            text:
-                                offset: [0px, 1px]
-                                font:
-                                    fill: [1.0,1.0,1.0]
-                                    size: [[7,7px],[13,9px],[15,10px]]
-                    motorway:
-                        filter: { kind_detail: [motorway], $zoom: [7,8] }
-                        draw:
-                            icons:
-                                visible: *text_visible_shields
-                    trunk:
-                        filter: { kind_detail: [trunk], $zoom: [8,9] }
-                        draw:
-                            icons:
-                                visible: *text_visible_shields
-                    primary:
-                        filter: { kind_detail: primary, $zoom: [10,11] }
-                        draw:
-                            icons:
-                                visible: *text_visible_shields
-                    width_1char:
-                        filter: function() { return (feature.shield_text.length === 1) }
-                        draw:
-                            icons:
-                                size: [[6,[14px,16px]],[13,[15px,18px]],[15,[18px,21px]]]
-                    width_2char:
-                        filter: function() { return (feature.shield_text.length === 2) }
-                        draw:
-                            icons:
-                                size: [[6,[18px,18px]],[13,[20px,20px]],[15,[23px,23px]]]
-                    width_3char:
-                        filter: function() { return (feature.shield_text.length === 3) }
-                        draw:
-                            icons:
-                                size: [[6,[21px,18px]],[13,[24px,20px]],[15,[28px,23px]]]
-                    width_4char:
-                        filter: function() { return (feature.shield_text.length === 4) }
-                        draw:
-                            icons:
-                                size: [[6,[24px,18px]],[13,[26px,20px]],[15,[31px,23px]]]
-                    width_5char:
-                        filter: function() { return (feature.shield_text.length === 5) }
-                        draw:
-                            icons:
-                                size: [[6,[25px,18px]],[13,[27px,20px]],[15,[32px,23px]]]
-                US-NY:
-                    # Match New York state highways: `US:NY`
-                    filter: |
-                        function() {
-                            return feature.shield_text &&
-                                /^US:NY$/.test(feature.network)
-                                /* (/^US:NY$/.test(feature.network) || /^NY:US$/.test(feature.network)) */
-                        }
-                    draw:
-                        icons:
-                            sprite: |
-                                function() { return ( 'US:NY_' + feature.shield_text.length + 'char'); }
-                            text:
-                                # offset: [0px, 1px]
-                                font:
-                                    fill: [0.0,0.0,0.0]
-                                    size: [[7,7px],[13,9px],[15,10px]]
-                    width_1char:
-                        filter: function() { return (feature.shield_text.length === 1) }
-                        draw:
-                            icons:
-                                size: [[6,[13px,17px]],[13,[15px,19px]],[15,[18px,22px]]]
-                    width_2char:
-                        filter: function() { return (feature.shield_text.length === 2) }
-                        draw:
-                            icons:
-                                size: [[6,[17px,17px]],[13,[19px,19px]],[15,[22px,22px]]]
-                    width_3char:
-                        filter: function() { return (feature.shield_text.length === 3) }
-                        draw:
-                            icons:
-                                size: [[6,[20px,17px]],[13,[22px,19px]],[15,[27px,22px]]]
-                    width_4char:
-                        filter: function() { return (feature.shield_text.length === 4) }
-                        draw:
-                            icons:
-                                size: [[6,[21px,17px]],[13,[24px,19px]],[15,[29px,22px]]]
-                    width_5char:
-                        filter: function() { return (feature.shield_text.length === 5) }
-                        draw:
-                            icons:
-                                size: [[6,[22px,17px]],[13,[25px,19px]],[15,[30px,22px]]]
-                US-PA:
-                    # Match Pennsylvania state highways
-                    filter: |
-                        function() {
-                            return feature.shield_text &&
-                                /^US:PA$/.test(feature.network)
-                        }
-                    draw:
-                        icons:
-                            sprite: |
-                                function() { return ( 'US:PA_' + feature.shield_text.length + 'char'); }
-                            text:
-                                offset: [0px, 1px]
-                                font:
-                                    fill: [0.0,0.0,0.0]
-                                    size: [[7,7px],[13,9px],[15,10px]]
-                    width_1char:
-                        filter: function() { return (feature.shield_text.length === 1) }
-                        draw:
-                            icons:
-                                size: [[6,[13px,17px]],[13,[15px,19px]],[15,[18px,22px]]]
-                    width_2char:
-                        filter: function() { return (feature.shield_text.length === 2) }
-                        draw:
-                            icons:
-                                size: [[6,[17px,17px]],[13,[19px,19px]],[15,[22px,22px]]]
-                    width_3char:
-                        filter: function() { return (feature.shield_text.length === 3) }
-                        draw:
-                            icons:
-                                size: [[6,[21px,17px]],[13,[24px,19px]],[15,[28px,22px]]]
-                    width_4char:
-                        filter: function() { return (feature.shield_text.length === 4) }
-                        draw:
-                            icons:
-                                size: [[6,[22px,17px]],[13,[25px,19px]],[15,[30x,22px]]]
-                    width_5char:
-                        filter: function() { return (feature.shield_text.length === 5) }
-                        draw:
-                            icons:
-                                size: [[6,[24px,17px]],[13,[27px,19px]],[15,[32px,22px]]]
-                # USA County Routes
-                US-counties:
-                    # Match state highways: `US:??:*`
-                    #
-                    # this is very USA specific
-                    #
-                    # filter: |
-                    #     function() {
-                    #         return feature.shield_text &&
-                    #             /^US:(?!US)\w\w:.*$/.test(feature.network)
-                    #     }
-                    #
-                    # this generic for any country with 3rd level networks (like county routes in USA)
-                    # BEWARE:
-                    # US:US:Business  about 150
-                    # US:US:Truck
-                    # US:US:Alternate
-    #
-                    # STATE ROUTE
-                    # ??:??:Loop  about 200
-                    # ??:??:Spur  about 200
-                    # ??:??:Business   about 100
-    #
-                    # STATE TEXAS SPECIAL ROUTE
-                    # US:TX:FM -- probably just state? there are 3k of these
-                    #
-                    #
-                    filter: |
-                        function() {
-                            return feature.shield_text &&
-                                /^\w+:\w+:(!Alternate).+$/.test(feature.network) &&
-                                $zoom > 10
-                        }
-                    draw:
-                        icons:
-                            # you need to match any custom shield to the vector tile `network` values
-                            sprite: function() { return ('county_shield_' + feature.shield_text.length + 'char'); }
-                            # priority: 19
-                            visible: *text_visible_shields
-                            text:
-                                font:
-                                    fill: [0.320,0.320,0.320]
-                                    #size: [[11,7px],[15,10px]]
-                    # early:
-                    #     filter: { $zoom: { max: 11 } }
-                    #     draw:
-                    #         icons:
-                    #             visible: false
-                    width_1char:
-                        filter: function() { return (feature.shield_text.length === 1) }
-                        draw:
-                            icons:
-                                size: [[6,[14px,14px]],[13,[16px,16px]],[15,[18px,18px]]]
-                    width_2char:
-                        filter: function() { return (feature.shield_text.length === 2) }
-                        draw:
-                            icons:
-                                size: [[6,[16px,14px]],[13,[18px,15px]],[15,[22px,18px]]]
-                    width_3char:
-                        filter: function() { return (feature.shield_text.length === 3) }
-                        draw:
-                            icons:
-                                size: [[6,[20px,14px]],[13,[21px,15px]],[15,[26px,18px]]]
-                    width_4char:
-                        filter: function() { return (feature.shield_text.length === 4) }
-                        draw:
-                            icons:
-                                size: [[6,[25px,14px]],[13,[28px,15px]],[15,[34px,18px]]]
-                    width_5char:
-                        filter: function() { return (feature.shield_text.length === 5) }
-                        draw:
-                            icons:
-                                size: [[6,[30px,14px]],[13,[33px,15px]],[15,[40px,18px]]]
-        path:
+                    lines:
+                        color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
+                        width: [[13, 0px], [14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
+                        outline:
+                            color: [0.790,0.790,0.790]
+                            width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
+        steps:
             filter:
                 all:
-                    - kind: [path, portage_way]
-                not:
-                    - kind_detail: [footway, steps, track, cycleway]
-                    - kind_detail: [pier]
+                    - kind: path
+                    - kind_detail: steps
             draw:
-                dashedline:
-                    order: function() { return feature.sort_rank; }
-                    interactive: true
+                dashed:
+                    #order: function() { return feature.sort_rank; }
+                    order: 1005
+                    color: [0.501,0.650,0.650]
+                    width: [[15, 0.6], [16, 1px], [17, 1px], [18, 4px], [19, 1.5m]]
+                lines:
                     visible: false
-                    color: [0.350,0.350,0.350]
-                    width: [[14, 0.35px], [15, 0.5px], [16, 1px], [17, 2px], [18, 3px], [19, 4px]]
-                    # outline:
-                    #     color: [0.790,0.790,0.790]
-                    #     width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
-            early:
-                filter:
-                    $zoom: { max: 17 }
-                draw:
-                    lines:
-                        order: 351
-                        outline:
-                            order: 350
-            portage_way:
-                filter: { kind: portage_way }
+                    order: 1000
+                    #width: [[13, 0.75px], [14, 0.85px], [15, 1.1px], [16, 2px], [17, 6px], [18, 7px], [19, 10px]]
+                    #color: [[15,[0.120,0.600,0.520]],[16,[0.623,0.820,0.797]]]
+                    color: [[14,[0.510,0.752,0.695]],[15,[0.671,0.839,0.820]],[16,[0.671,0.839,0.820]]]
+                    width: [[13, 0.75px], [14, 0.6px], [15, 1px], [16, 2px], [17, 3px], [18, 4px], [19, 4px]]
+                    visible: true
+                    #color: purple
+            steps-late:
+                filter: { $zoom: { min: 17 } }
                 draw:
-                    lines:
-                        color: [0.350,0.350,0.350]
-            pedestrian:
-                filter: { kind_detail: pedestrian }
+                    # lines:
+                    #     color: [0.707,0.884,0.872]
+                    #     visible: true
+                    #     outline:
+                    #         width: [[17, 0px], [18, 1px], [19, 2px]]
+                    #         color: [0.850,0.850,0.850]
+                    dashed:
+                        width: [[17, 2px], [18, 3px], [19, 3.5px]]
+                        color: [0.501,0.650,0.650]
+            early-show-as-lines-z14:
+                filter: { $zoom: { max: 16 } }
                 draw:
+                    dashed:
+                        visible: false
                     lines:
-                        color: [[16,[0.749,0.749,0.749]]]
-                        width: [[14, 0.35px], [15, 0.35px], [16, 1px], [17, 2px], [18, 3px], [19, 4px]]
-                        # outline:
-                        #     color: [0.790,0.790,0.790]
-                        #     width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
-            bridge:
-                filter: { is_bridge: true }
+                        visible: true
+            networked:
+                filter: { walking_network: true }
                 draw:
                     lines:
-                        width: [[14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
-                        cap: round
-                        outline:
-                            color: [[15,*path_bridge_casing2],[16,*path_bridge_casing1]]
-                            width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
-                            cap: butt
-            in_park:
-                filter: { landuse_kind: [park,nature_reserve,conservation,golf_course,garden] }
-                draw:
-                    dashedline:
-                        color: [0.350,0.350,0.350]
-                        # outline:
-                        #     color: [0.790,0.790,0.790]
-                        #     width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
-            #     golf_course:
-            #         filter: { landuse_kind: golf_course }
-            #         draw:
-            #             lines:
-            #                 color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
-            #                 outline:
-            #                     color: [0.790,0.790,0.790]
-            #                     width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
-            #     nature_reserve:
-            #         filter: { landuse_kind: nature_reserve }
-            #         draw:
-            #             lines:
-            #                 color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
-            #                 outline:
-            #                     color: [0.790,0.790,0.790]
-            #                     width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
-            #     conservation:
-            #         filter: { landuse_kind: conservation }
-            #         draw:
-            #             lines:
-            #                 color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
-            #                 outline:
-            #                     color: [0.790,0.790,0.790]
-            #                     width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
-            # in_cemetery_garden:
-            #     filter: { landuse_kind: [cemetery,garden] }
-            #     draw:
-            #         lines:
-            #             color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
-            #             width: [[14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
-            #             outline:
-            #                 color: [0.790,0.790,0.790]
-            #                 width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
-            # in_zoo:
-            #     filter: { landuse_kind: zoo }
-            #     draw:
-            #         lines:
-            #             color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
-            #             width: [[14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
-            #             outline:
-            #                 color: [0.790,0.790,0.790]
-            #                 width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
-            # in_university:
-            #     filter: { landuse_kind: university }
-            #     draw:
-            #         lines:
-            #             color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
-            #             width: [[14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
-            #             outline:
-            #                 color: [0.790,0.790,0.790]
-            #                 width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
-            # in_hospital:
-            #     filter: { landuse_kind: hospital }
-            #     draw:
-            #         lines:
-            #             color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
-            #             width: [[14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
-            #             outline:
-            #                 color: [0.790,0.790,0.790]
-            #                 width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
-            labels-path:
-                filter: { $zoom: { min: 17 } }
-                draw:
-                    text-blend-order:
-                        priority: 61
-                        visible: *text_visible_path
-                        text_source: name
-                        font:
-                            fill: [0.536,0.556,0.581]
-                            size: 12px
-                            stroke: { color: *text_stroke, width: 4 }
-        track:
-            filter: { kind: path, kind_detail: track }
-            draw:
-                lines:
-                    color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
-                    width: [[13, 0px], [14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
-                    cap: butt
-                    join: round
-                    outline:
-                        color: [0.790,0.790,0.790]
-                        width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
-            bridge:
-                filter: { is_bridge: true }
-                draw:
-                    lines:
-                        cap: butt
-                        width: [[13, 0px], [14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
-                        cap: round
-                        outline:
-                            color: [1.0,1.0,1.0]
-                            width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
-                            cap: butt
-            in_park:
-                filter: { landuse_kind: [park,national_park,nature_reserve,conservation,golf_course,garden,battlefield] }
-                draw:
-                    lines:
-                        color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
-                        width: [[13, 0px], [14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
-                        outline:
-                            color: [0.790,0.790,0.790]
-                            width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
-        steps:
-            filter:
-                all:
-                    - kind: path
-                    - kind_detail: steps
-            draw:
-                dashed:
-                    #order: function() { return feature.sort_rank; }
-                    order: 1005
-                    color: [0.501,0.650,0.650]
-                    width: [[15, 0.6], [16, 1px], [17, 1px], [18, 4px], [19, 1.5m]]
-                    interactive: true
-                lines:
-                    visible: false
-                    order: 1000
-                    interactive: true
-                    #width: [[13, 0.75px], [14, 0.85px], [15, 1.1px], [16, 2px], [17, 6px], [18, 7px], [19, 10px]]
-                    #color: [[15,[0.120,0.600,0.520]],[16,[0.623,0.820,0.797]]]
-                    color: [[14,[0.510,0.752,0.695]],[15,[0.671,0.839,0.820]],[16,[0.671,0.839,0.820]]]
-                    width: [[13, 0.75px], [14, 0.6px], [15, 1px], [16, 2px], [17, 3px], [18, 4px], [19, 4px]]
-                    visible: true
-                    #color: purple
-            steps-late:
-                filter: { $zoom: { min: 17 } }
-                draw:
-                    # lines:
-                    #     color: [0.707,0.884,0.872]
-                    #     visible: true
-                    #     outline:
-                    #         width: [[17, 0px], [18, 1px], [19, 2px]]
-                    #         color: [0.850,0.850,0.850]
-                    dashed:
-                        width: [[17, 2px], [18, 3px], [19, 3.5px]]
-                        color: [0.501,0.650,0.650]
-            early-show-as-lines-z14:
-                filter: { $zoom: { max: 16 } }
-                draw:
-                    dashed:
-                        visible: false
-                    lines:
-                        visible: true
-            networked:
-                filter: { walking_network: true }
-                draw:
-                    lines:
-                        width: [[13, 0.75px], [14, 1px], [15, 2px], [16, 2px], [17, 3px], [18, 4px], [19, 4px]]
-                    dashed:
-                        width: [[13, 1.25px],[14, 2px],[15, 1.75px],[16, 2px], [17, 4px], [18, 5px], [19, 8px]]
-                    highlight:
-                        order: 980
-                        color: [[12,[0.900,1.000,0.850]],[14,[0.930,1.000,0.850]],[15,[1.000,1.000,0.870]]]
-                        width: [[12, 3px], [13, 4px], [14, 5px], [15, 6px], [16, 8px], [17, 10px], [18, 14px], [19, 16px]]
-                        join: round
-                early:
-                    filter: { $zoom: { max: 15 } }
-                    draw:
-                        lines:
-                            color: [0.120,0.600,0.520]
-                networked-steps-late:
-                    filter: { $zoom: { min: 18 } }
-                    draw:
-                        dashed:
-                            color: [0.120,0.600,0.520]
+                        width: [[13, 0.75px], [14, 1px], [15, 2px], [16, 2px], [17, 3px], [18, 4px], [19, 4px]]
+                    dashed:
+                        width: [[13, 1.25px],[14, 2px],[15, 1.75px],[16, 2px], [17, 4px], [18, 5px], [19, 8px]]
+                    highlight:
+                        order: 980
+                        color: [[12,[0.900,1.000,0.850]],[14,[0.930,1.000,0.850]],[15,[1.000,1.000,0.870]]]
+                        width: [[12, 3px], [13, 4px], [14, 5px], [15, 6px], [16, 8px], [17, 10px], [18, 14px], [19, 16px]]
+                        join: round
+                early:
+                    filter: { $zoom: { max: 15 } }
+                    draw:
+                        lines:
+                            color: [0.120,0.600,0.520]
+                networked-steps-late:
+                    filter: { $zoom: { min: 18 } }
+                    draw:
+                        dashed:
+                            color: [0.120,0.600,0.520]
             in_park:
                 filter: { landuse_kind: [park,nature_reserve,conservation,golf_course,garden] }
                 draw:
@@ -3530,7 +3073,6 @@ layers:
                     text-blend-order:
                         priority: 63
                         visible: *text_visible_steps
-                        text_source: name
                         font:
                             fill: [0.45,0.45,0.45]
                             size: 11px
@@ -3579,14 +3121,14 @@ layers:
                     lines:
                         color: [0.450,0.450,0.450]
                     text-blend-order:
-                        text_source: function() { if( feature.name ){ return '◆ ' + feature.name; } else { return ''; } }
+                        text_source: global.ux_language_text_source_piste_advanced
             expert:
                 filter: { piste_difficulty: expert }
                 draw:
                     lines:
                         color: [0.450,0.450,0.450]
                     text-blend-order:
-                        text_source: function() { if( feature.name ){ return '◆◆ ' + feature.name; } else { return ''; } }
+                        text_source: global.ux_language_text_source_piste_expert
         pier:
             filter: { kind: path, kind_detail: pier }
             draw:
@@ -3600,18 +3142,17 @@ layers:
             filter: { kind: racetrack }
             draw:
                 lines:
-                    interactive: true
                     cap: round
                     join: round
                     color: [0.400,0.666,0.690]
                     width: [[13,0.5px],[14,1px],[15, 1px], [16, 1.5px], [18, 3px], [19, 5px]]
         airport-lines:
-            filter: { kind: aeroway }
+            filter: { kind: aeroway, kind_detail: [runway,taxiway] }
             draw:
                 lines:
-                    color: [[11, [0.25,0.25,0.25]], [17, [0.0,0.0,0.0]]]
+                    color: [[11,[0.25,0.25,0.25]],[17,[0.00,0.00,0.00]]]
                     cap: butt
-                    width: [[10, 1px], [11, 1.5px], [12, 2px], [13, 4px], [14, 8px], [15, 16px], [16, 32px], [17, 60m]]
+                    width: [[10,1px],[13,3px],[15,16px],[17,60m]]
                     outline:
                         color: [1.0,1.0,1.0]
             # Features come in at zoom 9, but include mostly minor airports without POIs until z13
@@ -3629,11 +3170,11 @@ layers:
                 filter: { kind_detail: taxiway }
                 draw:
                     lines:
-                        color: [[11, [0.885,0.885,0.885]], [13, [0.779,0.802,0.828]], [14,[0.779,0.802,0.828]], [15, [1.0,1.0,1.0]], [16, [1.0,1.0,1.0]]]
-                        width: [[11, 0.5px], [12, 0.65px], [13, 0.65px], [14, 1px], [15, 0px], [16, 1px], [17, 6px], [18, 9m]]
+                        color: [[11,[0.885,0.885,0.885]],[13,[0.779,0.802,0.828]],[14,[0.779,0.802,0.828]],[15,[1.0,1.0,1.0]]]
+                        width: [[11,0.5px],[14,1px],[15,0px],[16,1px],[17,6px],[18,9m]]
                         outline:
-                            color: [[11, [0.894,0.906,0.914]], [14,[0.779,0.802,0.828]], [15, [0.714,0.733,0.760]], [16, [0.714,0.733,0.760]], [17, [0.744,0.764,0.792]]]
-                            width: [[11, 0px], [14, 0px], [15, 0.75px], [16, 1.5px], [17, 2px], [18, 3px]]
+                            color: [[11,[0.894,0.906,0.914]],[14,[0.779,0.802,0.828]],[15,[0.714,0.733,0.760]],[17,[0.744,0.764,0.792]]]
+                            width: [[11, 0px],[14,0px],[15,0.75px],[17,2px],[18,3px]]
                 early:
                     filter: { $zoom: { max: 13 } }
                     draw:
@@ -3657,7 +3198,6 @@ layers:
             filter: { kind: aerialway }
             draw:
                 lines:
-                    interactive: true
                     color: [0.5,0.5,0.5]
                     width: [[14, 0.5px], [15, 1.0px], [16, 2m]]
             gondola_cable_car:
@@ -3684,1994 +3224,1135 @@ layers:
                     text-blend-order:
                         priority: 63
                         visible: *text_visible_aerialway
-                        text_source: name
-                        font:
-                            fill: *text_fill
-                            size: 10px
-                            stroke: { color: *text_stroke_park, width: 4 }
-                minor:
-                    filter: { not: { kind_detail: [gondola,cable_car,chair_lift] }, $zoom: { max: 17 } }
-                    draw:
-                        text-blend-order:
-                            visible: false
-                early_gondola:
-                    filter: { $zoom: [14], kind_detail: [gondola,cable_car] }
-                    draw:
-                        text-blend-order:
-                            font:
-                                weight: 600
-                later:
-                    filter: { $zoom: { min: 15 } }
-                    draw:
-                        text-blend-order:
-                            font:
-                                weight: 600
-    buildings:
-        data: { source: mapzen, layer: buildings }
-        filter:
-            not: { location: underground }
-        # set default footprint and extrusion draw properties, but don't draw by default (rules below will turn visibility on)
-        draw:
-            polygons:
-                visible: false
-                order: 329
-                color: [[14,[0.930,0.940,0.940]],[15,[0.920,0.930,0.930]],[16,[0.930,0.940,0.940]]]
-            lines:
-                style: lines
-                order: 330
-                visible: false
-                color: [[14,[0.750,0.750,0.750]],[17,[0.85, 0.85, 0.85]]]
-                width: [[14, 0px], [15, 0.5px], [16,0.5px], [17,1px], [18, 1.25px]]
-
-        # turn interactive feature selection on for buildings with names
-        interactive:
-            filter: { name: true }
-            draw: { polygons: { interactive: true } }
-
-        # building footprints, pre-extrusion
-        footprints:
-            filter:
-                any:
-                    # limit show smaller landuse areas to higher zooms
-                    - { $zoom: [13], scale_rank: [1,2] }
-                    - { $zoom: [14], scale_rank: [1,2,3] }
-                    - { $zoom: [15], area: { min: 5000 }, name: true }
-                    - { $zoom: [15], area: { min: 5000 }, kind: true }
-                    - { $zoom: [15], area: { min: 3000 }, landuse_kind: true }
-                    - { $zoom: [15], height: { min: 100 } }
-                    - { $zoom: [15], volume: { min: 100000 } }
-                    - { $zoom: [16], area: { min: 1000 }, name: true }
-                    - { $zoom: [16], area: { min: 1000 }, kind: true }
-                    - { $zoom: [16], area: { min: 2000 }, landuse_kind: true }
-                    - { $zoom: [16], volume: { min: 50000 } }
-                    #- { $zoom: [16], height: { min: 50 } }
-                    - { $zoom: { min: 17 } }
-                all:
-                   - not: { location: underground }
-            draw:
-                polygons:
-                    visible: true
-                lines:
-                    visible: true
-
-            extrude:
-                filter:
-                    any:
-                        # for the buildings that were visible at zoom 15, extrude those all up a bit at z17
-                        - { $zoom: [16], area: { min: 20000 }, name: true }
-                        - { $zoom: [16], area: { min: 20000 }, kind: true }
-                        - { $zoom: [16], area: { min: 5000 }, landuse_kind: true }
-                        - { $zoom: [16], height: { min: 150 } }
-                        - { $zoom: [16], volume: { min: 150000 } }
-                        - { $zoom: [17], area: { min: 5000 }, name: true }
-                        - { $zoom: [17], area: { min: 5000 }, kind: true }
-                        - { $zoom: [17], area: { min: 3000 }, landuse_kind: true }
-                        - { $zoom: [17], height: { min: 100 } }
-                        - { $zoom: [17], volume: { min: 100000 } }
-                        - { $zoom: { min: 18 } }
-                draw:
-                    polygons:
-                        visible: true
-                        order: 438
-                        style: building-grid
-                        extrude: 100
-                        color: [0.930,0.940,0.940]
-                    lines:
-                        visible: true
-                        order: 439
-                        style: building-lines
-                        extrude: 100
-                z16-default:
-                    filter: { $zoom: [16] }
-                    draw:
-                        polygons:
-                            extrude: 20
-                        lines:
-                            extrude: 20
-                z18-default:
-                    filter: { $zoom: { min: 18 } }
-                    draw:
-                        polygons:
-                            extrude: 20
-                        lines:
-                            extrude: 20
-                z18-special:
-                    filter:
-                        any:
-                            - { $zoom: { min: 18 }, area: { min: 5000 }, name: true }
-                            - { $zoom: { min: 18 }, area: { min: 5000 }, kind: true }
-                            - { $zoom: { min: 18 }, area: { min: 3000 }, landuse_kind: true }
-                            - { $zoom: { min: 18 }, height: { min: 100 } }
-                            - { $zoom: { min: 18 }, volume: { min: 100000 } }
-                    draw:
-                        polygons:
-                            extrude: 100
-                        lines:
-                            extrude: 100
-
-
-        # landuse-specific rules
-        # in_park:
-        #     filter: { landuse_kind: [park,forest,nature_reserve,conservation,golf_course,garden] }
-        #     draw:
-        #         polygons:
-        #             color: [0.864,0.910,0.905]
-
-        #     # golf_course:
-        #     #     filter: { landuse_kind: golf_course }
-        #     #     draw:
-        #     #         polygons:
-        #     #             color: *building2
-        #     # nature_reserve:
-        #     #     filter: { landuse_kind: nature_reserve }
-        #     #     draw:
-        #     #         polygons:
-        #     #             color: *building2
-        #     # conservation:
-        #     #     filter: { landuse_kind: conservation }
-        #     #     draw:
-        #     #         polygons:
-        #     #             color: *building2
-        #     # zoo:
-        #     #     filter: { landuse_kind: zoo }
-        #     #     draw:
-        #     #         polygons:
-        #     #             color: *building2
-        # in_university:
-        #     filter: { landuse_kind: [university,school] }
-        #     draw:
-        #         polygons:
-        #             color: [0.950,0.917,0.883]
-        #         lines:
-        #             color: *brown1_bo
-        # in_hospital:
-        #     filter: { landuse_kind: hospital }
-        #     draw:
-        #         polygons:
-        #             color: [0.976,0.908,0.913]
-        # in_airport:
-        #     filter: { landuse_kind: [aerodrome, runway, taxiway] }
-        #     draw:
-        #         polygons:
-        #             color: *purple_b
-        #         lines:
-        #             color: *purple_bo
-        #             width: [[14,0.5px],[15,0.5px],[17,0.5px],[18,0.75px],[19,0.25m]]
-        # in_retail:
-        #    filter: { landuse_kind: retail }
-        #    draw:
-        #         polygons:
-        #             color: [0.945, 0.898, 0.878]
-
-    buildings-labels:
-        data: { source: mapzen, layer: buildings }
-        filter:
-            all:
-                - { $zoom: { min: 17 } }
-                - $geometry: point
-                - not: { location: underground, kind: address }
-                - name: true
-            any:
-                - { $zoom: [16], area: { min: 5000 } }
-                - { $zoom: [16], area: { min: 5000 } }
-                - { $zoom: [16], area: { min: 10000 }, landuse_kind: true }
-                - { $zoom: [16], area: { min: 7000 }, kind_detail: [university, college, school, kindergarten] }
-                - { $zoom: [16], volume: { min: 50000 }, name: true }
-                - { $zoom: [17], area: { min: 3000 } }
-                - { $zoom: [17], area: { min: 2000 }, kind_detail: [university, college, school, kindergarten] }
-                - { $zoom: [18], area: { min: 1000 } }
-                - { $zoom: [18], kind_detail: [university, college, school, kindergarten] }
-                - { $zoom: [19], area: { min: 200 } }
-                - { $zoom: { min: 19 }, kind_detail: [university, college, school, kindergarten] }
-                - { $zoom: { min: 20 }, area: true }
-        draw:
-            text-blend-order:
-                interactive: true
-                move_into_tile: true
-                priority: 70
-                visible: *text_visible_building
-                order: 7
-                font:
-                    fill: '#666'
-                    family: *text_font_family
-                    style: italic
-                    size: 11px
-                    stroke: { color: *text_stroke_address, width: 1 }
-        building_labels-z15-z16-z17:
-            filter: { $zoom: [15,16,17] }
-            draw: { text-blend-order: { font: { size: 12px, stroke: { width: 2 } } } }
-        building_labels-z18:
-            filter: { $zoom: [18,19] }
-            draw: { text-blend-order: { font: { size: 12px, weight: 600, stroke: { width: 3 } } } }
-        building_labels-z20-up:
-            filter: { $zoom: { min: 20 } }
-            draw: { text-blend-order: { font: { size: 14px, weight: 600, stroke: { width: 3 }  } } }
-        building-labels-z16:
-            filter: function() { if( $zoom == 16 && feature.name.length > 20 ) { return true; } else { return false; } }
-            draw:
-                text-blend-order:
-                    visible: false
-        building-labels-z17:
-            filter: function() { if( $zoom == 17 && feature.name.length > 30 ) { return true; } else { return false; } }
-            draw:
-                text-blend-order:
-                    visible: false
-        building-labels-z20+:
-            filter: { $zoom: { min: 20 } }
-            draw:
-                text-blend-order:
-                    text_source: function() { if( feature.addr_housenumber ) { return feature.name + '\n' + feature.addr_housenumber; } else { return feature.name; } }
-    address-labels:
-        data: { source: mapzen, layer: buildings }
-        filter:
-            $zoom: { min: 20 }
-            any:
-                - kind: address
-                - { label_position: true, addr_housenumber: true, name: false }
-        draw:
-            text-blend-order:
-                interactive: true
-                order: 7
-                visible: *text_visible_address
-                text_source: addr_housenumber
-                font:
-                    fill: *text_fill_address
-                    family: *text_font_family
-                    style: italic
-                    size: 10px
-                    stroke: { color: *text_stroke_address, width: 4 }
-
-    boundaries:
-        data: { source: mapzen, layer: boundaries }
-        # country subdivisions (states, provinces)
-        draw:
-            lines:
-                interactive: true
-                order: function() { return (feature.sort_rank + 100); }
-#                color: red
-#                width: [[9, 1px], [14, 2px], [16, 3px], [17, 8m]]
-        country:
-            filter:
-                kind: country
-                # any:
-                #     - kind: country
-                #     - kind_detail: 2
-            draw:
-                lines:
-                    interactive: true
-                    color: *country_boundary
-                    width: [[1, 0.5px], [2, 1.0px], [4, 1.5px], [9, 2.5px], [14, 3.5px], [16, 4.5px], [17, 14m]]
-            water:
-                filter: { maritime_boundary: true }
-                draw:
-                    lines:
-                        visible: false
-                        #order: function() { return (feature.sort_rank - 2); }
-                        #color: [0.568,0.942,1.000]
-
-        # other_country_boundary_disputed_etc:
-        #     filter: { kind: [disputed, indefinite, indeterminate, lease_limit, line_of_control, overlay_limit] }
-        #     draw:
-        #         dashed:
-        #             interactive: true
-        #             color: *country_boundary
-        #             width: [[1, 0.2px], [2, 0.5px], [4, 1.0px], [9, 1.5px], [14, 2.5px], [16, 3.5px], [17, 10m]]
-
-        region:
-            filter:
-                kind: region
-                # any:
-                #     - type: state
-                #     # territorial here is probably a hack
-                #     - kind: [state, department, region, provincial, territorial]
-                #     - kind_detail: 4
-                # not:
-                #     # deal with bogus Hungary data
-                #     - scalerank: 0
-            draw:
-                lines:
-                    interactive: true
-                    color: *region_boundary
-                    width: [[0, 0.5px], [2, 1.0px], [5, 1.25px], [6, 1.5px], [7, 1.75px], [9, 2.0px], [14, 4.0px], [16, 5.0px], [17, 10m]]
-            water:
-                filter: { maritime_boundary: true }
-                draw:
-                    lines:
-                        visible: false
-            early:
-                filter: { not: { min_zoom: [1,2] }, $zoom: { max: 8 } }
-                draw:
-                    lines:
-                        visible: false
-        city_walls:
-            filter: { kind: city_wall }
-            draw:
-                lines:
-                    color: *city_wall
-                    width: [[12, 0.75px], [13, 1.0px], [14, 1.2px], [15, 2.0px], [16, 2.5px], [19, 6m]]
-        retaining_wall:
-            filter: { kind: retaining_wall }
-            draw:
-                lines:
-                    color: *retaining_wall
-                    width: [[14, 0.5px], [15, 1.0px], [16, 1.5px], [17, 2.0px], [19, 4m]]
-        snow_fence:
-            filter: { kind: snow_fence }
-            draw:
-                lines:
-                    color: *snow_fence
-                    width: [[14, 0.5px], [15, 1.0px], [16, 1.5px], [17, 2.0px], [19, 1.5m]]
-        fence:
-            filter: { kind: fence }
-            draw:
-                lines:
-                    color: [[14,[0.770,0.765,0.755]],[18,[0.770,0.765,0.755]],[19,[0.841,0.837,0.824]]]
-                    width: [[14, 0.5px], [15, 0.75px], [16, 0.75px], [18, 1.5px], [19, 1m]]
-        dam:
-            filter: { kind: dam }
-            draw:
-                lines:
-                    color: *dam
-                    width: [[14, 0.5px], [15, 1.0px], [16, 1.5px], [17, 2.0px], [19, 1.5m]]
-
-    places:
-        data: { source: mapzen, layer: places }
-        filter: { not: { kind: [ocean, sea] } }
-        draw:
-            text-blend-order:
-                visible: false    # labels are enabled by each layer below
-                font:
-                    family: *text_font_family
-                    # weight: 500
-                    fill: *text_fill
-
-        country-z2:
-            filter:
-                all:
-                    - kind: [country]
-                    - $zoom: [2]
-                    - name: ["United States of America","Brasil","中华人民共和国","Россия","Canada","Kalaallit Nunaat","Ísland","Australia","India","日本","Guam","Indonesia","South Africa","مصر","Nigeria","Kenya"]
-            draw:
-                text-blend-order:
-                    priority: 3
-                    visible: *text_visible_admin
-                    text_source: function() { return feature["name:en"] || feature["name"]; }
-                    font:
-                        fill: *text_fill
-                        weight: 200
-                        size: 11px
-                        stroke: { color: *text_stroke, width: 4 }
-        country-z3:
-            filter: { name: true, population: true, kind: [country], $zoom: [3] }
-            draw:
-                text-blend-order:
-                    priority: 3
-                    visible: *text_visible_admin
-                    text_source: function() { return feature["name:en"] || feature["name"]; }
-                    font:
-                        fill: *text_fill
-                        weight: 200
-                        size: 11px
-                        stroke: { color: *text_stroke, width: 4 }
-    #            icons:
-    #                size: [[13, 12px], [15, 18px]]
-    #                interactive: true
-    #                sprite: *townspot_sprite
-            early-ones:
-                # US, Brazil, China, Russia, Canada, Greenland, Iceland, Australia, India, Japan, Guam, Indonesia, South Africa, Egypt, Nigeria, Kenya
-                filter: { not: { name: ["United States of America","Brasil","中华人民共和国","Россия","Canada","Kalaallit Nunaat","Ísland","Australia","India","日本","Guam","Indonesia","South Africa","مصر","Nigeria","Kenya"] }, $zoom: {min: 3, max: 4} }
-                draw:
-                    text-blend-order:
-                        visible: false
-        country-z4:
-            filter: { name: true, population: true, kind: [country], $zoom: [4] }
-            draw:
-                text-blend-order:
-                    priority: 3
-                    visible: *text_visible_admin
-                    text_source: function() { return feature["name:en"] || feature["name"]; }
-                    font:
-                        fill: *text_fill
-                        weight: 200
-                        size: 13px
-                        stroke: { color: *text_stroke, width: 4 }
-    #            icons:
-    #                size: [[13, 12px], [15, 18px]]
-    #                interactive: true
-    #                sprite: *townspot_sprite
-            early-ones-z4:
-                filter: { name: [Nederland,Luxembourg,Liechtenstein,San Marino,Civitatis Vaticanæ,Crna Gora,Македонија,The Gambia,Burundi,Swaziland,الإمارات العربية المتحدة,العراق,Singapore,El Salvador,Belize,Trinidad and Tobago, Saint Lucia, Montserrat,Anguilla,República Dominicana,Bahamas,British Virgin Islands,Antigua and Barbuda,Grenada,Sint Maarten,Saint Kitts and Nevis,Cayman Islands,België - Belgique - Belgien], $zoom: {min: 4, max: 5} }
-                draw:
-                    text-blend-order:
-                        visible: false
-        country-z5:
-            filter:
-                all:
-                    - name: true
-                    - population: true
-                    - kind: [country]
-                    - $zoom: [5]
-                any:
-                    - { population: { min: 5000000 } }
-            draw:
-                text-blend-order:
-                    priority: 3
-                    visible: *text_visible_admin
-                    text_source: function() { return feature["name:en"] || feature["name"]; }
-                    font:
-                        fill: *text_fill
-                        weight: 600
-                        size: 13px
-                        stroke: { color: *text_stroke, width: 4 }
-            # country-spacer-z5:
-            #     filter: { kind: country, $zoom: [5] }
-            #     draw:
-            #         text-blend-order:
-            #             text_source: function() { return feature.name.split('').join(' ') }
-            #             text_wrap: false
-    #            icons:
-    #                size: [[13, 12px], [15, 18px]]
-    #                interactive: true
-    #                sprite: *townspot_sprite
-            early-ones-z5:
-                filter: { name: [Luxembourg,Liechtenstein,San Marino,Civitatis Vaticanæ,El Salvador,Belize,België - Belgique - Belgien], $zoom: {min: 5, max: 6} }
-                draw:
-                    text-blend-order:
-                        visible: false
-        country-z6:
-            # South Ossetia and Abkhazia aren't countries (they are disputed areas)
-            filter: { name: true, kind: [country], $zoom: [6] }
-            draw:
-                text-blend-order:
-                    priority: 3
-                    visible: *text_visible_admin
-                    text_source: function() { return feature["name:en"] || feature["name"]; }
-                    font:
-                        size: 14px
-                        weight: 600
-                        fill: *text_fill
-                        stroke: { color: *text_stroke, width: 4 }
-            small-ones-z6:
-                filter: { name: [Luxembourg,Liechtenstein,San Marino,Civitatis Vaticanæ,België - Belgique - Belgien,Хуссар Ирыстон,Аҧсны - Абхазия], $zoom: {min: 6, max: 7} }
-                draw:
-                    text-blend-order:
-                        visible: false
-        country-z7:
-            # South Ossetia and Abkhazia aren't countries (they are disputed areas)
-            filter: { name: true, kind: [country], $zoom: { min: 7, max: 9 } }
-            draw:
-                text-blend-order:
-                    priority: 3
-                    visible: *text_visible_admin
-                    text_source: function() { return feature["name:en"] || feature["name"]; }
-                    font:
-                        size: 16px
-                        weight: 600
-                        fill: *text_fill
-                        stroke: { color: *text_stroke, width: 4 }
-            small-ones-z7:
-                filter: { name: [Liechtenstein,San Marino,Civitatis Vaticanæ,Хуссар Ирыстон,Аҧсны - Абхазия], $zoom: {min: 7, max: 8} }
-                draw:
-                    text-blend-order:
-                        visible: false
-
-        region-z4:
-            filter: { name: true, kind: [region], $zoom: [4], not: { name: ["Western Cape","Eastern Cape","Northern Cape","North West","Limpopo","KwaZulu-Natal","Hamburg","Freie und Hansestadt Hamburg","Neuchâtel","Nordrhein-Westfalen","Haute-Normandie","Baden-Württemberg","Bayern","Sachsen-Anhalt","Berlin","Mecklenburg-Vorpommern","Schleswig-Holstein","Brandenburg","Niedersachsen","Saarland","Thüringen","Hessen","Sachsen"] } }
-            draw:
-                text-blend-order:
-                    priority: 14
-                    visible: *text_visible_admin
-                    text_source: 'name:short'
-                    font:
-                        size: 11px
-                        weight: 400
-                        fill: [0.70,0.70,0.70]
-                        stroke: { color: *text_stroke, width: 4 }
-
-        region-z5:
-            filter: { name: true, kind: [region], $zoom: [5], not: { name: ["Western Cape","Eastern Cape","Northern Cape","North West","Limpopo","KwaZulu-Natal","Hamburg","Freie und Hansestadt Hamburg","Neuchâtel","Nordrhein-Westfalen","Haute-Normandie","Baden-Württemberg","Bayern","Sachsen-Anhalt","Berlin","Mecklenburg-Vorpommern","Schleswig-Holstein","Brandenburg","Niedersachsen","Saarland","Thüringen","Hessen","Sachsen"] } }
-            draw:
-                text-blend-order:
-                    priority: 14
-                    visible: *text_visible_admin
-                    text_source: 'name:short'
-                    font:
-                        size: 18px
-                        weight: 200
-                        fill: [0.5,0.5,0.5,0.5]
-                        stroke: { color: *text_stroke, width: 4 }
-
-        region-z6:
-            filter: { name: true, kind: [region], $zoom: [6], not: { name: ["Western Cape","Eastern Cape","Northern Cape","North West","Limpopo","KwaZulu-Natal","Hamburg","Freie und Hansestadt Hamburg","Neuchâtel","Nordrhein-Westfalen","Haute-Normandie","Baden-Württemberg","Bayern","Sachsen-Anhalt","Berlin","Mecklenburg-Vorpommern","Schleswig-Holstein","Brandenburg","Niedersachsen","Saarland","Thüringen","Hessen","Sachsen"] } }
-            draw:
-                text-blend-order:
-                    priority: 14
-                    visible: *text_visible_admin
-                    text_source: 'name:short'
-                    font:
-                        size: 21px
-                        weight: 200
-                        fill: [0.5,0.5,0.5,0.5]
-                        # stroke: { color: *text_stroke, width: 4 }
-                        transform: uppercase
-
-        region:
-            filter: { name: true, kind: [region], $zoom: {min: 7, max: 9} }
-            draw:
-                text-blend-order:
-                    priority: 14
-                    visible: *text_visible_admin
-                    text_source: function() { if(feature["name:short"]) { return feature["name"]; } else { return ""; } }
-                    font:
-                        size: 30px
-                        weight: 200
-                        fill: [0.5,0.5,0.5,0.5]
-                        # stroke: { color: *text_stroke, width: 4 }
-                        transform: uppercase
-    #            icons:
-    #                size: [[13, 12px], [15, 18px]]
-    #                interactive: true
-    #                sprite: *townspot_sprite
-            pesky:
-                filter: { name: ["Western Cape","Eastern Cape","Northern Cape","North West","Limpopo","KwaZulu-Natal","Hamburg","Freie und Hansestadt Hamburg","Neuchâtel","Nordrhein-Westfalen","Haute-Normandie","Baden-Württemberg","Bayern","Sachsen-Anhalt","Berlin","Mecklenburg-Vorpommern","Schleswig-Holstein","Brandenburg","Niedersachsen","Saarland","Thüringen","Hessen","Sachsen"], $zoom: {min: 7, max: 8} }
-                draw:
-                    text-blend-order:
-                        visible: false
-            small-ones:
-                filter: { name: ["Delaware","New Jersey","Connecticut","Rhode Island","Massachusetts","New Hampshire","Vermont"], $zoom: {min: 7, max: 8} }
-                draw:
-                    text-blend-order:
-                        text_source: function() { return feature["name:abbreviation"] || feature["name"]; }
-                        font: { transform: uppercase }
-
-        populated-places:
-            filter:
-                kind: locality
-                name: true
-            draw:
-                icons:
-                    interactive: true
-                    priority: 5
-                    text:
-                        interactive: true
-                        buffer: 3px
-
-            populated-places-natural-earth-z2:
-                filter: { $zoom: [2], min_zoom: 2 }
-                draw:
-                    icons:
-                        size: 5px
-                        visible: *icon_visible_populated_places
-                        sprite: townspot-s-rev
-                        text:
-                            visible: *text_visible_populated_places
-                            font:
-                                size: 10px
-                                fill: *text_fill
-                                stroke: { color: *text_stroke, width: 4 }
-
-            populated-places-natural-earth-z3:
-                filter: { $zoom: [3] }
-                z3places-1:
-                    filter: { min_zoom: 2 }
-                    draw:
-                        icons:
-                            size: 5px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-s-rev
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 11px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-                z3places-2:
-                    filter: { min_zoom: 3 }
-                    draw:
-                        icons:
-                            priority: 7
-                            size: 5px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-s-rev
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 9px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-
-            populated-places-natural-earth-z4:
-                filter: { $zoom: [4] }
-                z4places-1:
-                    filter: { min_zoom: 2 }
-                    draw:
-                        icons:
-                            size: 5px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-s-rev
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 11px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-
-                z4places-2:
-                    filter: { min_zoom: [3,4] }
-                    draw:
-                        icons:
-                            priority: 7
-                            size: 5px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-s-rev
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 9px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-
-            populated-places-natural-earth-z5:
-                filter: { $zoom: [5] }
-                z5places-1:
-                    filter: { min_zoom: [2,3] }
-                    draw:
-                        icons:
-                            priority: 7
-                            size: 6px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-m-rev
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 15px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                priority: 5
-                                size: 8px
-                                sprite: capital-l
-#                                text:
-#                                    priority: 6
-
-                z5places-2:
-                    filter: { min_zoom: 4 }
-                    draw:
-                        icons:
-                            priority: 11
-                            size: 5px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-s-rev
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 12px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                priority: 9
-                                size: 6px
-                                sprite: capital-m
-#                                text:
-#                                    priority: 10
-
-                z5places-3:
-                    filter: { min_zoom: 5 }
-                    draw:
-                        icons:
-                            priority: 17
-                            size: 5px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-s-rev
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 10px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                priority: 15
-                                size: 6px
-                                sprite: capital-m
-#                                text:
-#                                    priority: 16
-
-            populated-places-natural-earth-z6:
-                filter: { $zoom: [6] }
-                z6places-1:
-                    filter: { min_zoom: [2,3] }
-                    draw:
-                        icons:
-                            priority: 7
-                            size: 8px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-l-rev
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 16px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                sprite: capital-l
-                                size: 8px
-                                priority: 5
-#                                text:
-#                                    priority: 6
-
-                z6places-2:
-                    filter: { min_zoom: [4,5] }
-                    draw:
-                        icons:
-                            priority: 11
-                            size: 6px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-m-rev
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 13px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                size: 6px
-                                sprite: capital-m
-                                priority: 9
-#                                text:
-#                                    priority: 10
-
-                z6places-3:
-                    filter: { min_zoom: 6 }
-                    draw:
-                        icons:
-                            size: 5px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-s-rev
-                            priority: 15
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 11px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                size: 6px
-                                sprite: capital-m
-                                priority: 13
-#                                text:
-#                                    priority: 14
-
-            populated-places-natural-earth-z7:
-                filter: { $zoom: [7] }
-                z7places-1:
-                    filter: { min_zoom: [2,3] }
-                    draw:
-                        icons:
-                            size: 8px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-l-rev
-                            priority: 7
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 17px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                size: 8px
-                                sprite: capital-l
-                                priority: 5
-#                                text:
-#                                    priority: 6
-
-                z7places-2:
-                    filter: { min_zoom: [4,5,6] }
-                    draw:
-                        icons:
-                            size: 6px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-m-rev
-                            priority: 13
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 14px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                size: 8px
-                                sprite: capital-l
-                                priority: 11
-#                                text:
-#                                    priority: 12
-
-                z7places-3:
-                    filter: { min_zoom: [6,7] }
-                    draw:
-                        icons:
-                            size: 5px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-s-rev
-                            priority: 17
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 12px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                size: 6px
-                                sprite: capital-m
-                                priority: 15
-#                                text:
-#                                    priority: 16
-
-            populated-places-osm-z8:
-                filter:
-                    all:
-                        - source: [openstreetmap, openstreetmap.org]
-                        - name: true
-                        - population: true
-                        - not: { kind: [country, county, state, island, neighbourhood, suburb, quarter] }
-                        - $zoom: [8]
-
-                z8places-1:
-                    filter:
-                        any:
-                            - { population: { min: 1000000 } }
-                    draw:
-                        icons:
-                            size: 6px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-m-rev
-                            priority: 7
-                            repeat_group: abc
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 17px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                size: 8px
-                                sprite: capital-l
-                                priority: 5
-#                                text:
-#                                    priority: 6
-                z8places-2:
-                    filter:
-                        any:
-                            - { population: { min: 150000, max: 999999 } }
-                    draw:
-                        icons:
-                            size: 6px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-m-rev
-                            priority: 11
-                            repeat_group: abc
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 14px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                size: 6px
-                                sprite: capital-m
-                                priority: 9
-#                                text:
-#                                    priority: 10
-
-                z8places-3:
-                    filter:
-                        any:
-                            - { population: { min: 85000, max: 149999 } }
-                    draw:
-                        icons:
-                            size: 6px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-m-rev
-                            priority: 15
-                            repeat_group: abc
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 12px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                size: 6px
-                                sprite: capital-m
-                                priority: 13
-#                                text:
-#                                    priority: 14
-
-                z8places-4:
-                    filter:
-                        any:
-                            - { population: { min: 50000, max: 84999 } }
-                    draw:
-                        icons:
-                            size: 5px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-s-rev
-                            priority: 19
-                            repeat_group: abc
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 10px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                size: 5px
-                                sprite: capital-m
-                                priority: 17
-#                                text:
-#                                    priority: 18
-                z8places-5:
-                    filter:
-                        all:
-                            - { population: { max: 50000 } }
-                        any:
-                            - { country_capital: true }
-                            - { region_capital: true }
-                    draw:
-                        icons:
-                            size: 5px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-s-rev
-                            priority: 19
-                            repeat_group: abc
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 10px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                size: 5px
-                                sprite: capital-s
-                                priority: 17
-#                                text:
-#                                    priority: 18
-
-            populated-places-natural-earth-z8-backfill:
-                filter: { $zoom: [8], population: { max: 50000 } }
-                draw: { icons: { text: { font: { fill: *text_fill } } } }
-                z8places-1-ne:
-                    filter: { min_zoom: [2,3] }
-                    draw:
-                        icons:
-                            size: 8px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-l-rev
-                            priority: 23
-                            repeat_group: abc
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 17px
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                size: 8px
-                                sprite: capital-l
-                                priority: 21
-#                                text:
-#                                    priority: 22
-
-                z8places-2-ne:
-                    filter: { min_zoom: [4,5,6] }
-                    draw:
-                        icons:
-                            size: 6px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-m-rev
-                            repeat_group: abc
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 14px
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                sprite: capital-m
-
-                z8places-3-ne:
-                    filter: { min_zoom: [6,7] }
-                    draw:
-                        icons:
-                            size: 5px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-s-rev
-                            priority: 27
-                            repeat_group: abc
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 10px
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                sprite: capital-s
-                                priority: 25
-#                                text:
-#                                    priority: 26
-
-            populated-places-osm-z9:
-                filter:
-                    all:
-                        - source: [openstreetmap, openstreetmap.org]
-                        - name: true
-                        - population: true
-                        - not: { kind: [country, county, state, island, neighbourhood, suburb, quarter] }
-                        - $zoom: [9]
-
-                z9places-1:
-                    filter:
-                        any:
-                            - { population: { min: 1000000 } }
+                        text_source: global.ux_language_text_source
+                        font:
+                            fill: *text_fill
+                            size: 10px
+                            stroke: { color: *text_stroke_park, width: 4 }
+                minor:
+                    filter: { not: { kind_detail: [gondola,cable_car,chair_lift] }, $zoom: { max: 17 } }
+                    draw:
+                        text-blend-order:
+                            visible: false
+                early_gondola:
+                    filter: { $zoom: [14], kind_detail: [gondola,cable_car] }
                     draw:
                         text-blend-order:
-                            anchor: center
-                            visible: *text_visible_populated_places
-                            priority: 6
                             font:
-                                size: 17px
-                                fill: *text_fill
-                                stroke: { color: *text_stroke, width: 4 }
-
-                z9places-2a:
-                    filter:
-                        any:
-                            - { population: { min: 350000, max: 999999 } }
+                                weight: 600
+                later:
+                    filter: { $zoom: { min: 15 } }
                     draw:
                         text-blend-order:
-                            anchor: center
-                            visible: *text_visible_populated_places
-                            priority: 8
                             font:
-                                size: 14px
-                                fill: *text_fill
-                                stroke: { color: *text_stroke, width: 4 }
+                                weight: 600
+    buildings:
+        data: { source: mapzen, layer: buildings }
+        filter:
+            not: { location: underground }
+        # set default footprint and extrusion draw properties, but don't draw by default (rules below will turn visibility on)
+        draw:
+            polygons:
+                visible: false
+                order: 329
+                color: [[14,[0.930,0.940,0.940]],[15,[0.920,0.930,0.930]],[16,[0.930,0.940,0.940]]]
+            lines:
+                style: lines
+                order: 330
+                visible: false
+                color: [[14,[0.750,0.750,0.750]],[17,[0.85, 0.85, 0.85]]]
+                width: [[14, 0px], [15, 0.5px], [16,0.5px], [17,1px], [18, 1.25px]]
 
-                z9places-2b:
-                    filter:
-                        any:
-                            - { population: { min: 150000, max: 350000 } }
-                    draw:
-                        icons:
-                            size: 6px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-m-rev
-                            priority: 11
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 14px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                sprite: capital-m
-                                priority: 9
-#                                text:
-#                                    priority: 10
+        # building footprints, pre-extrusion
+        footprints:
+            filter:
+                any:
+                    # limit show smaller landuse areas to higher zooms
+                    - { $zoom: [13], scale_rank: [1,2] }
+                    - { $zoom: [14], scale_rank: [1,2,3] }
+                    - { $zoom: [15], area: { min: 5000 }, name: true }
+                    - { $zoom: [15], area: { min: 5000 }, kind: true }
+                    - { $zoom: [15], area: { min: 3000 }, landuse_kind: true }
+                    - { $zoom: [15], height: { min: 100 } }
+                    - { $zoom: [15], volume: { min: 100000 } }
+                    - { $zoom: [16], area: { min: 1000 }, name: true }
+                    - { $zoom: [16], area: { min: 1000 }, kind: true }
+                    - { $zoom: [16], area: { min: 2000 }, landuse_kind: true }
+                    - { $zoom: [16], volume: { min: 50000 } }
+                    #- { $zoom: [16], height: { min: 50 } }
+                    - { $zoom: { min: 17 } }
+                all:
+                   - not: { location: underground }
+            draw:
+                polygons:
+                    visible: true
+                lines:
+                    visible: true
 
-                z9places-3:
-                    filter:
-                        any:
-                            - { population: { min: 85000, max: 149999 } }
+            extrude:
+                filter:
+                    all:
+                        - function() { return global.building_extrude; }
+                        - any:
+                            # for the buildings that were visible at zoom 15, extrude those all up a bit at z17
+                            - { $zoom: [16], area: { min: 20000 }, name: true }
+                            - { $zoom: [16], area: { min: 20000 }, kind: true }
+                            - { $zoom: [16], area: { min: 5000 }, landuse_kind: true }
+                            - { $zoom: [16], height: { min: 150 } }
+                            - { $zoom: [16], volume: { min: 150000 } }
+                            - { $zoom: [17], area: { min: 5000 }, name: true }
+                            - { $zoom: [17], area: { min: 5000 }, kind: true }
+                            - { $zoom: [17], area: { min: 3000 }, landuse_kind: true }
+                            - { $zoom: [17], height: { min: 100 } }
+                            - { $zoom: [17], volume: { min: 100000 } }
+                            - { $zoom: { min: 18 } }
+                draw:
+                    polygons:
+                        visible: true
+                        order: 438
+                        style: building-grid
+                        extrude: 100
+                        color: [0.930,0.940,0.940]
+                    lines:
+                        visible: true
+                        order: 439
+                        style: building-lines
+                        extrude: 100
+                z16-default:
+                    filter: { $zoom: [16] }
                     draw:
-                        icons:
-                            size: 6px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-m-rev
-                            priority: 15
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 12px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                sprite: capital-m
-                                priority: 13
-                                text:
-                                    font:
-                                        size: 14px
-
-                z9places-4:
-                    filter:
-                        any:
-                            - { population: { min: 50000, max: 84999 } }
+                        polygons:
+                            extrude: 20
+                        lines:
+                            extrude: 20
+                z18-default:
+                    filter: { $zoom: { min: 18 } }
                     draw:
-                        icons:
-                            size: 5px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-s-rev
-                            priority: 19
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 10px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                sprite: capital-s
-                                priority: 17
-#                                text:
-#                                    priority: 18
-                z9places-5:
+                        polygons:
+                            extrude: 20
+                        lines:
+                            extrude: 20
+                z18-special:
                     filter:
-                        all:
-                            - { population: { max: 50000 } }
                         any:
-                            - { country_capital: true }
-                            - { region_capital: true }
+                            - { $zoom: { min: 18 }, area: { min: 5000 }, name: true }
+                            - { $zoom: { min: 18 }, area: { min: 5000 }, kind: true }
+                            - { $zoom: { min: 18 }, area: { min: 3000 }, landuse_kind: true }
+                            - { $zoom: { min: 18 }, height: { min: 100 } }
+                            - { $zoom: { min: 18 }, volume: { min: 100000 } }
                     draw:
-                        icons:
-                            size: 5px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-s-rev
-                            priority: 19
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 10px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                sprite: capital-s
-                                priority: 17
-#                                text:
-#                                    priority: 18
+                        polygons:
+                            extrude: 100
+                        lines:
+                            extrude: 100
 
-            populated-places-osm-z9-no-population:
-                filter:
-                    all:
-                        - source: [openstreetmap, openstreetmap.org]
-                        - name: true
-                        - population: false
-                        - not: { kind: [country, county, state, island, neighbourhood, suburb, quarter] }
-                        - $zoom: [9]
-                        - kind_detail: [city,town]
+
+        # landuse-specific rules
+        # in_park:
+        #     filter: { landuse_kind: [park,forest,nature_reserve,conservation,golf_course,garden] }
+        #     draw:
+        #         polygons:
+        #             color: [0.864,0.910,0.905]
+
+        #     # golf_course:
+        #     #     filter: { landuse_kind: golf_course }
+        #     #     draw:
+        #     #         polygons:
+        #     #             color: *building2
+        #     # nature_reserve:
+        #     #     filter: { landuse_kind: nature_reserve }
+        #     #     draw:
+        #     #         polygons:
+        #     #             color: *building2
+        #     # conservation:
+        #     #     filter: { landuse_kind: conservation }
+        #     #     draw:
+        #     #         polygons:
+        #     #             color: *building2
+        #     # zoo:
+        #     #     filter: { landuse_kind: zoo }
+        #     #     draw:
+        #     #         polygons:
+        #     #             color: *building2
+        # in_university:
+        #     filter: { landuse_kind: [university,school] }
+        #     draw:
+        #         polygons:
+        #             color: [0.950,0.917,0.883]
+        #         lines:
+        #             color: *brown1_bo
+        # in_hospital:
+        #     filter: { landuse_kind: hospital }
+        #     draw:
+        #         polygons:
+        #             color: [0.976,0.908,0.913]
+        # in_airport:
+        #     filter: { landuse_kind: [aerodrome, runway, taxiway] }
+        #     draw:
+        #         polygons:
+        #             color: *purple_b
+        #         lines:
+        #             color: *purple_bo
+        #             width: [[14,0.5px],[15,0.5px],[17,0.5px],[18,0.75px],[19,0.25m]]
+        # in_retail:
+        #    filter: { landuse_kind: retail }
+        #    draw:
+        #         polygons:
+        #             color: [0.945, 0.898, 0.878]
+
+        transit-overlay-station-buildings:
+            filter:
+                any:
+                    - landuse_kind: [station]
+            draw:
+                polygons:
+                    visible: global.sdk_transit_overlay
+                    color: '#bdadbf'
+                    order: 500
+                    #extrude: function() { return feature.height || 20; }
+                outline:
+                    visible: global.sdk_transit_overlay
+                    style: lines
+                    order: 501
+                    color: '#d534df'
+                    width: [[14,0.1px],[15,0.5px],[17,0.5px],[18,0.75px],[19,0.25m]]
+                    #extrude: function() { return feature.height || 20; }
+
+        buildings-labels:
+            filter:
+                all:
+                    - { $zoom: { min: 17 } }
+                    - $geometry: point
+                    - not: { location: underground, kind: address }
+                    - name: true
+                any:
+                    - { $zoom: [16], area: { min: 5000 } }
+                    - { $zoom: [16], area: { min: 5000 } }
+                    - { $zoom: [16], area: { min: 10000 }, landuse_kind: true }
+                    - { $zoom: [16], area: { min: 7000 }, kind_detail: [university, college, school, kindergarten] }
+                    - { $zoom: [16], volume: { min: 50000 }, name: true }
+                    - { $zoom: [17], area: { min: 3000 } }
+                    - { $zoom: [17], area: { min: 2000 }, kind_detail: [university, college, school, kindergarten] }
+                    - { $zoom: [18], area: { min: 1000 } }
+                    - { $zoom: [18], kind_detail: [university, college, school, kindergarten] }
+                    - { $zoom: [19], area: { min: 200 } }
+                    - { $zoom: { min: 19 }, kind_detail: [university, college, school, kindergarten] }
+                    - { $zoom: { min: 20 }, area: true }
+            draw:
+                text-blend-order:
+                    text_source: global.ux_language_text_source
+                    interactive: global.interactive
+                    move_into_tile: true
+                    priority: 70
+                    visible: *text_visible_building
+                    order: 7
+                    font:
+                        fill: '#666'
+                        family: *text_font_family
+                        style: italic
+                        size: 11px
+                        stroke: { color: *text_stroke_address, width: 1 }
+            building_labels-z15-z16-z17:
+                filter: { $zoom: [15,16,17] }
+                draw: { text-blend-order: { font: { size: 12px, stroke: { width: 2 } } } }
+            building_labels-z18:
+                filter: { $zoom: [18,19] }
+                draw: { text-blend-order: { font: { size: 12px, weight: 600, stroke: { width: 3 } } } }
+            building_labels-z20-up:
+                filter: { $zoom: { min: 20 } }
+                draw: { text-blend-order: { font: { size: 14px, weight: 600, stroke: { width: 3 }  } } }
+            building-labels-z16:
+                filter: function() { if( $zoom == 16 && feature.name.length > 20 ) { return true; } else { return false; } }
                 draw:
-                    icons:
-                        size: 5px
-                        visible: *icon_visible_populated_places
-                        sprite: townspot-s-rev
-                        priority: 21
-                        text:
-                            # anchor: center
-                            visible: *text_visible_populated_places
-                            font:
-                                size: 10px
-                                fill: *text_fill
-                                stroke: { color: *text_stroke, width: 4 }
+                    text-blend-order:
+                        visible: false
+            building-labels-z17:
+                filter: function() { if( $zoom == 17 && feature.name.length > 30 ) { return true; } else { return false; } }
+                draw:
+                    text-blend-order:
+                        visible: false
+            building-labels-z20+:
+                filter: { $zoom: { min: 20 } }
+                draw:
+                    text-blend-order:
+                        text_source: global.ux_language_text_source_building_and_address
+        address-labels:
+            filter:
+                $zoom: { min: 20 }
+                any:
+                    - kind: address
+                    - { label_position: true, addr_housenumber: true, name: false }
+            draw:
+                text-blend-order:
+                    interactive: global.interactive
+                    order: 7
+                    visible: *text_visible_address
+                    text_source: addr_housenumber
+                    font:
+                        fill: *text_fill_address
+                        family: *text_font_family
+                        style: italic
+                        size: 10px
+                        stroke: { color: *text_stroke_address, width: 4 }
 
-            populated-places-natural-earth-z9-backfill:
-                filter: { $zoom: [9], population: { max: 50000 } }
-                draw: { icons: { text: { font: { fill: *text_fill } } } }
-                z9places-1-ne:
-                    filter: { min_zoom: [2,3] }
-                    draw:
-                        icons:
-                            size: 8px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-l-rev
-                            priority: 25
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 17px
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                sprite: capital-l
-                                priority: 23
-#                                text:
-#                                    priority: 24
+    boundaries:
+        data: { source: mapzen, layer: boundaries }
+        draw:
+            lines:
+                order: function() { return (feature.sort_rank + 100); }
+        country:
+            filter:
+                - kind: country
+                - admin_level: 2
+            draw:
+                lines:
+                    color: *country_boundary
+                    width: [[1, 0.5px], [2, 1.0px], [4, 1.5px], [9, 2.5px], [14, 3.5px], [16, 4.5px], [17, 14m]]
+            water:
+                filter: { maritime_boundary: true }
+                draw:
+                    lines:
+                        visible: false
+            labels-z9-up:
+                filter: { name: true, $zoom: { min: 9 }, not: { maritime_boundary: true } }
+                draw:
+                    text-blend-order:
+                        priority: 2
+                        visible: *text_visible_admin
+                        text_source: global.ux_language_text_source_boundary_lines
+                        text_wrap: 100
+                        font:
+                            family: *text_font_family
+                            size: 9px
+                            fill: [0.00,0.00,0.00]
+                            transform: uppercase
 
-                z9places-2-ne:
-                    filter: { min_zoom: [4,5,6] }
-                    draw:
-                        icons:
-                            size: 6px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-m-rev
-                            priority: 29
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 14px
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                sprite: capital-m
-                                priority: 28
-#                                text:
-#                                    priority: 27
+        other_country_boundary_disputed_etc:
+            filter: { kind: [disputed, indefinite, indeterminate, lease_limit, line_of_control, overlay_limit] }
+            draw:
+                dashed:
+                    order: function() { return (feature.sort_rank + 100); }
+                    color: *country_boundary
+                    width: [[1,0.2px],[9,1.5px],[17,10m]]
+            disputed:
+                filter: { kind: [disputed, line_of_control] }
+                draw:
+                    dashed:
+                        visible: false
+                    dashed_big:
+                        order: function() { return (feature.sort_rank + 100); }
+                        color: *country_boundary
+                        width: [[1,0.5px],[9,2.5px],[17,14m]]
 
-                z9places-3-ne:
-                    filter: { min_zoom: [6,7,9] }
-                    draw:
-                        icons:
-                            size: 6px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-m-rev
-                            priority: 33
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 12px
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                sprite: capital-m
-                                priority: 31
-#                                text:
-#                                    priority: 32
+        region:
+            filter:
+                - kind: [region,macroregion]
+                - kind_detail: [3,4]
+            draw:
+                lines:
+                    color: *region_boundary
+                    width: [[0, 0.5px], [2, 1.0px], [5, 1.25px], [6, 1.5px], [7, 1.75px], [9, 2.0px], [14, 4.0px], [16, 5.0px], [17, 10m]]
+            water:
+                filter: { maritime_boundary: true }
+                draw:
+                    lines:
+                        visible: false
+            early:
+                filter: { not: { min_zoom: [1,2] }, $zoom: { max: 8 } }
+                draw:
+                    lines:
+                        visible: false
+            labels-z9-up:
+                filter: { name: true, $zoom: { min: 9 }, not: { maritime_boundary: true } }
+                draw:
+                    text-blend-order:
+                        priority: 3
+                        visible: *text_visible_admin
+                        text_source: global.ux_language_text_source_boundary_lines
+                        text_wrap: 100
+                        #offset: [0px, -7px]
+                        anchor: top
+                        font:
+                            family: *text_font_family
+                            size: 9px
+                            fill: [0.35,0.35,0.35]
+                            transform: uppercase
+        city_walls:
+            filter: { kind: city_wall }
+            draw:
+                lines:
+                    color: *city_wall
+                    width: [[12, 0.75px], [13, 1.0px], [14, 1.2px], [15, 2.0px], [16, 2.5px], [19, 6m]]
+        retaining_wall:
+            filter: { kind: retaining_wall }
+            draw:
+                lines:
+                    color: *retaining_wall
+                    width: [[14, 0.5px], [15, 1.0px], [16, 1.5px], [17, 2.0px], [19, 4m]]
+        snow_fence:
+            filter: { kind: snow_fence }
+            draw:
+                lines:
+                    color: *snow_fence
+                    width: [[14, 0.5px], [15, 1.0px], [16, 1.5px], [17, 2.0px], [19, 1.5m]]
+        fence:
+            filter: { kind: fence }
+            draw:
+                lines:
+                    color: [[14,[0.770,0.765,0.755]],[18,[0.770,0.765,0.755]],[19,[0.841,0.837,0.824]]]
+                    width: [[14, 0.5px], [15, 0.75px], [16, 0.75px], [18, 1.5px], [19, 1m]]
+        dam:
+            filter: { kind: dam }
+            draw:
+                lines:
+                    color: *dam
+                    width: [[14, 0.5px], [15, 1.0px], [16, 1.5px], [17, 2.0px], [19, 1.5m]]
 
-            populated-places-osm-z10:
-                filter:
-                    all:
-                        - source: [openstreetmap, openstreetmap.org]
-                        - name: true
-                        - population: true
-                        - not: { kind: [country, county, state, island, neighbourhood, suburb, quarter] }
-                        - $zoom: [10]
+    places:
+        data: { source: mapzen, layer: places }
+        filter:
+            name: true
+        draw:
+            icons:
+                text:
+                    text_source: global.ux_language_text_source
+                    visible: false
+                    buffer: 3px
+                    font:
+                        family: *text_font_family
+                        fill: *text_fill
+            # NOTE: This is a hack for localities because of an icon & text bug, see note below
+            text-blend-order:
+                text_source: global.ux_language_text_source
+                visible: false    # labels are enabled by each layer below
+                buffer: 3px
+                font:
+                    family: *text_font_family
+                    fill: *text_fill
+            # END NOTE
 
-                z10places-1:
+        country:
+            filter:
+                kind: country
+                $zoom: { min: 2, max: 9 }
+            draw:
+                text-blend-order:
+                    priority: 3
+                    visible: *text_visible_admin
+                    font:
+                        fill: *text_fill
+                        weight: 600
+                        stroke: { color: *text_stroke, width: 4 }
+            country-z2-3:
+                filter:
+                    $zoom: [2,3]
+                draw:
+                    text-blend-order:
+                        font:
+                            priority: 10
+                            buffer: 10px
+                            weight: 200
+                            size: 11px
+                early-ones-z2:
                     filter:
-                        any:
-                            - { population: { min: 1000000 } }
+                        $zoom: [2]
+                        not: { name: [United States of America,Brasil,中华人民共和国,Россия,Canada,Kalaallit Nunaat,Ísland,Australia,India,日本,Guam,Indonesia,South Africa,مصر,Nigeria,Kenya] }
                     draw:
                         text-blend-order:
-                            anchor: center
-                            visible: *text_visible_populated_places
-                            font:
-                                size: 17px
-                                fill: *text_fill
-                                stroke: { color: *text_stroke, width: 4 }
-
-                z10places-2a:
+                            visible: false
+                early-ones-z3:
                     filter:
-                        any:
-                            - { population: { min: 350000, max: 1000000 } }
+                        $zoom: [3]
+                        name: [Nederland,Luxembourg,Liechtenstein,San Marino,Civitatis Vaticanæ,Crna Gora,Македонија,The Gambia,Burundi,Swaziland,الإمارات العربية المتحدة,العراق,Singapore,El Salvador,Belize,Trinidad and Tobago, Saint Lucia, Montserrat,Anguilla,República Dominicana,Bahamas,British Virgin Islands,Antigua and Barbuda,Grenada,Sint Maarten,Saint Kitts and Nevis,Cayman Islands,België - Belgique - Belgien,Deutschland,España]
                     draw:
                         text-blend-order:
-                            anchor: center
-                            visible: *text_visible_populated_places
-                            font:
-                                size: 14px
-                                fill: *text_fill
-                                stroke: { color: *text_stroke, width: 4 }
-
-                z10places-2b:
-                    filter:
-                        any:
-                            - { population: { min: 150000, max: 350000 } }
-                    draw:
-                        icons:
-                            size: 6px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-m-rev
-                            priority: 7
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 14px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-
-                z10places-3:
-                    filter:
-                        any:
-                            - { population: { min: 50000, max: 149999 } }
-                    draw:
-                        icons:
-                            size: 6px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-m-rev
-                            priority: 11
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 12px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-
-                z10places-4:
+                            visible: false
+            country-z4:
+                filter:
+                    $zoom: [4]
+                draw:
+                    text-blend-order:
+                        buffer: 10px
+                        priority: 8
+                        font:
+                            weight: 200
+                            size: 13px
+                early-ones-z4:
                     filter:
-                        any:
-                            - { population: { min: 20000, max: 49999 } }
+                        name: [Nederland,Luxembourg,Liechtenstein,San Marino,Civitatis Vaticanæ,Crna Gora,Македонија,The Gambia,Burundi,Swaziland,الإمارات العربية المتحدة,العراق,Singapore,El Salvador,Belize,Trinidad and Tobago, Saint Lucia, Montserrat,Anguilla,República Dominicana,Bahamas,British Virgin Islands,Antigua and Barbuda,Grenada,Sint Maarten,Saint Kitts and Nevis,Cayman Islands,België - Belgique - Belgien,Deutschland,España,Magyarország,Österreich,Polska,Хуссар Ирыстон,Аҧсны - Абхазия]
                     draw:
-                        icons:
-                            size: 5px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-s-rev
-                            priority: 13
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 10px
-                                    fill: *text_fill
-                                    stroke: { color: *text_stroke, width: 4 }
-
-            populated-places-osm-z10-no-population:
+                        text-blend-order:
+                            visible: false
+            country-z5:
                 filter:
-                    all:
-                        - source: [openstreetmap, openstreetmap.org]
-                        - name: true
-                        - population: false
-                        - not: { kind: [country, county, state, island, neighbourhood, suburb, quarter] }
-                        - $zoom: [10]
-                        - kind_detail: [city,town]
+                    $zoom: [5]
                 draw:
-                    icons:
-                        size: 5px
-                        visible: *icon_visible_populated_places
-                        sprite: townspot-s-rev
-                        priority: 15
-                        text:
-                            # anchor: center
-                            visible: *text_visible_populated_places
-                            font:
-                                size: 10px
-                                fill: *text_fill
-                                stroke: { color: *text_stroke, width: 4 }
-
-            populated-places-natural-earth-z10-backfill:
-                filter: { $zoom: [10], population: { max: 20000 } }
-                draw: { icons: { text: { font: { fill: *text_fill } } } }
-                z10places-1-ne:
-                    filter: { min_zoom: [2,3] }
-                    draw:
-                        icons:
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 17px
-                                    stroke: { color: *text_stroke, width: 4 }
-
-                z10places-2-ne:
-                    filter: { min_zoom: [4,5,6] }
-                    draw:
-                        icons:
-                            size: 6px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-m-rev
-                            priority: 21
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 14px
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                sprite: capital-m
-                                priority: 20
-#                                text:
-#                                    priority: 21
-
-                z10places-3-ne:
-                    filter: { min_zoom: [6,7,9,10] }
+                    text-blend-order:
+                        priority: 8
+                        font:
+                            size: 13px
+                early-ones-z5:
+                    filter:
+                        # South Ossetia and Abkhazia aren't countries (they are disputed areas)
+                        - name: [Luxembourg,Liechtenstein,San Marino,Civitatis Vaticanæ,El Salvador,Belize,België - Belgique - Belgien,"Хуссар Ирыстон - Южная Осетия","Хуссар Ирыстон","Аҧсны - Абхазия","Լեռնային Ղարաբաղի Հանրապետությու (Nagorno-Karabakh Republic)"]
+                        - population: { max: 5000000 }
                     draw:
-                        icons:
-                            size: 5px
-                            visible: *icon_visible_populated_places
-                            sprite: townspot-s-rev
-                            priority: 25
-                            text:
-                                visible: *text_visible_populated_places
-                                font:
-                                    size: 12px
-                                    stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            icons:
-                                size: 7px
-                                sprite: capital-m
-                                priority: 23
-#                                text:
-#                                    priority: 24
-
-            populated-places-osm-z11:
+                        text-blend-order:
+                            visible: false
+            country-z6:
                 filter:
-                    all:
-                        - source: [openstreetmap, openstreetmap.org]
-                        - name: true
-                        - population: true
-                        - not: { kind: [country, county, state, island, neighbourhood, suburb, quarter] }
-                        - $zoom: [11]
-                        - kind_detail: [city,town]
+                    $zoom: [6]
                 draw:
                     text-blend-order:
-                        anchor: center
-
-                z11places-1:
+                        priority: 8
+                        font:
+                            size: 14px
+                small-ones-z6:
                     filter:
-                        any:
-                            - { population: { min: 1000000 } }
+                        # South Ossetia and Abkhazia aren't countries (they are disputed areas)
+                        - name: [Luxembourg,Liechtenstein,San Marino,Civitatis Vaticanæ,België - Belgique - Belgien,"Хуссар Ирыстон - Южная Осетия","Хуссар Ирыстон","Аҧсны - Абхазия","Լեռնային Ղարաբաղի Հանրապետությու (Nagorno-Karabakh Republic)"]
+                        - population: { max: 5000000 }
                     draw:
                         text-blend-order:
-                            visible: *text_visible_populated_places
-                            priority: 5
-                            font:
-                                size: 18px
-                                fill: *text_fill
-                                stroke: { color: *text_stroke, width: 4 }
-
-                z11places-2:
+                            visible: false
+            country-z7:
+                # South Ossetia and Abkhazia aren't countries (they are disputed areas)
+                filter: { $zoom: { min: 7, max: 9 } }
+                draw:
+                    text-blend-order:
+                        font:
+                            size: 16px
+                small-ones-z7:
                     filter:
-                        any:
-                            - { population: { min: 50000, max: 999999 } }
+                        $zoom: [7]
+                        # South Ossetia and Abkhazia aren't countries (they are disputed areas)
+                        name: [Liechtenstein,San Marino,Civitatis Vaticanæ,"Хуссар Ирыстон - Южная Осетия","Хуссар Ирыстон","Аҧсны - Абхазия","Լեռնային Ղարաբաղի Հանրապետությու (Nagorno-Karabakh Republic)"]
                     draw:
                         text-blend-order:
-                            visible: *text_visible_populated_places
-                            priority: 6
-                            font:
-                                size: 14px
-                                fill: *text_fill
-                                stroke: { color: *text_stroke, width: 4 }
-
-                z11places-3:
+                            visible: false
+                small-pop:
                     filter:
-                        any:
-                        - { population: { min: 5000, max: 49999 } }
+                        - population: { max: 5000000 }
                     draw:
                         text-blend-order:
-                            visible: *text_visible_populated_places
-                            priority: 7
+                            priority: 30
                             font:
-                                size: 11px
-                                fill: *text_fill
-                                stroke: { color: *text_stroke, width: 4 }
+                                size: 12px
 
-            populated-places-osm-z11-no-population:
+        region:
+            filter:
+                kind: region
+                $zoom: { min: 4, max: 9 }
+            draw:
+                text-blend-order:
+                    priority: 14
+                    visible: false
+                    font:
+                        size: 11px
+                        weight: normal
+                        fill: [0.5,0.5,0.5,0.5]
+            region-z4:
                 filter:
-                    all:
-                        - source: [openstreetmap, openstreetmap.org]
-                        - name: true
-                        - population: false
-                        - not: { kind: [country, county, state, island, neighbourhood, suburb, quarter] }
-                        - $zoom: [11]
-                        - kind_detail: [city,town]
+                    $zoom: [4]
+                    not: { name: [Western Cape,Eastern Cape,Northern Cape,North West,Limpopo,KwaZulu-Natal,Hamburg,Freie und Hansestadt Hamburg,Neuchâtel,Nordrhein-Westfalen,Haute-Normandie,Baden-Württemberg,Bayern,Sachsen-Anhalt,Berlin,Mecklenburg-Vorpommern,Schleswig-Holstein,Brandenburg,Niedersachsen,Saarland,Thüringen,Hessen,Sachsen] }
                 draw:
                     text-blend-order:
-                        anchor: center
-                        visible: *text_visible_populated_places
-                        priority: 8
+                        visible: *text_visible_admin
+                        text_source: global.ux_language_text_source_short
                         font:
-                            size: 11px
-                            fill: *text_fill
+                            fill: [0.70,0.70,0.70]
                             stroke: { color: *text_stroke, width: 4 }
-
-            populated-places-natural-earth-z11-backfill:
-                filter: { name: true, source: naturalearthdata.com, $zoom: [11], population: { max: 5000 } }
+            region-z5:
+                filter:
+                    $zoom: [5]
+                    not: { name: [Western Cape,Eastern Cape,Northern Cape,North West,Limpopo,KwaZulu-Natal,Hamburg,Freie und Hansestadt Hamburg,Neuchâtel,Nordrhein-Westfalen,Haute-Normandie,Baden-Württemberg,Bayern,Sachsen-Anhalt,Berlin,Mecklenburg-Vorpommern,Schleswig-Holstein,Brandenburg,Niedersachsen,Saarland,Thüringen,Hessen,Sachsen] }
                 draw:
                     text-blend-order:
-                        anchor: center
+                        visible: *text_visible_admin
+                        text_source: global.ux_language_text_source_short
                         font:
-                            fill: *text_fill
-                z11places-1-ne:
-                    filter: { min_zoom: [2,3] }
-                    draw:
-                        text-blend-order:
-                            visible: *text_visible_populated_places
-                            priority: 10
-                            font:
-                                size: 18px
-                                stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            text-blend-order:
-                                priority: 9
-                                font:
-                                    size: 18px
-                                    stroke: { color: *text_stroke, width: 4 }
+                            size: 18px
+                            weight: 200
+                            stroke: { color: *text_stroke, width: 4 }
+            region-z6:
+                filter:
+                    $zoom: [6]
+                    not: { name: [Western Cape,Eastern Cape,Northern Cape,North West,Limpopo,KwaZulu-Natal,Hamburg,Freie und Hansestadt Hamburg,Neuchâtel,Nordrhein-Westfalen,Haute-Normandie,Baden-Württemberg,Bayern,Sachsen-Anhalt,Berlin,Mecklenburg-Vorpommern,Schleswig-Holstein,Brandenburg,Niedersachsen,Saarland,Thüringen,Hessen,Sachsen] }
+                draw:
+                    text-blend-order:
+                        visible: *text_visible_admin
+                        text_source: global.ux_language_text_source_short
+                        font:
+                            size: 21px
+                            weight: 200
+                            transform: uppercase
 
-                z11places-2-ne:
-                    filter: { min_zoom: [4,5,6] }
+            region-z7-z8:
+                filter: { $zoom: [7,8] }
+                draw:
+                    text-blend-order:
+                        visible: *text_visible_admin
+                        text_source: global.ux_language_text_source_short_proxy_name
+                        font:
+                            size: 30px
+                            weight: 200
+                            transform: uppercase
+                pesky:
+                    filter:
+                        $zoom: [7]
+                        name: [Western Cape,Eastern Cape,Northern Cape,North West,Limpopo,KwaZulu-Natal,Hamburg,Freie und Hansestadt Hamburg,Neuchâtel,Nordrhein-Westfalen,Haute-Normandie,Baden-Württemberg,Bayern,Sachsen-Anhalt,Berlin,Mecklenburg-Vorpommern,Schleswig-Holstein,Brandenburg,Niedersachsen,Saarland,Thüringen,Hessen,Sachsen]
                     draw:
                         text-blend-order:
-                            visible: *text_visible_populated_places
-                            priority: 13
-                            font:
-                                size: 14px
-                                stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            text-blend-order:
-                                priority: 11
-                                font:
-                                    size: 14px
-                                    stroke: { color: *text_stroke, width: 4 }
-                    state_capital:
-                        filter: { region_capital: true }
-                        draw:
-                            text-blend-order:
-                                priority: 12
-                                font:
-                                    size: 14px
-                                    stroke: { color: *text_stroke, width: 4 }
+                            visible: false
 
-                z11places-3-ne:
-                    filter: { min_zoom: [6,7,9,10] }
+                abbrev-small-ones-z7:
+                    filter:
+                        $zoom: [7]
+                        name: [Delaware,New Jersey,Connecticut,Rhode Island,Massachusetts,New Hampshire,Vermont]
                     draw:
                         text-blend-order:
-                            visible: *text_visible_populated_places
-                            priority: 15
-                            font:
-                                size: 11px
-                                stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
+                            text_source: global.ux_language_text_source_abbreviation
+                            font: { transform: uppercase }
+                region-z8:
+                    filter:
+                        $zoom: [8]
+                    draw:
+                        text-blend-order:
+                            text_source: global.ux_language_text_source
+                    no-pop:
+                        filter:
+                            any:
+                                - population: false
+                                - population: { max: 1000000 }
                         draw:
                             text-blend-order:
-                                priority: 14
                                 font:
-                                    size: 11px
-                                    stroke: { color: *text_stroke, width: 4 }
+                                    size: 16px
+
+
+        populated-places:
+            filter:
+                kind: locality
+            draw:
+                icons:
+                    visible: *icon_visible_populated_places
+                    size: [[10,4px],[11,0px]]
+                    sprite: townspot-xs-rev
+                    buffer: 8px
+                    priority: 30
+                    text:
+                        visible: *text_visible_populated_places
+                        buffer: 3px
+                        font:
+                            size: [[5,9px],[8,10px],[12,11px]]
+                            stroke: { color: *text_stroke, width: 4 }
+                text-blend-order:
+                    visible: *text_visible_populated_places
+                    buffer: 10px
+                    font:
+                        size: [[5,9px],[8,10px],[12,11px]]
+                        stroke: { color: *text_stroke, width: 4 }
+
+            #
+            # NOTE: you'd think no-townspot would be the way to go, but icons with size 0px seems to have a bug to also hide the text :(
+            #
+            # no-townspot:
+            #     filter: { $zoom: { min: 11 } }
+            #     draw:
+            #         icons:
+            #             size: 0px
+            #             text:
+            #                 anchor: center
+            #
+            # NOTE: So instead we play a shell game with symbolizers per zoom
+            #
+            _icons_later:
+                filter: { $zoom: { min: 11 } }
+                draw:
+                    icons:
+                        visible: false
+                    text-blend-order:
+                        visible: *text_visible_populated_places
+
+            _text_early:
+                filter: { $zoom: { max: 11 } }
+                draw:
+                    text-blend-order:
+                        visible: false
+            # END HACK
+
+            z8-50k-below:
+                filter: { $zoom: [8,9], population: { min: 10000, max: 50000 } }
+                draw:
+                    icons:
+                        buffer: 25px
+                        #color: red
+                        #visible: false
+            z9-10k-below:
+                filter: { $zoom: [8,9], population: { max: 10000 } }
+                draw:
+                    icons:
+                        buffer: 18px
+                        #color: blue
+                        #visible: false
+            z9-no-population:
+                filter: { $zoom: [8,9], population: false }
+                draw:
+                    icons:
+                        buffer: 10px
+                        #color: yellow
+                        #visible: false
 
-            populated-places-osm-z12:
+            sorry-denver:
                 filter:
-                    all:
-                        - source: [openstreetmap, openstreetmap.org]
-                        - name: true
-                        - population: true
-                        - not: { kind: [country, county, state, island, neighbourhood, suburb, quarter] }
-                        - $zoom: [12]
-                        - kind_detail: [city,town]
+                    $zoom: [3]
+                    name: [Denver]
+                draw:
+                    icons:
+                        visible: false
+
+            # HACK
+            # NOTE: These should use icon: buffer instead of going visible: false, but there are problems using icon here :(
+            # This fixes Paris area, but causes problems for small places in the USA eg Table Bluff near Eureka, California.
+            funky-village:
+                filter: { $zoom: [11], population: { max: 1000 }, kind_detail: [village] }
+                draw:
+                    text-blend-order:
+                        visible: false
+            funky-isolated_dwelling:
+                filter: { $zoom: [13], kind_detail: [isolated_dwelling] }
+                draw:
+                    text-blend-order:
+                        visible: false
+            hamlet:
+                filter: { $zoom: [13], kind_detail: hamlet }
                 draw:
                     text-blend-order:
-                        anchor: center
+                        visible: false
+            # END HACK
+
+            # someone in London and Salt Lake City thought neighbourhoods should be tagged place: locality
+            # They were wrong
+            funky-fake-neighbourhoods:
+                filter: { $zoom: { min: 13 }, kind_detail: [locality] }
+                draw:
+                    text-blend-order:
+                        visible: false
 
-                z12places-1:
-                    filter:
-                        any:
-                            - { population: { min: 1000000 } }
 
+            population-10m-up:
+                filter:
+                    population: { min: 10000000 }
+                draw:
+                    icons:
+                        size: [[4,5px],[8,6px],[9,0px]]
+                        sprite: townspot-m-rev
+                        priority: 6
+                        text:
+                            font:
+                                size: [[2,11px],[6,17px],[8,19px],[12,21px],[13,0px]]
+                    text-blend-order:
+                        priority: 6
+                        font:
+                            size: [[2,11px],[6,17px],[8,19px],[12,21x],[13,0px]]
+                capital:
+                    filter: { country_capital: true, $zoom: { min: 5 } }
                     draw:
+                        icons:
+                            size: [[10,8px],[11,0px]]
+                            sprite: capital-l
+                            priority: 5
                         text-blend-order:
-                            visible: *text_visible_populated_places
                             priority: 5
+            population-5m-10m:
+                filter:
+                    population: { min: 5000000, max: 10000000 }
+                draw:
+                    icons:
+                        size: [[4,5px],[8,6px],[9,0px]]
+                        sprite: townspot-m-rev
+                        priority: 7
+                        text:
                             font:
-                                size: 18px
-                                fill: *text_fill
-                                stroke: { color: *text_stroke, width: 4 }
-
-                z12places-2:
-                    filter:
-                        any:
-                            - { population: { min: 50000, max: 999999 } }
+                                size: [[4,10px],[6,16px],[8,18px],[12,20px],[13,0px]]
+                    text-blend-order:
+                        priority: 7
+                        font:
+                            size: [[4,10px],[6,16px],[8,18px],[12,20px],[13,0px]]
+                capital:
+                    filter: { country_capital: true, $zoom: { min: 5 } }
                     draw:
-                        text-blend-order:
-                            visible: *text_visible_populated_places
+                        icons:
+                            size: [[10,8px],[11,0px]]
+                            sprite: capital-l
                             priority: 6
-                            font:
-                                size: 14px
-                                fill: *text_fill
-                                stroke: { color: *text_stroke, width: 4 }
-
-                z12places-3:
-                    filter:
-                        any:
-                        - { population: { min: 5000, max: 49999 } }
-                    draw:
                         text-blend-order:
-                            visible: *text_visible_populated_places
-                            priority: 7
+                            priority: 6
+            population-1m-5m:
+                filter:
+                    population: { min: 1000000, max: 5000000 }
+                draw:
+                    icons:
+                        size: [[4,5px],[8,6px],[9,0px]]
+                        sprite: townspot-m-rev
+                        priority: 9
+                        text:
                             font:
-                                size: 11px
-                                fill: *text_fill
-                                stroke: { color: *text_stroke, width: 4 }
-
-                z12places-4:
-                    filter:
-                        any:
-                        - { population: { max: 5000 } }
+                                size: [[4,10px],[6,16px],[8,18px],[12,20px],[13,0px]]
+                    text-blend-order:
+                        priority: 9
+                        font:
+                            size: [[4,10px],[6,16px],[8,18px],[12,20px],[13,0px]]
+                capital:
+                    filter: { country_capital: true, $zoom: { min: 5 } }
                     draw:
+                        icons:
+                            size: [[10,8px],[11,0px]]
+                            sprite: capital-l
+                            priority: 8
                         text-blend-order:
-                            visible: *text_visible_populated_places
                             priority: 8
-                            font:
-                                size: 11px
-                                fill: *text_fill
-                                stroke: { color: *text_stroke, width: 4 }
-
-            populated-places-osm-z12-no-population:
+            population-500k-1m:
                 filter:
-                    all:
-                        - source: [openstreetmap, openstreetmap.org]
-                        - name: true
-                        - population: false
-                        - not: { kind: [country, county, state, island, neighbourhood, suburb, quarter] }
-                        - $zoom: [12]
-                        - kind_detail: [city,town]
+                    population: { min: 500000, max: 1000000 }
                 draw:
+                    icons:
+                        size: [[8,6px],[9,0px]]
+                        sprite: townspot-m-rev
+                        priority: 11
+                        text:
+                            font:
+                                size: [[5,10px],[8,12px],[10,14px],[12,16px],[13,0px]]
                     text-blend-order:
-                        anchor: center
-                        visible: *text_visible_populated_places
-                        priority: 9
+                        priority: 11
                         font:
-                            size: 11px
-                            fill: *text_fill
-                            stroke: { color: *text_stroke, width: 4 }
-
-            populated-places-natural-earth-z12-backfill:
-                filter: { name: true, source: naturalearthdata.com, $zoom: [12], population: { max: 5000 } }
+                            size: [[5,10px],[8,12px],[10,14px],[12,16px],[13,0px]]
+                capital:
+                    filter: { country_capital: true, $zoom: { min: 5 } }
+                    draw:
+                        icons:
+                            size: [[10,6px],[11,0px]]
+                            sprite: capital-m
+                            priority: 10
+                        text-blend-order:
+                            priority: 10
+            population-200k-500k:
+                filter:
+                    population: { min: 200000, max: 500000 }
                 draw:
+                    icons:
+                        size: [[8,6px],[9,6px],[10,6px],[11,0px]]
+                        sprite: townspot-m-rev
+                        priority: 13
+                        collide: false  #debug
+                        text:
+                            font:
+                                size: [[6,10px],[8,14px],[10,15px],[12,16px],[13,0px]]
                     text-blend-order:
-                        anchor: center
-                        priority: 10
+                        priority: 13
                         font:
-                            fill: *text_fill
-
-                z12places-1-ne:
-                    filter: { min_zoom: [2,3] }
+                            size: [[6,10px],[8,14px],[10,15px],[12,16px],[13,0px]]
+                capital:
+                    filter: { country_capital: true, $zoom: { min: 5 } }
                     draw:
+                        icons:
+                            size: [[10,6px],[11,0px]]
+                            sprite: capital-m
+                            priority: 12
                         text-blend-order:
-                            visible: *text_visible_populated_places
                             priority: 12
+            population-100k-200k:
+                filter:
+                    population: { min: 100000, max: 200000 }
+                draw:
+                    icons:
+                        size: [[8,6px],[9,6px],[10,6px],[11,0px]]
+                        sprite: townspot-m-rev
+                        priority: 15
+                        text:
                             font:
-                                size: 18px
-                                stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            text-blend-order:
-                                priority: 11
-                                font:
-                                    size: 18px
-                                    stroke: { color: *text_stroke, width: 4 }
-
-                z12places-2-ne:
-                    filter: { min_zoom: [4,5,6] }
+                                size: [[6,10px],[8,12px],[14,14px],[15,0px]]
+                    text-blend-order:
+                        priority: 15
+                        font:
+                            size: [[6,10px],[8,12px],[14,14px],[15,0px]]
+                capital:
+                    filter: { country_capital: true, $zoom: { min: 5 } }
                     draw:
+                        icons:
+                            size: [[10,6px],[11,0px]]
+                            sprite: capital-m
+                            priority: 14
                         text-blend-order:
-                            visible: *text_visible_populated_places
                             priority: 14
+            population-50k-100k:
+                filter:
+                    population: { min: 50000, max: 100000 }
+                draw:
+                    icons:
+                        size: [[8,5px],[9,5px],[10,6px],[11,0px]]
+                        sprite: townspot-s-rev
+                        priority: 17
+                        text:
                             font:
-                                size: 14px
-                                stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            text-blend-order:
-                                priority: 13
-                                font:
-                                    size: 14px
-                                    stroke: { color: *text_stroke, width: 4 }
-
-                z12places-3-ne:
-                    filter: { min_zoom: [6,7,9,10] }
+                                size: [[6,10px],[8,12px],[14,14px],[15,0px]]
+                    text-blend-order:
+                        priority: 17
+                        font:
+                            size: [[6,10px],[8,12px],[14,14px],[15,0px]]
+                capital:
+                    filter: { country_capital: true, $zoom: { min: 5 } }
                     draw:
+                        icons:
+                            size: [[10,5px],[11,0px]]
+                            sprite: capital-m
+                            priority: 16
                         text-blend-order:
-                            visible: *text_visible_populated_places
                             priority: 16
-                            font:
-                                size: 11px
-                                stroke: { color: *text_stroke, width: 4 }
-                    capital:
-                        filter: { country_capital: true }
-                        draw:
-                            text-blend-order:
-                                priority: 15
-                                font:
-                                    size: 11px
-                                    stroke: { color: *text_stroke, width: 4 }
-
-            populated-places-osm-z13-z14:
+            population-20k-50k:
                 filter:
-                    all:
-                        - source: [openstreetmap, openstreetmap.org]
-                        - name: true
-                        - population: true
-                        - not: { kind: [country, county, state, island, neighbourhood, suburb, quarter] }
-                        - $zoom: [13,14]
-                        - kind_detail: [city,town]
+                    population: { min: 20000, max: 50000 }
                 draw:
+                    icons:
+                        size: [[8,5px],[9,5px],[10,5px],[11,0px]]
+                        sprite: townspot-s-rev
+                        priority: 19
+                        text:
+                            font:
+                                size: [[9,10px],[14,12px],[15,0px]]
                     text-blend-order:
-                        anchor: center
-                        visible: *text_visible_populated_places
+                        priority: 19
                         font:
-                            weight: 600
-                            fill: *text_fill
-                z14:
-                    filter:
-                        $zoom: [14]
+                            size: [[9,10px],[14,12px],[15,0px]]
+                capital:
+                    filter: { country_capital: true, $zoom: { min: 5 } }
                     draw:
+                        icons:
+                            size: [[10,5px],[11,0px]]
+                            sprite: capital-s
+                            priority: 18
                         text-blend-order:
+                            priority: 18
+            population-10k-20k:
+                filter:
+                    population: { min: 10000, max: 20000 }
+                draw:
+                    icons:
+                        size: [[8,4px],[9,4px],[10,4px],[11,0px]]
+                        sprite: townspot-xs-rev
+                        priority: 21
+                        text:
                             font:
-                                weight: 600
-
-                z13places-1:
-                    filter:
-                        any:
-                            - { population: { min: 200000 } }
-                    draw:
-                        text-blend-order:
-                            visible: false
-
-                z13places-2:
-                    filter:
-                        any:
-                            - { population: { min: 50000, max: 199999 } }
+                                fill: [[9,[0.25,0.25,0.25]],[11,[0.00,0.00,0.00]]]
+                                size: [[9,10px],[14,12px],[15,0px]]
+                    text-blend-order:
+                        priority: 21
+                        font:
+                            fill: [[9,[0.25,0.25,0.25]],[11,[0.00,0.00,0.00]]]
+                            size: [[9,10px],[14,12px],[15,0px]]
+                capital:
+                    filter: { country_capital: true, $zoom: { min: 5 } }
                     draw:
+                        icons:
+                            size: [[10,5px],[11,0px]]
+                            sprite: capital-s
+                            priority: 20
                         text-blend-order:
-                            visible: *text_visible_populated_places
-                            priority: 5
+                            priority: 20
+            population-5k-10k:
+                filter:
+                    population: { min: 5000, max: 10000 }
+                draw:
+                    icons:
+                        size: [[8,4px],[9,4px],[10,4px],[11,0px]]
+                        sprite: townspot-xs-rev
+                        priority: 23
+                        text:
                             font:
-                                size: 14px
-                                stroke: { color: *text_stroke, width: 4 }
-
-                z13places-3:
-                    filter:
-                        any:
-                        - { population: { min: 5000, max: 49999 } }
+                                fill: [[9,[0.25,0.25,0.25]],[11,[0.00,0.00,0.00]]]
+                                size: [[9,10px],[14,12px],[15,0px]]
+                    text-blend-order:
+                        priority: 23
+                        font:
+                            fill: [[9,[0.25,0.25,0.25]],[11,[0.00,0.00,0.00]]]
+                            size: [[9,10px],[14,12px],[15,0px]]
+                capital:
+                    filter: { country_capital: true, $zoom: { min: 5 } }
                     draw:
+                        icons:
+                            size: [[10,5px],[11,0px]]
+                            sprite: capital-s
+                            priority: 22
                         text-blend-order:
-                            visible: *text_visible_populated_places
-                            priority: 6
+                            priority: 22
+            population-2k-5k:
+                filter:
+                    population: { min: 2000, max: 5000 }
+                draw:
+                    icons:
+                        size: [[8,4px],[9,4px],[10,4px],[11,0px]]
+                        sprite: townspot-xs-rev
+                        priority: 25
+                        text:
                             font:
-                                size: 12px
-                                stroke: { color: *text_stroke, width: 4 }
-
-                z13places-4:
-                    filter:
-                        any:
-                            - population: false
-                            - population: true
-                              all:
-                                - population: { max: 5000 }
+                                fill: [[9,[0.25,0.25,0.25]],[11,[0.00,0.00,0.00]]]
+                                size: [[9,10px],[14,12px],[15,0px]]
+                    text-blend-order:
+                        priority: 25
+                        font:
+                            fill: [[9,[0.25,0.25,0.25]],[11,[0.00,0.00,0.00]]]
+                            size: [[9,10px],[14,12px],[15,0px]]
+                capital:
+                    filter: { country_capital: true, $zoom: { min: 5 } }
                     draw:
+                        icons:
+                            size: [[10,5px],[11,0px]]
+                            sprite: capital-s
+                            priority: 24
                         text-blend-order:
-                            font:
-                                size: 12px
-                                stroke: { color: *text_stroke, width: 4 }
-
-            populated-places-osm-z13-z14-no-population:
+                            priority: 24
+            population-1k-2k:
                 filter:
-                    all:
-                        - source: [openstreetmap, openstreetmap.org]
-                        - name: true
-                        - population: false
-                        - not: { kind: [country, county, state, island, neighbourhood, suburb, quarter] }
-                        - $zoom: [13, 14]
-                        - kind_detail: [city,town]
+                    population: { min: 1000, max: 2000 }
                 draw:
+                    icons:
+                        size: [[8,4px],[9,4px],[10,4px],[11,0px]]
+                        sprite: townspot-xs-rev
+                        priority: 27
+                        text:
+                            font:
+                                fill: [[9,[0.25,0.25,0.25]],[11,[0.00,0.00,0.00]]]
+                                size: [[9,10px],[14,12px],[15,0px]]
                     text-blend-order:
-                        anchor: center
-                        visible: *text_visible_populated_places
-                        priority: 7
+                        priority: 27
                         font:
-                            size: 11px
-                            stroke: { color: *text_stroke, width: 4 }
-
-            populated-places-natural-earth-z13-z14-backfill:
-                filter: { name: true, source: naturalearthdata.com, $zoom: [13,14], population: { max: 5000 } }
+                            fill: [[9,[0.25,0.25,0.25]],[11,[0.00,0.00,0.00]]]
+                            size: [[9,10px],[14,12px],[15,0px]]
+                capital:
+                    filter: { country_capital: true, $zoom: { min: 5 } }
+                    draw:
+                        icons:
+                            size: [[10,5px],[11,0px]]
+                            sprite: capital-s
+                            priority: 26
+                        text-blend-order:
+                            priority: 26
+            population-200-1k:
+                filter:
+                    population: { min: 200, max: 1000 }
                 draw:
+                    icons:
+                        size: [[8,4px],[9,4px],[10,4px],[11,0px]]
+                        sprite: townspot-xs-rev
+                        priority: 28
+                        text:
+                            font:
+                                fill: [[9,[0.25,0.25,0.25]],[11,[0.00,0.00,0.00]]]
+                                size: [[9,10px],[14,11px],[15,0px]]
                     text-blend-order:
-                        anchor: center
+                        priority: 28
                         font:
-                            fill: *text_fill
-                            weight: 400
-
-                z13places-1-ne:
-                    filter: { min_zoom: [2,3] }
+                            fill: [[9,[0.25,0.25,0.25]],[11,[0.00,0.00,0.00]]]
+                            size: [[9,10px],[14,11px],[15,0px]]
+                capital:
+                    filter: { country_capital: true, $zoom: { min: 5 } }
                     draw:
+                        icons:
+                            size: [[10,5px],[11,0px]]
+                            sprite: capital-s
+                            priority: 27
                         text-blend-order:
-                            priority: 8
-                            interactive: false
-                            visible: false
+                            priority: 27
 
-                z13places-2-ne:
-                    filter: { min_zoom: [4,5,6] }
-                    draw:
-                        text-blend-order:
-                            priority: 9
-                            visible: *text_visible_populated_places
-                            font:
-                                size: 13px
-                                stroke: { color: *text_stroke, width: 4 }
 
-                z13places-3-ne:
-                    filter: { min_zoom: [6,7,9,10] }
-                    draw:
-                        text-blend-order:
-                            visible: *text_visible_populated_places
-                            priority: 10
-                            font:
-                                size: 12px
-                                stroke: { color: *text_stroke, width: 4 }
         neighbourhoods:
             filter:
-                all:
-                    - name: true
-                    - kind: [macrohood, neighbourhood]
-                    - is_landuse_aoi: false
+                kind:
+                    - macrohood
+                    - neighbourhood
+                    - borough
+                $zoom: { min: 10 }
+                is_landuse_aoi: false
+            draw:
+                text-blend-order:
+                    visible: false
+                    priority: 29
+                    buffer: 8px
+                    text_wrap: 10
+                    max_lines: 2
+                    font:
+                        fill: [0.600,0.600,0.600]
+                        weight: normal
+                        transform: uppercase
+                        stroke: { color: [0.894,0.906,0.914], width: 4 }
             neighborhood-z11:
                 filter:
-                      all:
-                        - $zoom: [11]
-                        - min_zoom: [11]
-                        - max_zoom: { min: 12 }
-                        #- kind_tile_rank: { max: 6 }
+                    $zoom: [11]
+                    min_zoom: [11]
+                    max_zoom: { min: 12 }
+                    #- kind_tile_rank: { max: 6 }
                 draw:
                     text-blend-order:
-                        priority: 18
                         text_wrap: 10
                         visible: *text_visible_neighbourhoods_e
                         font:
                             size: 9px
-                            weight: 400
-                            fill: [0.085,0.658,0.710]
-                            transform: uppercase
-                            stroke: { color: [0.894,0.906,0.914], width: 4 }
             neighborhood-z12:
                 filter:
-                  all:
-                    - $zoom: [12]
-                    - min_zoom: [11,12]
-                    - max_zoom: { min: 13 }
+                    $zoom: [12]
+                    min_zoom: [11,12]
+                    max_zoom: { min: 13 }
                     #- kind_tile_rank: { max: 8 }
                 draw:
                     text-blend-order:
-                        priority: 18
                         text_wrap: 10
                         visible: *text_visible_neighbourhoods_e
                         font:
                             size: 10px
-                            weight: 400
-                            fill: [0.085,0.658,0.710]
-                            transform: uppercase
-                            stroke: { color: [0.894,0.906,0.914], width: 4 }
             neighborhood-z13:
                 filter:
-                  all:
-                    - $zoom: [13]
-                    - min_zoom: [11,12,13]
-                    - max_zoom: { min: 14 }
-                    - kind_tile_rank: { max: 8 }
+                    $zoom: [13]
+                    min_zoom: [11,12,13]
+                    max_zoom: { min: 14 }
+                    kind_tile_rank: { max: 8 }
                 draw:
                     text-blend-order:
-                        priority: 18
                         text_wrap: 10
                         visible: *text_visible_neighbourhoods_e
                         font:
                             size: 12px
-                            weight: 400
-                            fill: [0.085,0.658,0.710]
-                            transform: uppercase
+                            weight: 300
+                            fill: [0.620,0.620,0.620]
                             stroke: { color: [0.904,0.916,0.924], width: 4 }
             neighborhood-z14:
                 filter:
-                  all:
-                    - $zoom: [14]
-                    - min_zoom: [11,12,13,14]
-                    - max_zoom: { min: 15 }
-                    - kind_tile_rank: { max: 8 }
+                    $zoom: [14]
+                    min_zoom: [11,12,13,14]
+                    max_zoom: { min: 15 }
+                    kind_tile_rank: { max: 8 }
                 draw:
                     text-blend-order:
-                        priority: 18
                         text_wrap: 12
                         visible: *text_visible_neighbourhoods
                         font:
-                            size: 15px
+                            size: 16px
                             weight: 300
-                            fill: [0.085,0.658,0.710]
-                            transform: uppercase
+                            fill: [0.600,0.600,0.600]
                             stroke: { color: [0.914,0.926,0.934], width: 5 }
             neighborhood-z15:
                 filter:
-                  all:
-                    - $zoom: [15]
-                    - min_zoom: [11,12,13,14,15]
-                    - max_zoom: { min: 16 }
-                    - kind_tile_rank: { max: 8 }
+                    $zoom: [15]
+                    min_zoom: [11,12,13,14,15]
+                    max_zoom: { min: 16 }
+                    kind_tile_rank: { max: 8 }
                 draw:
                     text-blend-order:
-                        priority: 18
                         text_wrap: 12
                         visible: *text_visible_neighbourhoods
                         font:
-                            size: 18px
-                            weight: 200
-                            fill: [0.085,0.658,0.710]
-                            transform: uppercase
+                            size: 21px
+                            weight: 300
+                            fill: [0.650,0.650,0.650]
                             stroke: { color: [0.949,0.953,0.953], width: 6 }
                 z15-new:
                     filter:
@@ -5684,22 +4365,20 @@ layers:
                                 size: 13px
             neighborhood-z16:
                 filter:
-                  all:
-                    - $zoom: [16]
-                    - min_zoom: [11,12,13,14,15,16]
-                    - max_zoom: { min: 17 }
-                    - kind_tile_rank: { max: 8 }
+                    $zoom: [16]
+                    min_zoom: [11,12,13,14,15,16]
+                    max_zoom: { min: 17 }
+                    kind_tile_rank: { max: 8 }
                 draw:
                     text-blend-order:
-                        priority: 18
                         visible: *text_visible_neighbourhoods
                         font:
-                            size: 20px
+                            size: 24px
                             weight: 300
-                            fill: [0.082,0.780,1.000]
-                            transform: uppercase
+                            fill: [0.00,0.00,0.00,0.50]
                             stroke: { color: [0.949,0.953,0.953], width: 6 }
 
+
     highway-exit:
         data: { source: mapzen, layer: [pois] }
         filter: { kind: motorway_junction, $zoom: { min: 15 } }
@@ -5708,7 +4387,7 @@ layers:
                 visible: false
             text-blend-order:
                 visible: *text_visible_exits
-                interactive: true
+                interactive: global.interactive
                 text_source: ref
                 priority: 52
                 font:
@@ -5729,7 +4408,7 @@ layers:
                 visible: false
             text-blend-order:
                 visible: *text_visible_airport_gate
-                interactive: true
+                interactive: global.interactive
                 text_source: ref
                 font:
                     fill: *text_fill_exits
@@ -5765,15 +4444,15 @@ layers:
         draw:
             icons:
                 size: [[13, 18px], [16, 18px], [18, 22px]]
-                interactive: true
+                interactive: global.interactive
                 visible: false
                 priority: 65
                 repeat_group: abc
                 text:
                     visible: false    # labels are enabled by each layer below
+                    text_source: global.ux_language_text_source
                     move_into_tile: false # preserves text alignment w/icons in JS
                     buffer: 7px
-                    interactive: true
                     font:
                         family: *text_font_family
                         weight: 600
@@ -5783,7 +4462,8 @@ layers:
             text:
                 visible: false    # labels are enabled by each layer below, and these are only for special cases like enclosures
                 move_into_tile: false # preserves text alignment w/icons in JS
-                interactive: true
+                interactive: global.interactive
+                text_source: global.ux_language_text_source
                 font:
                     family: *text_font_family
                     weight: 600
@@ -5827,19 +4507,19 @@ layers:
                         priority: 49
                 baseball:
                     filter: { kind_detail: baseball }
-                    draw: { icons: { sprite: baseball-field } }
+                    draw: { icons: { sprite: baseball } }
                 basketball:
                     filter: { kind_detail: basketball }
-                    draw: { icons: { sprite: basketball-court } }
+                    draw: { icons: { sprite: basketball } }
                 football:
                     filter: { kind_detail: football }
-                    draw: { icons: { sprite: football-stadium } }
+                    draw: { icons: { sprite: football } }
                 hockey:
-                    filter: { kind_detail: hockey-field }
-                    draw: { icons: { sprite: hockey-field } }
+                    filter: { kind_detail: hockey }
+                    draw: { icons: { sprite: hockey } }
                 soccer:
                     filter: { kind_detail: soccer }
-                    draw: { icons: { sprite: soccer-field } }
+                    draw: { icons: { sprite: soccer } }
                 tennis:
                     filter: { kind_detail: tennis }
                     draw: { icons: { sprite: tennis } }
@@ -5856,21 +4536,19 @@ layers:
                     filter: { $zoom: [18] }
                     draw:
                         icons:
-                            # to circle white SMALL
                             color: [0.459,0.765,0.722]
-                            sprite: dot-white
+                            sprite: tree-s
                 z19:
                     filter: { $zoom: [19] }
                     draw:
                         icons:
-                            # to circle white SMALL
                             sprite: tree
             gate:
                 filter: { kind: gate, $zoom: { min: 19 } }
                 draw:
                     icons:
                         # to circle black generic
-                        sprite: dot-black
+                        sprite: gate
                         visible: *icon_visible_poi_landuse_e
                         text:
                             text_source: function() { return 'gate'; }
@@ -5885,20 +4563,20 @@ layers:
                 draw: { icons: { sprite: playground, visible: *icon_visible_poi_landuse_e } }
             picnic_site:
                 filter: { kind: [picnic_site, picnic_table], $zoom: { min: 15 }  }
-                draw: { icons: { sprite: picnic-spot, visible: *icon_visible_poi_landuse_e } }
+                draw: { icons: { sprite: picnic_site, visible: *icon_visible_poi_landuse_e } }
             information:
                 filter: { kind: information, $zoom: { min: 18 }  }
                 draw: { icons: { sprite: information, visible: *icon_visible_poi_landuse_e } }
-            drinking-water:
+            drinking_water:
                 filter: { kind: drinking_water, $zoom: { min: 18 }  }
-                draw: { icons: { sprite: drinking-water, visible: *icon_visible_poi_landuse_e } }
-            traffic-signal:
+                draw: { icons: { sprite: drinking_water, visible: *icon_visible_poi_landuse_e } }
+            traffic_signals:
                 filter: { kind: traffic_signals, $zoom: { min: 18 } }
-                draw:   { icons: { sprite: traffic-signal, visible: *icon_visible_poi_landuse_e } }
-            bicycle-parking:
+                draw:   { icons: { sprite: traffic_signals, visible: *icon_visible_poi_landuse_e } }
+            bicycle_parking:
                 filter: { kind: [bicycle_parking], $zoom: { min: 19 } }
-                draw:   { icons: { sprite: bicycle-parking, visible: *icon_visible_poi_landuse_e } }
-            car-parking:
+                draw:   { icons: { sprite: bicycle_parking, visible: *icon_visible_poi_landuse_e } }
+            parking:
                 filter: { kind: parking, $zoom: { min: 17 } }
                 draw:
                     icons:
@@ -5930,27 +4608,27 @@ layers:
                     icons:
                         sprite: bbq
                         visible: *icon_visible_poi_landuse_e
-            ranger-station:
+            ranger_station:
                 filter: { kind: [ranger_station], $zoom: { min: 15 } }
-                draw:   { icons: { sprite: ranger-station, visible: *icon_visible_poi_landuse_e } }
+                draw:   { icons: { sprite: ranger_station, visible: *icon_visible_poi_landuse_e } }
             trailhead:
                 filter: { kind: [trailhead], $zoom: { min: 15 } }
                 draw:   { icons: { sprite: trailhead, visible: *icon_visible_poi_landuse_e } }
             firepit:
                 filter: { kind: [firepit], $zoom: { min: 15 } }
                 draw:   { icons: { sprite: firepit, visible: *icon_visible_poi_landuse_e } }
-            swimming-area:
+            swimming_area:
                 filter: { kind: [swimming_area], $zoom: { min: 15 } }
-                draw:   { icons: { sprite: swimming-area, visible: *icon_visible_poi_landuse_e } }
+                draw:   { icons: { sprite: swimming_area, visible: *icon_visible_poi_landuse_e } }
             fishing_area:
                 filter: { kind: [fishing_area], $zoom: { min: 15 } }
-                draw:   { icons: { sprite: fishing-area, visible: *icon_visible_poi_landuse_e } }
+                draw:   { icons: { sprite: fishing_area, visible: *icon_visible_poi_landuse_e } }
             slipway:
                 filter: { kind: [slipway], $zoom: { min: 15 } }
                 draw:   { icons: { sprite: slipway, visible: *icon_visible_poi_landuse_e } }
-            hot-spring:
+            hot_spring:
                 filter: { kind: [hot_spring], $zoom: { min: 15 } }
-                draw:   { icons: { sprite: hot-spring, visible: *icon_visible_poi_landuse_e } }
+                draw:   { icons: { sprite: hot_spring, visible: *icon_visible_poi_landuse_e } }
             spring:
                 filter: { kind: [spring], $zoom: { min: 15 } }
                 draw:   { icons: { sprite: spring, visible: *icon_visible_poi_landuse_e } }
@@ -5963,12 +4641,9 @@ layers:
             observatory:
                     filter: { kind: [observatory], $zoom: { min: 14 } }
                     draw:   { icons: { sprite: observatory, visible: *icon_visible_poi_landuse_e } }
-            boat-rental:
-                    filter: { kind: [boat_rental], $zoom: { min: 15 } }
-                    draw:   { icons: { sprite: boat-rental, visible: *icon_visible_poi_landuse_e } }
-            water-tower:
+            water_tower:
                     filter: { kind: [water_tower], $zoom: { min: 15 } }
-                    draw:   { icons: { sprite: water-tower, visible: *icon_visible_poi_landuse_e } }
+                    draw:   { icons: { sprite: water_tower, visible: *icon_visible_poi_landuse_e } }
             battlefield:
                     filter: { kind: [battlefield] }
                     draw:   { icons: { sprite: battlefield, visible: *icon_visible_poi_landuse_e } }
@@ -5982,7 +4657,7 @@ layers:
                             visible: true
                             text_source: ref
             outdoor-needing-icons:
-                filter: { kind: [bicycle_repair_station, life_ring, waste_disposal, watering_place, water_point, lifeguard_tower, power_pole, power_tower, petroleum_well, communications_tower, silo, putin, egress, hazard, put_in_egress, rapid, beacon, cross, water_well, saddle, dune, sinkhole, rock, stone, bicycle_junction, walking_junction, dam, boat_storage, windmill, horse, fire_lookout, fee_station, rest_area] }
+                filter: { kind: [boat_rental, bicycle_repair_station, life_ring, waste_disposal, watering_place, water_point, lifeguard_tower, power_pole, power_tower, petroleum_well, communications_tower, silo, putin, egress, hazard, put_in_egress, rapid, beacon, cross, water_well, saddle, dune, sinkhole, rock, stone, bicycle_junction, walking_junction, dam, boat_storage, windmill, horse, fire_lookout, fee_station, rest_area] }
                 draw:
                     icons:
                         priority: 43
@@ -6054,6 +4729,7 @@ layers:
                             priority: 41
                             text:
                                 visible: *text_visible_landuse_green
+                                text_source: global.ux_language_text_source
                                 font:
                                     style: italic
                                     stroke: { color: *text_stroke_park, width: 4 }
@@ -6252,11 +4928,9 @@ layers:
                 draw:
                     icons:
                         visible: *icon_visible_landuse_green
-                        interactive: true
                         sprite: beach
                         text:
                             visible: *text_visible_landuse_green
-                            interactive: true
             airport:
                 filter:
                     all:
@@ -6283,7 +4957,7 @@ layers:
                         priority: 42
                         text:
                             visible: *text_visible_landuse_green
-                            text_source: function() { if(feature.iata) { return feature.name + ' (' + feature.iata + ')'; } else { return feature.name; } }
+                            text_source: global.ux_language_text_source_iata
                             font:
                                 #fill: [0.10,0.10,0.10]
                                 size: 10px
@@ -6318,7 +4992,7 @@ layers:
                 visible: *label_visible_landuse_green
                 draw:
                     icons:
-                        sprite: college-university
+                        sprite: college
                         visible: *icon_visible_landuse_green
                         priority: 41
                         text:
@@ -6383,7 +5057,7 @@ layers:
                         - { $zoom: { min: 18 } }
                 draw:
                     icons:
-                        sprite: ski-area
+                        sprite: ski
                         visible: *icon_visible_landuse_green
                         priority: 41
                         text:
@@ -6426,7 +5100,7 @@ layers:
                     draw:
                         icons:
                             visible: false
-                            sprite_default: dot-black
+                            sprite_default: enclosure
                         text:
                             text_wrap: 10
                             font:
@@ -6484,7 +5158,6 @@ layers:
                     text:
                         visible: true
                         priority: 44
-                        interactive: true
                         text_wrap: 10
                         font:
                             weight: 400
@@ -6562,12 +5235,12 @@ layers:
                         icons:
                             visible: false
                             text: { font: { style: italic } }
-                burial_vault-early:
-                    filter: { kind: [burial_vault], $zoom: { max: 19 } }
-                    draw:
-                        icons:
-                            visible: false
-                            text:  { visible: false }
+                burial_vault-early:
+                    filter: { kind: [burial_vault], $zoom: { max: 19 } }
+                    draw:
+                        icons:
+                            visible: false
+                            text:  { visible: false }
                 garden-area-early:
                    filter:
                        all:
@@ -6789,12 +5462,12 @@ layers:
                             font:
                                 style: italic
             station-train-subway:
-                filter: { kind: [station, train-station, train_station], $zoom: { min: 11 } }
+                filter: { kind: [station, train_station], $zoom: { min: 11 } }
                 visible: *label_visible_station
                 draw:
                     icons:
                         visible: *icon_visible_station
-                        sprite: train-station
+                        sprite: train_station
                         size: [[13, 12px], [14, 12px], [15, 16px], [17, 18px], [18, 20px]]
                         priority: 41
                         text:
@@ -6859,7 +5532,6 @@ layers:
                     text:
                         visible: false
                         priority: 45
-                        interactive: true
                         text_wrap: 10
                         font:
                             weight: 400
@@ -6914,7 +5586,7 @@ layers:
                         visible: false
                         text:  { visible: false }
             outdoor-needing-icons:
-                filter: { kind: [bicycle_repair_station, cycle_barrier, life_ring, waste_disposal, watering_place, water_point, lifeguard_tower, power_pole, power_tower, petroleum_well, communications_tower, putin, egress, hazard, put_in_egress, rapid, beacon, cross, mineshaft, adit, water_well, saddle, dune, sinkhole, rock, stone, bicycle_junction, walking_junction, dam, boat_storage, windmill, fishing, recreation_track, horse, fire_lookout, fee_station, rest_area] }
+                filter: { kind: [boat_rental,bicycle_repair_station, cycle_barrier, life_ring, waste_disposal, watering_place, water_point, lifeguard_tower, power_pole, power_tower, petroleum_well, communications_tower, putin, egress, hazard, put_in_egress, rapid, beacon, cross, mineshaft, adit, water_well, saddle, dune, sinkhole, rock, stone, bicycle_junction, walking_junction, dam, boat_storage, windmill, fishing, recreation_track, horse, fire_lookout, fee_station, rest_area] }
                 draw:
                     icons:
                         order: 41
@@ -6961,66 +5633,6 @@ layers:
                         font:
                             style: italic
             icons:
-                adult-boutique:
-                    filter: { kind: [erotic, adult_boutique] }
-                    draw:   { icons: { sprite: adult-boutique } }
-                allotments:
-                    filter: { kind: [allotments] }
-                    draw:   { icons: { sprite: allotments } }
-                airport:
-                    filter: { kind: [airport, aerodrome] }
-                    draw:   { icons: { sprite: airport } }
-                animal-shelter:
-                    filter: { kind: [animal_shelter, animal-shelter, animal_boarding] }
-                    draw:   { icons: { sprite: animal-shelter } }
-                antique-shop:
-                    filter: { kind: [antiques, antique-shop] }
-                    draw:   { icons: { sprite: antique-shop } }
-                art-gallery:
-                    filter: { kind: [art_gallery, art-gallery, art, artwork] }
-                    draw:   { icons: { sprite: art-gallery } }
-                athletics-sports:
-                    filter: { kind: [athletic_sports, recreation_ground, sports_centre] }
-                    draw:   { icons: { sprite: athletics-sports } }
-                automotive-shop:
-                    filter: { kind: [car_repair, automotive-shop, automotive, tyres] }
-                    draw:   { icons: { sprite: automotive-shop } }
-                bbq:
-                    filter: { kind: [bbq] }
-                    draw:   { icons: { sprite: bbq } }
-                bakery:
-                    filter: { kind: [bakery, pastry, chocolate] }
-                    draw:   { icons: { sprite: bakery } }
-                bar:
-                    filter: { kind: [pub, bar] }
-                    draw:   { icons: { sprite: bar } }
-                beach-resort:
-                    filter: { kind: [beach_resort] }
-                    draw:   { icons: { sprite: beach-resort } }
-                beer-garden:
-                    filter: { kind: [biergarten, beer-garden, brewery] }
-                    draw:   { icons: { sprite: beer-garden } }
-                bike-shop:
-                    filter: { kind: [bicycle, bicycle_rental, bike, bike_shop, bicycle_rental_station] }
-                    draw:   { icons: { sprite: bike-shop } }
-                bicycle-parking:
-                    filter: { kind: [bicycle_parking] }
-                    draw:   { icons: { sprite: bicycle-parking } }
-                boat-ferry:
-                    filter: { kind: [ferry_terminal, boat-ferry, ferry-boat, ferry] }
-                    draw:   { icons: { sprite: boat-ferry } }
-                boat-ramp:
-                    filter: { kind: [boat-ramp, boat_ramp] }
-                    draw:   { icons: { sprite: boat-ramp } }
-                bookstore:
-                    filter: { kind: [books, bookstore] }
-                    draw:   { icons: { sprite: bookstore } }
-                bowling-alley:
-                    filter: { kind: [bowling_alley, bowling-alley] }
-                    draw:   { icons: { sprite: bowling-alley } }
-                bridal-shop:
-                    filter: { kind: [bridal, bridal-shop] }
-                    draw:   { icons: { sprite: bridal-shop } }
                 building-icon:
                     filter: { kind: [building, auditorium, terminal, hangar, retirement_home, manor, recreation_center, apartments] }
                     draw:   { icons: { sprite: building } }
@@ -7037,390 +5649,33 @@ layers:
                                visible: false
                                text:
                                    visible: false
-                burger:
-                    filter: { kind: [fast_food, burger] }
-                    draw:   { icons: { sprite: burger } }
-                bus-station:
-                    filter: { kind: [bus_stop, bus_station] }
-                    draw:   { icons: { sprite: bus-station } }
-                camera-store:
-                    filter: { kind: [camera, camera-store, photo] }
-                    draw:   { icons: { sprite: camera-store } }
-                campground:
-                    filter: { kind: [campground, camp_site] }
-                    draw:   { icons: { sprite: campground } }
-                candy-store:
-                    filter: { kind: [candy, candy-store, confectionery] }
-                    draw:   { icons: { sprite: candy-store } }
-                caravan-site:
-                    filter: { kind: [caravan_site] }
-                    draw:   { icons: { sprite: caravan-site } }
-                car-dealership:
-                    filter: { kind: [car, car-dealership] }
-                    draw:   { icons: { sprite: car-dealership } }
-                car-wash:
-                    filter: { kind: [car_wash, car-wash] }
-                    draw:   { icons: { sprite: car-wash } }
-                castle:
-                    filter: { kind: [castle, fort] }
-                    draw:   { icons: { sprite: castle } }
-                cemetery:
-                    filter: { kind: [grave_yard, cemetery] }
-                    draw:   { icons: { sprite: cemetery } }
-                cheese-shop:
-                    filter: { kind: [cheese, cheese-shop] }
-                    draw:   { icons: { sprite: cheese-shop } }
-                clothing-store:
-                    filter: { kind: [clothes, chothing-store, "clothes store", fashion] }
-                    draw:   { icons: { sprite: clothing-store } }
-                coffee-shop:
-                    filter: { kind: [cafe, coffee-shop] }
-                    draw:   { icons: { sprite: coffee-shop } }
-                college-university:
-                    filter: { kind: [university, college, college-university], area: false }
-                    draw:   { icons: { sprite: college-university } }
-                commercial:
-                    filter: { kind: [commercial] }
-                    draw:   { icons: { sprite: mall } }
-                concert-hall:
-                    filter: { kind: [music_venue] }
-                    draw:   { icons: { sprite: concert-hall } }
-                convenience-store:
-                    filter: { kind: [convenience, convenience-store, convenience_store, beverages] }
-                    draw:   { icons: { sprite: convenience-store } }
-                cosmetics-shop:
-                    filter: { kind: [cosmetics, cosmetics-shop, beauty] }
-                    draw:   { icons: { sprite: cosmetics-shop } }
+                college:
+                    filter: { kind: [university, college], area: false }
+                    draw:   { icons: { sprite: college } }
                 dam:
                     filter: { kind: [dam] }
-                    draw:   { icons: { sprite: dot-black } }
-                department-store:
-                    filter: { kind: [department_store, department-store] }
-                    draw:   { icons: { sprite: department-store } }
-                doctors:
-                    filter: { kind: [doctors, clinic] }
-                    draw:   { icons: { sprite: doctors } }
-                dog-park:
-                    filter: { kind: [dog_park, dog_run, dog-run] }
-                    draw:   { icons: { sprite: dog-park } }
-                drinking-water:
-                    filter: { kind: drinking_water }
-                    draw: { icons: { sprite: drinking-water } }
-                dry-cleaning:
-                    filter: { kind: [dry_cleaning] }
-                    draw:   { icons: { sprite: dry-cleaning } }
-                electronics-store:
-                    filter: { kind: [electronics, electronics-store, computer] }
-                    draw:   { icons: { sprite: electronics-store } }
-                factory:
-                    filter: { kind: [factory, industrial, chimney, sub_station, substation, wastewater_plant, works, water_works, plant, generator] }
-                    draw:   { icons: { sprite: factory } }
-                farmers-market:
-                    filter: { kind: [farmers_market, farmers-market] }
-                    draw:   { icons: { sprite: farmers-market } }
-                fire-station:
-                    filter: { kind: [fire_station, fire-station] }
-                    draw:   { icons: { sprite: fire-station } }
-                fish-market:
-                    filter: { kind: [fish, fish-market, seafood, fishmonger] }
-                    draw:   { icons: { sprite: fish-market } }
-                fishing-area:
-                    filter: { kind: [fishing_area, fishing-spot, fishing] }
-                    draw:   { icons: { sprite: fishing-area } }
-                fitness:
-                    filter: { kind: [gym, fitness, fitness_center] }
-                    draw:   { icons: { sprite: fitness } }
-                flea-market:
-                    filter: { kind: [flea_market, flea-market] }
-                    draw:   { icons: { sprite: flea-market } }
-                flower-shop:
-                    filter: { kind: [florist, flower-shop] }
-                    draw: { icons: { sprite: flower-shop } }
-                forest:
-                    filter: { kind: [forest, conservation, wood] }
-                    draw:   { icons: { sprite: forest } }
-                furniture-store:
-                    filter: { kind: [furniture, furniture-store] }
-                    draw:   { icons: { sprite: furniture-store } }
-                garden-center:
-                    filter: { kind: [garden_centre, garden_center] }
-                    draw:   { icons: { sprite: garden-center } }
-                gas:
-                    filter: { kind: [gas, gas_canister] }
-                    draw:   { icons: { sprite: gas } }
-                gas-station:
-                    filter: { kind: [fuel, gas-station] }
-                    draw:   { icons: { sprite: gas-station } }
-                general-entertainment:
-                    filter: { kind: [ticket, general_entertainment] }
-                    draw:   { icons: { sprite: general-entertainment } }
-                generic:
-                    filter: { kind: [generic] }
-                    draw:   { icons: { sprite: generic } }
-                gift-shop:
-                    filter: { kind: [gift, gift-shop] }
-                    draw:   { icons: { sprite: gift-shop } }
-                golf-course:
-                    filter: { kind: [golf-course, golf_course] }
-                    draw:   { icons: { sprite: golf-course } }
-                government-building:
-                    filter: { kind: [townhall, public_building, embassy] }
-                    draw:   { icons: { sprite: government-building } }
-                grocery-store:
-                    filter: { kind: [supermarket, grocery-store, health_food, greengrocer] }
-                    draw:   { icons: { sprite: grocery-store } }
-                harbor-marina:
-                    filter: { kind: [marina, harbor, harbor-marina, harbor_marina, dock, mooring] }
-                    draw:   { icons: { sprite: harbor-marina } }
+                    draw:   { icons: { sprite: dam } }
                 hardware-store:
                     filter: { kind: [hardware, hardware-store, doityourself, paint] }
                     draw:   { icons: { sprite: hardware-store } }
                 hotel:
                     filter: { kind: [hotel, motel, hostel] }
                     draw:   { icons: { sprite: hotel } }
-                hot_spring:
-                    filter: { kind: [hot_spring] }
-                    draw:   { icons: { sprite: hot-spring } }
-                hunting:
-                    filter: { kind: [hunting] }
-                    draw:   { icons: { sprite: hunting } }
-                ice-cream-shop:
-                    filter: { kind: [ice_cream] }
-                    draw:   { icons: { sprite: ice-cream-shop } }
-                information:
-                    filter: { kind: [info, information] }
-                    draw:   { icons: { sprite: information } }
-                jewelry-store:
-                    filter: { kind: [jewelry, jewelry_store, jewelry-store] }
-                    draw:   { icons: { sprite: jewelry-store } }
                 landmark:
                     filter: { kind: [landmark, memorial, monument, wayside_shrine, beacon] }
                     draw:   { icons: { sprite: landmark } }
                 tower:
                     filter: { kind: [tower], label_placement: false }
                     draw:   { icons: { sprite: landmark } }
-                laundry:
-                    filter: { kind: [laundry] }
-                    draw:   { icons: { sprite: laundry } }
-                light-rail:
-                    filter: { kind: [light-rail, light_rail, tram_stop] }
-                    draw:   { icons: { sprite: light-rail } }
-                liquor-store:
-                    filter: { kind: [alcohol, liquor-store, liquor] }
-                    draw:   { icons: { sprite: liquor-store } }
-                market:
-                    filter: { kind: [market, variety_store, boutique, dairy, retail] }
-                    draw:   { icons: { sprite: market } }
-                mine:
-                    filter: { kind: [mine, mineshaft, adit] }
-                    draw:   { icons: { sprite: mine } }
-                quarry:
-                    filter: { kind: [quarry] }
-                    draw:   { icons: { sprite: quarry } }
-                miscellaneous-shop:
-                    filter: { kind: [houseware, miscellaneous-shop] }
-                    draw:   { icons: { sprite: miscellaneous-shop } }
-                mobile-phone-shop:
-                    filter: { kind: [mobile_phone] }
-                    draw:   { icons: { sprite: mobile-phone-shop } }
-                motorcycle-shop:
-                    filter: { kind: [motorcycle_shop, motorcycle_repair] }
-                    draw:   { icons: { sprite: motorcycle-shop } }
-                motorcycle:
-                    filter: { kind: [motorcycle] }
-                    draw:   { icons: { sprite: motorcycle } }
-                mountain:
-                    filter: { kind: [mountain, peak] }
-                    draw:   { icons: { sprite: mountain } }
-                movie-theatre:
-                    filter: { kind: [cinema, movie-theatre, movie-theater] }
-                    draw:   { icons: { sprite: movie-theatre } }
-                museum:
-                    filter: { kind: [museum] }
-                    draw:   { icons: { sprite: museum } }
-                music-store:
-                    filter: { kind: [music, music-store, musical_instrument] }
-                    draw:   { icons: { sprite: music-store } }
-                newsstand:
-                    filter: { kind: [kiosk, newsstand, newsagent] }
-                    draw:   { icons: { sprite: newsstand } }
-                nightlife:
-                    filter: { kind: [nightclub, nightlife] }
-                    draw:   { icons: { sprite: nightlife } }
-                office:
-                    filter: { kind: [insurance, office, company] }
-                    draw:   { icons: { sprite: office } }
-                office-supplies:
-                    filter: { kind: [office_supplies, office-supplies, stationery] }
-                    draw:   { icons: { sprite: office-supplies } }
-                optical-shop:
-                    filter: { kind: [optician, optical_shop, optical-shop] }
-                    draw:   { icons: { sprite: optical-shop } }
-                outdoor:
-                    filter: { kind: [outdoor] }
-                    draw:   { icons: { sprite: outdoor } }
-                performing-arts:
-                    filter: { kind: [theater, theatre, performing-arts] }
-                    draw:   { icons: { sprite: performing-arts } }
-                pet-store:
-                    filter: { kind: [pet, pet-store, pet-service, pet_store] }
-                    draw:   { icons: { sprite: pet-store } }
-                pharmacy:
-                    filter: { kind: [pharmacy, chemist] }
-                    draw:   { icons: { sprite: pharmacy } }
-                photography-lab:
-                    filter: { kind: [photo_studio, photography_lab, photographer] }
-                    draw:   { icons: { sprite: photography-lab } }
-                picnic-spot:
-                    filter: { kind: [picnic_site, picnic_spot, picnic-spot, picnic_table] }
-                    draw:   { icons: { sprite: picnic-spot } }
-                pool:
-                    filter: { kind: [pool, swimming_pool] }
-                    draw:   { icons: { sprite: pool } }
-                pool-hall:
-                    filter: { kind: [billiards, pool-hall] }
-                    draw:   { icons: { sprite: pool-hall } }
-                post-office:
-                    filter: { kind: [post_office, post-office] }
-                    draw:   { icons: { sprite: post-office } }
-                power-pylon:
-                    filter: { kind: [tower, power-pylon, pylon] }
-                    draw:   { icons: { sprite: power-pylon } }
-                ranger-station:
-                    filter: { kind: [ranger_station] }
-                    draw:   { icons: { sprite: ranger-station } }
-                real-estate:
-                    filter: { kind: [estate_agent, real_estate] }
-                    draw:   { icons: { sprite: real-estate } }
-                recreation-track:
-                    filter: { kind: [recreation_track] }
-                    draw:   { icons: { sprite: recreation-track } }
-                recycling-facility:
-                    filter: { kind: [recycling, recycling-facility] }
-                    draw:   { icons: { sprite: recycling-facility } }
-                rental-car:
-                    filter: { kind: [rental-car, car_rental, car_sharing] }
-                    draw:   { icons: { sprite: rental-car } }
-                rest-area:
-                    filter: { kind: [rest_area, rest-area] }
-                    draw:   { icons: { sprite: rest-area } }
-                restaurant:
-                    filter: { kind: [restaurant, deli] }
-                    draw:   { icons: { sprite: restaurant } }
-                ruin:
-                    filter: { kind: [ruins, archaeological_site] }
-                    draw:   { icons: { sprite: ruin } }
-                salon-barber:
-                    filter: { kind: [hairdresser, salon-barber, salon, beauty_salon] }
-                    draw:   { icons: { sprite: salon-barber } }
-                scuba-diving:
-                    filter: { kind: [scuba_diving,dive_centre] }
-                    draw:   { icons: { sprite: scuba-diving } }
-                ship-wreck:
-                    filter: { kind: [wreck] }
-                    draw:   { icons: { sprite: ship-wreck } }
-                shoe-store:
-                    filter: { kind: [shoes, shoe-store, shoe_store] }
-                    draw:   { icons: { sprite: shoe-store } }
-                slipway:
-                    filter: { kind: [slipway] }
-                    draw:   { icons: { sprite: slipway } }
-                smoke-shop:
-                    filter: { kind: [smoke_shop, tobacco] }
-                    draw:   { icons: { sprite: smoke-shop } }
-                spa-massage:
-                    filter: { kind: [spa, spa-massage, sauna, massage] }
-                    draw:   { icons: { sprite: spa-massage } }
                 # prefix with "a-" here to allow Tangram to sort the generic style 1st, allowing more specific religion tags to win later
-                a-spiritual-center:
+                place_of_worship:
                     filter:
                         all:
-                            - kind: [spiritual_center, spiritual-center, place_of_worship, wayside_chapel]
-                    draw:   { icons: { sprite: spiritual-center } }
-                church:
-                    filter: { kind: [spiritual_center, spiritual-center, place_of_worship, wayside_chapel], religion: christian }
-                    draw:   { icons: { sprite: church } }
-                synagogue:
-                    filter: { kind: [spiritual_center, spiritual-center, place_of_worship, wayside_chapel], religion: jewish }
-                    draw:   { icons: { sprite: synagogue } }
-                buddhist:
-                    filter: { kind: [spiritual_center, spiritual-center, place_of_worship, wayside_chapel], religion: buddhist }
-                    draw:   { icons: { sprite: buddhism } }
-                mosque:
-                    filter: { kind: [spiritual_center, spiritual-center, place_of_worship, wayside_chapel], religion: muslim }
-                    draw:   { icons: { sprite: mosque } }
-                sporting-goods-shop:
-                    filter: { kind: [sporting_goods, sporting-goods-shop, sports] }
-                    draw:   { icons: { sprite: sporting-goods-shop } }
-                stable:
-                    filter: { kind: [stable, horse_riding, horse] }
-                    draw:   { icons: { sprite: stable } }
-                storage-facility:
-                    filter: { kind: [storage, storage-facility] }
-                    draw:   { icons: { sprite: storage-facility } }
-                subway-entrance:
-                    filter: { kind: [subway_entrance] }
-                    draw:   { icons: { sprite: subway-entrance } }
-                summer-camp:
-                    filter: { kind: [summer_camp] }
-                    draw:   { icons: { sprite: summer-camp } }
-                tailor-shop:
-                    filter: { kind: [tailor, tailor-shop] }
-                    draw:   { icons: { sprite: tailor-shop } }
-                tattoo-parlor:
-                    filter: { kind: [tattoo, tattoo_parlor, tattoo-parlor] }
-                    draw:   { icons: { sprite: tattoo-parlor } }
-                telescope:
-                    filter: { kind: [telescope] }
-                    draw:   { icons: { sprite: telescope } }
-                theme-park:
-                    filter: { kind: [theme_park, theme-park, miniature_golf] }
-                    draw:   { icons: { sprite: theme-park } }
-                thrift-vintage-store:
-                    filter: { kind: [thrift, thrift-vintage-store, second_hand] }
-                    draw:   { icons: { sprite: thrift-vintage-store } }
-                toll-booth:
-                    filter: { kind: [toll_booth, checkpoint, border_control] }
-                    draw:   { icons: { sprite: toll-booth } }
-                toy-game-store:
-                    filter: { kind: [toys, toy-game-store, baby_goods] }
-                    draw:   { icons: { sprite: toy-game-store } }
-                toilets:
-                    filter: { kind: [toilets] }
-                    draw:   { icons: { sprite: toilets } }
-                trailhead:
-                    filter: { kind: [trailhead, hiking_trail] }
-                    draw:   { icons: { sprite: trailhead } }
-                veterinarian:
-                    filter: { kind: [pet_care, veterinarian, veterinary] }
-                    draw:   { icons: { sprite: veterinarian } }
-                video-game-store:
-                    filter: { kind: [video_games] }
-                    draw:   { icons: { sprite: video-game-store } }
-                video-store:
-                    filter: { kind: [video, video_store] }
-                    draw:   { icons: { sprite: video-store } }
-                view-point:
-                    filter: { kind: [viewpoint, view_point, view-point, vista] }
-                    draw:   { icons: { sprite: view-point } }
-                waterfall:
-                    filter: { kind: [waterfall] }
-                    draw:   { icons: { sprite: waterfall } }
-                waterpark:
-                    filter: { kind: [water_park] }
-                    draw:   { icons: { sprite: waterpark } }
-                well:
-                    filter: { kind: [well, water_well] }
-                    draw:   { icons: { sprite: well } }
-                wine-shop:
-                    filter: { kind: [wine, wine-shop] }
-                    draw:   { icons: { sprite: wine-shop } }
-                winery:
-                    filter: { kind: [winery, wine] }
-                    draw:   { icons: { sprite: winery } }
-                winter_sport:
-                    filter: { kind: [ski, ski_rental, ski_school, ski_jumping, skiing] }
-                    draw:   { icons: { sprite: ski-area } }
+                            - kind: [place_of_worship, wayside_chapel]
+                    draw:
+                        icons:
+                            sprite: function() { return feature.religion; }
+                            sprite_default: place_of_worship
     water-area-labels:
         data: { source: mapzen, layer: [water] }
         visible: *text_visible_water_labels
@@ -7449,6 +5704,7 @@ layers:
         default-label-text:
             draw:
                 text-blend-order:
+                    text_source: global.ux_language_text_source
                     font:
                         fill: *text_fill_water
                         family: *text_font_family
@@ -7475,99 +5731,76 @@ layers:
         filter: { name: true, kind: [sea, ocean] }
         draw:
             text-blend-order:
+                text_source: global.ux_language_text_source
                 font:
                     fill: *text_fill_water
                     family: *text_font_family
-                    weight: 400
+                    weight: normal
                     size: 12px
                     transform: uppercase
-        sea-early:
-            filter: { $zoom: [3], kind: sea }
-            draw: { text-blend-order: { visible: false } }
         ocean-spacer:
             filter: { kind: ocean }
             ocean-spacer-z1-z4:
                 filter: { $zoom: { min: 1, max: 4 } }
                 draw:
                     text-blend-order:
-                        text_source: function() { return feature.name.split('').join(' ') }
+                        text_source: global.ux_language_text_source_sea
                         text_wrap: false
             ocean-spacer-z4-up:
                 filter: { $zoom: { min: 4 } }
                 draw:
                     text-blend-order:
-                        text_source: function() { return feature.name.split('').join('  ') }
+                        text_source: global.ux_language_text_source_ocean
                         text_wrap: false
-        ocean-labels-z1:
-            filter: { $zoom: [1] }
-            draw:
-                text-blend-order: { font: { size: 8px } }
-        ocean-labels-z2:
-            filter: { $zoom: [2] }
-            draw:
-                text-blend-order: { font: { size: 10px } }
-        ocean-labels-z3:
-            filter: { $zoom: [3] }
+        ocean-labels:
             draw:
-                text-blend-order: { font: { size: 13px } }
-        ocean-labels-z4-up:
-            filter: { $zoom: { min: 4} }
-            draw:
-                text-blend-order: { font: { size: 16px } }
+                text-blend-order:
+                    font:
+                        size: [[1,8px],[2,10px],[3,13px],[4,16px]]
 
+        sea-early:
+            filter: { $zoom: [3], kind: sea }
+            draw: { text-blend-order: { visible: false } }
         sea-spacer:
             filter: { not: { kind: [ocean] }, $zoom: { min: 4 } }
             draw:
                 text-blend-order:
-                    text_source: function() { return feature.name.split('').join(' ') }
+                    text_source: global.ux_language_text_source_sea
                     text_wrap: false
 
         sea-labels:
             filter: { not: { kind: [ocean] } }
-            sea-labels-z4:
-                filter: { $zoom: [4] }
-                draw:
-                    text-blend-order: { font: { size: 8px, fill: [0.250,0.250,0.250] } }
-            sea-labels-z5:
-                filter: { $zoom: [5] }
-                draw:
-                    text-blend-order: { font: { size: 10px } }
-            sea-labels-z6:
-                filter: { $zoom: [6] }
-                draw:
-                    text-blend-order: { font: { size: 11px } }
-            sea-labels-z7:
-                filter: { $zoom: [7] }
-                draw:
-                    text-blend-order: { font: { size: 12px } }
-            sea-labels-z8:
-                filter: { $zoom: { min: 8} }
-                draw:
-                    text-blend-order: { font: { size: 14px } }
+            draw:
+                text-blend-order:
+                    font:
+                        fill: [0.350,0.350,0.350]
+                        size: [[4,8px],[6,11px],[8,14px]]
 
     earth-labels:
         data: { source: mapzen, layer: earth }
         filter: { name: true }
+        draw:
+            text-blend-order:
+                text_source: global.ux_language_text_source
         continent:
-            filter: { name: true, kind: [continent], $zoom: {max: 5} }
+            filter: { kind: [continent], $zoom: {max: 5} }
             draw:
                 text-blend-order:
                     visible: *text_visible_continent
+                    text_source: global.ux_language_text_source_continent_stacked_only
+                    text_wrap: false
                     font:
-                        size: 14px
+                        family: *text_font_family
+                        size: [[1,11px],[3,14px]]
                         style: italic
                         fill: *text_fill
-                        weight: 600
-                        # stroke: { color: *text_stroke, width: 4 }
+                        weight: normal
                         transform: uppercase
-        continent-spacer:
-            filter: { kind: continent }
-            continent-spacer-z1-z5:
-                filter: { $zoom: { min: 1, max: 5 } }
+            continent-spacer:
+                filter: { $zoom: { min: 2 } }
                 draw:
                     text-blend-order:
-                        text_source: function() { return feature.name.split('').join(' ') }
-                        text_wrap: false
+                        text_source: global.ux_language_text_source_continent
         island:
             filter: { kind: [archipelago, island, islet] }
             draw:
@@ -7575,10 +5808,11 @@ layers:
                     visible: *text_visible_island
                     text_wrap: 10
                     font:
+                        family: *text_font_family
                         size: 12px
                         style: italic
                         fill: *text_fill
-                        weight: 400
+                        weight: normal
                         stroke: { color: *text_stroke, width: 4 }
                         #transform: uppercase
 
@@ -8126,7 +6360,6 @@ layers:
         draw:
             lines:
                 order: 999
-                interactive: true
         #cliff:
 #            filter: { kind: cliff }
 #            draw:
@@ -8252,7 +6485,6 @@ layers:
             draw:
                 dots-lines:
                     order: 1002
-                    interactive: true
                     color: [0.120,0.600,0.520]
                     #width: [[13, 0.75px], [14, 0.85px], [15, 1.1px], [16, 3px], [17, 6px], [18, 7px], [19, 10px]]
                     width: [[13, 0.75px], [14, 1px], [15, 3.5px], [16, 3px], [17, 4px], [18, 5px], [19, 8px]]
@@ -8260,7 +6492,6 @@ layers:
                     #color: purple
                 lines:
                     order: 1000
-                    interactive: true
                     #width: [[13, 0.75px], [14, 0.85px], [15, 1.1px], [16, 2px], [17, 6px], [18, 7px], [19, 10px]]
                     #color: [[15,[0.120,0.600,0.520]],[16,[0.623,0.820,0.797]]]
                     color: [[14,[0.510,0.752,0.695]],[15,[0.671,0.839,0.820]],[16,[0.671,0.839,0.820]]]
@@ -8395,7 +6626,6 @@ layers:
 #                    color: blue #[0.120,0.600,0.520]
 #                    width: [[13, 1px], [14, 1.45px], [15, 1.1px], [16, 1.5px], [17, 2px], [18, 5px], [19, 6px]]
 #                    order: 1004
-                    interactive: true
                     color: [[11,[0.120,0.600,0.520]],[14,[0.120,0.600,0.520]],[15,[1.00,1.00,1.00]]]
                     #width: [[11, 0.25px], [12, 0.35px], [13, 0.55px],[14,1px],[15,0px]]
                     width: [[13, 0.75px], [14, 1.1px], [15, 1.1px], [16, 1.5px], [17, 2.2px], [18, 5px], [19, 6px]]
@@ -8452,7 +6682,6 @@ layers:
                 # color: [0.756,0.563,0.499]
                 width: [[13, 0.6px], [14, 1px], [15, 1.1px], [16, 1.25px], [17, 1.5px], [18, 5px], [19, 6px]]
                 order: 990
-                interactive: true
         late:
             filter: { $zoom: { min: 16 } }
             draw:
@@ -8518,7 +6747,6 @@ layers:
                 color: [0.710,0.553,0.522]
                 width: [[11, 0.25px], [12, 0.35px], [13, 0.55px], [14, 1px], [15, 0px], [16, 1.5px], [17, 3px], [18, 3m]]
                 order: 990
-                interactive: true
         late:
             filter: { $zoom: { min: 15 } }
             draw:
@@ -8559,7 +6787,6 @@ layers:
                 color: [0.120,0.600,0.520]
                 width: [[11, 0.25px], [12, 0.35px], [13, 0.55px], [14, 1px], [15, 0px], [16, 1px], [17, 6px], [18, 9m]]
                 order: 990
-                interactive: true
         double-lines:
             filter: { $zoom: { min: 16 } }
             draw:
@@ -8571,13 +6798,11 @@ layers:
                         width: [[15, 0.5px],[16, 1.5px],[17, 1.5px],[18, 2.5px],[19, 1m]]
                 casing_left:
                     visible: false
-                    interactive: true
                     order: 486
                     color: [0.120,0.600,0.520]
                     width: [[15, 0.5px],[16, 5.5px],[17, 10px],[18, 9m],[19, 8m]]
                 casing_right:
                     visible: false
-                    interactive: true
                     order: 486
                     color: white
                     width: [[15, 0.5px],[16, 6px],[17, 10px],[18, 9m],[19, 8m]]
@@ -8600,3 +6825,357 @@ layers:
                     visible: false
                 highlight:
                     visible: false
+
+    transit-overlay-rail-lines:
+        data: { source: mapzen, layer: transit }
+        filter:
+            not: { kind: [platform, railway] }
+        draw:
+            lines:
+                order: 499
+                visible: global.sdk_transit_overlay
+                color: purple
+                width: [[5,1.5px],[6,2px],[11,3px],[18,4px]]
+                outline:
+                    color: [1.,1.,1.,.8]
+                    width: [[7,0px],[8,0.25px],[9,0.5px],[12,1.0px],[13,1.75px],[14,2px]]
+                    #width: [[12,1.0px],[13,1.75px],[14,2px]]
+        train-sizing-color:
+            filter: { kind: train }
+            draw:
+                lines:
+                    color: purple
+                    width: [[5,1.0px],[6,1.0px],[7,1.25px],[11,2.0px],[13,2.5px],[18,3.5px]]
+                    outline:
+                        width: [[12,1.0px],[13,1.75px],[14,2px]]
+            stack-below-other-transit-later-zooms:
+                filter: { $zoom: { min: 9 } }
+                draw:
+                    lines:
+                        order: 511
+        subway-sizing:
+            filter: { kind: subway }
+            draw:
+                lines:
+                    width: [[9,1px],[11,2px],[12,3px],[13,4px],[15,5px],[16,7px],[17,9px]]
+                    outline:
+                        #color: [[10,white],[11,black]]
+                        width: [[9,0px],[10,0.5px],[12,1.25px],[13,1.5px],[15,2px]]
+                        #width: [[12,1.5px],[13,2.0px],[14,2.5px]]
+        light-rail-and-tram-sizing:
+            filter: { kind: [light_rail, tram] }
+            draw:
+                lines:
+                    width: [[10,1px],[12,1.5px],[15,2px],[18,3.5px]]
+                    outline:
+                        #color: [[11,white],[12,black]]
+                        width: [[12,0.25px],[13,0.5px],[14,1px],[16,2px]]
+        has-data-color:
+            filter: { colour: true }
+            draw:
+                lines:
+                    order: 510
+                    width: [[9,2px],[11,3px],[12,4px]]
+                    color: function() { return feature.colour || 'purple'; }
+                    #outline:
+                        #color: function() { if(feature.colour == 'silver') { return 'black'; } else { return [0.,0.,0.,.1]; } }
+                        #width: [[12,1.0px],[13,1.75px],[14,2px]]
+            train-with-color:
+                filter: { kind: train }
+                draw:
+                    lines:
+                        order: 514
+            subway-with-color:
+                filter: { kind: subway }
+                draw:
+                    lines:
+                        order: 513
+            light-rail-and-tram-with-color:
+                filter: { kind: [light_rail, tram] }
+                draw:
+                    lines:
+                        order: 512
+        missing-colour:
+            filter: { colour: false }
+            train-missing-color:
+                filter: { kind: train, colour: false }
+                draw:
+                    lines:
+                        #width: [[5,1.25px],[6,1.75px],[11,2.0px],[13,2.5px],[18,2.5m]]
+                        order: 506
+            subway-missing-color:
+                filter: { kind: subway, colour: false }
+                draw:
+                    lines:
+                        order: 505
+                        #outline:
+#                            width: [[12,1.5px],[13,2.0px],[14,2.5px]]
+            light-rail-and-tram-missing-color:
+                filter: { kind: [light_rail, tram], colour: false }
+                draw:
+                    lines:
+                        order: 504
+        labels-transit-lines-early:
+            filter: { $zoom: [13,14], ref: true }
+            draw:
+                text:
+                    visible: global.sdk_transit_overlay
+                    priority: 20
+                    text_source: function() { if( feature.ref.length < 4 ) { return feature.ref; } else { return ''; } }
+                    font:
+                        fill: black
+                        size: 12px
+                        weight: bold
+                        stroke: { color: white, width: 2 }
+        labels-transit-lines:
+            filter: { $zoom: { min: 15 } }
+            draw:
+                text:
+                    visible: global.sdk_transit_overlay
+                    priority: 20
+                    text_source: ref
+                    font:
+                        fill: black
+                        size: 14px
+                        weight: bold
+                        stroke: { color: white, width: 2 }
+            z19-show-long-route-name:
+                filter: { $zoom: { min: 19 } }
+                draw:
+                    text:
+                        text_source: function() { return feature.route_name || feature.ref; }
+                        font:
+                            stroke: { color: white, width: 3px }
+
+#    transit-bus-roads:
+#        data: { source: mapzen, layer: roads }
+#        filter: { is_bus_route: true }
+#        draw:
+#            lines:
+#                visible: global.sdk_transit_overlay
+#                interactive: false
+#                color: [[13,[0,0,1,0.5]],[15,blue]]
+#                width: [[11,0.5px],[12,0.8px],[16,1.25px],[18,1m]]
+#                # let roads sort themselves past zoom 14
+#                order: 488
+#                # but give them all the same outline
+#                outline:
+#                    order: 487
+
+    transit-overlay-station-labels:
+        data: { source: mapzen, layer: [pois] }
+        filter:
+            kind: [station, tram_stop, bus_station, subway_entrance, halt, stop, platform, bus_stop, stop_position ]
+            any:
+                - area: false
+                  all:
+                - area: true
+                  all:
+                      - $geometry: point
+                      - kind: true
+        draw:
+            icons:
+                visible: global.sdk_transit_overlay
+                size: [[13, 12px], [16, 16px], [19, 20px]]
+                interactive: global.interactive
+                priority: 15
+                text:
+                    buffer: 4px
+                    move_into_tile: false # preserves text alignment w/icons in JS
+                    #anchor: bottom
+                    #offset: [[13, [0, 6px]], [16, [0, 8px]], [19, [0, 10px]]] # offset tracks alongside icon size (half icon height)
+                    interactive: global.interactive
+                    priority: 16
+                    font:
+                        fill: black
+                        weight: normal
+                        size: 11px
+                        stroke: { color: white, width: 3 }
+        poi_labels-z14:
+            filter: { $zoom: [14] }
+            draw: { icons: { text: { font: { size: 11px } } } }
+        poi_labels-z15:
+            filter: { $zoom: [15,16,17] }
+            draw: { icons: { text: { font: { size: 12px, stroke: { width: 2 } } } } }
+        poi_labels-z18:
+            filter: { $zoom: [18,19] }
+            draw: { icons: { text: { font: { size: 12px, weight: 600, stroke: { width: 3 } } } } }
+        poi_labels-z20-up:
+            filter: { $zoom: { min: 20 } }
+            draw: { icons: { text: { font: { size: 14px, weight: 600, stroke: { width: 3 }  } } } }
+        station-train-subway:
+            filter: { kind: [station, train-station, train_station] } #, $zoom: { min: 13 }
+            draw:
+                icons:
+                    sprite: train_station
+                    size: [[13, 12px], [14, 14px], [15, 16px], [17, 20px]]
+                    priority: 11
+                    text:
+                        #offset: [[13, [0, 6px]], [14, [0, 7px]],[15, [0, 8px]], [17, [0, 10px]]]
+                        priority: 12
+            low-priority-early:
+                filter: { kind_tile_rank: { min: 3 }, $zoom: { min: 0, max: 12 } }
+                draw:
+                    icons:
+                        size: [[12, 5px], [14, 6px], [15, 16px]]
+                        text:
+                            visible: false
+                long-tail:
+                    filter: { kind_tile_rank: { min: 10 }, $zoom: [10] }
+                    draw:
+                        icons:
+                            visible: false
+            low-priority-early-z12:
+                filter: { kind_tile_rank: { min: 8 }, $zoom: [12] }
+                draw:
+                    icons:
+#                        visible: false
+                        size: [[12, 5px], [14, 6px], [15, 16px]]
+                        text:
+                            visible: false
+            low-priority-early-z13:
+                filter: { kind_tile_rank: { min: 8 }, $zoom: [13] }
+                draw:
+                    icons:
+                        #visible: false
+                        size: [[12, 8px], [14, 6px], [15, 16px]]
+                        text:
+                            visible: false
+            low-priority-early-z14:
+                filter: { kind_tile_rank: { min: 7 }, $zoom: [14] }
+                draw:
+                    icons:
+                        size: [[12, 10px], [14, 11px], [15, 16px]]
+                        #visible: false
+                        text:
+                            visible: false
+            late:
+                filter: { $zoom: { min: 16 } }
+                draw:
+                    icons:
+                        text:
+                            font:
+                                weight: 600
+                                size: 12px
+        subway-early:
+            filter: { is_subway: true, is_train: false, $zoom: { max: 12 } }
+            draw:
+                icons:
+                    visible: false
+                    text:
+                        visible: false
+        halt-early:
+            filter: { kind: [halt,stop], $zoom: { max: 15 } }
+            draw:
+                icons:
+                    size: [[15, 8px], [16, 18px]]
+                    visible: global.sdk_transit_overlay
+                    sprite: light_rail
+                    text:
+                        visible: false
+        platform-early:
+            filter: { kind: [platform] }
+            draw:
+                icons:
+                    size: [[15, 8px], [16, 18px]]
+                    visible: global.sdk_transit_overlay
+                    sprite: generic
+                    text:
+                        visible: false
+        tram-stop-early:
+            filter: { kind: [tram_stop], $zoom: { max: 16 } }
+            draw:
+                icons:
+                    size: [[13, 0px], [14, 7px], [15, 8px]]
+                    visible: global.sdk_transit_overlay
+                    sprite: light_rail
+                    text:
+                        visible: false
+        tram-stop:
+            filter: { kind: tram_stop, $zoom: { min: 16 } }
+            draw:
+                icons:
+                    size: [[16, 12px], [17, 14px], [18, 18px]]
+                    sprite: light_rail
+                    #text:
+                        #offset: [[13, [0, 6px]], [16, [0, 9px]]]
+        bus-like-labels:
+            filter:
+                kind: [platform, stop_position]
+            draw:
+                icons:
+                    size: [[13, 8px], [16, 10px], [17, 12px], [18, 18px]]
+                    sprite: bus_station
+                    text:
+                        interactive: global.interactive
+                        font:
+                            fill: black
+                            size: 12px
+                            stroke: { color: white, width: 4 }
+        bus-station-labels:
+            filter:
+                kind: [bus_station, bus_stop]
+                $zoom: { min: 16 }
+            draw:
+                icons:
+                    size: [[13, 12px], [16, 18px]]
+                    sprite: bus_station
+                    priority: 17
+                    text:
+                        interactive: global.interactive
+                        priority: 18
+                        font:
+                            fill: black
+                            size: 12px
+                            stroke: { color: white, width: 4 }
+            bus_stop:
+                filter:
+                    kind: [bus_stop]
+                    $zoom: { max: 19 }
+                draw:
+                    icons:
+                        size: [[13, 8px], [19, 18px]]
+                        text:
+                            visible: false
+        subway-entrance:
+            filter:
+                kind: [subway_entrance]
+            draw:
+                icons:
+                    sprite: subway_entrance
+                    size: [[17, 12px], [19, 14px]]
+                    priority: 19
+                    text:
+                        #offset: [[17, [0, 6px]], [19, [0, 7px]]] # offset tracks alongside icon size (half icon height)
+                        priority: 20
+                        interactive: global.interactive
+                        text_source: function() { if( feature.ref || feature.name ) { if( feature.ref && feature.name ) { return '[' + feature.ref + ']\n' + feature.name; } else { return feature.name; } } else { return "Entrance"; } }
+                        font:
+                            fill: black
+                            size: 12px
+                            stroke: { color: white, width: 4 }
+
+#    transit-platforms:
+#        data: { source: mapzen, layer: transit }
+#        filter: { kind: platform, $zoom: { min: 15 }, $geometry: [polygon,line] }
+#        draw:
+#            lines:
+#                visible: global.sdk_transit_overlay
+#                color: '#bc8f96'
+#                width: 10m          # something fishy here with the #include syntax in v0.7 tangram?
+#                order: 1000         # this selection should sort above basemap, but grey Zinc color still applies
+#                outline:
+#                    order: 1002
+#            polygons:
+#                visible: global.sdk_transit_overlay
+#                order: 1001
+#        polygon_geom:
+#            filter: { $geometry: polygon }
+#            draw:
+#                polygons:
+#                    color: '#bc8f96'
+#                    outline:
+#                        color: '#bc8f96'
+#                        width: [[15,0px],[16,0.5px],[17,1px],[19,2px]]
+#                lines:
+#                    visible: false
\ No newline at end of file