[openstreetmap-carto] 01/02: Imported Upstream version 2.13.0

Christopher Baines cbaines-guest at moszumanska.debian.org
Thu Apr 17 13:17:16 UTC 2014


This is an automated email from the git hooks/post-receive script.

cbaines-guest pushed a commit to branch master
in repository openstreetmap-carto.

commit e5acdb08d6a5d251ada74374a0bbfdda115b4c20
Author: Christopher Baines <mail at cbaines.net>
Date:   Thu Apr 17 14:15:25 2014 +0100

    Imported Upstream version 2.13.0
---
 .gitignore                                  |    4 +
 CARTOGRAPHY.md                              |   37 +
 LICENSE.txt                                 |   15 +
 README.md                                   |  153 ++
 TODO.md                                     |   28 +
 addressing.mss                              |   49 +
 admin.mss                                   |  117 ++
 aerialways.mss                              |   20 +
 amenity-points.mss                          | 1148 +++++++++++++
 amenity-symbols.mss                         |  112 ++
 buildings.mss                               |   52 +
 citywalls.mss                               |   24 +
 ferry-routes.mss                            |   11 +
 get-shapefiles.sh                           |   65 +
 landcover.mss                               |  436 +++++
 openstreetmap-carto.style                   |  226 +++
 placenames.mss                              |  142 ++
 power.mss                                   |   34 +
 project.mml                                 | 1757 +++++++++++++++++++
 roads.mss                                   | 2449 +++++++++++++++++++++++++++
 shapefiles.mss                              |   37 +
 stations.mss                                |   54 +
 style.mss                                   |   12 +
 symbols/aerodrome.p.16.png                  |  Bin 0 -> 377 bytes
 symbols/aerodrome.png                       |  Bin 0 -> 888 bytes
 symbols/aiga_parking1.png                   |  Bin 0 -> 1542 bytes
 symbols/allotments.png                      |  Bin 0 -> 911 bytes
 symbols/alpinehut.p.16.png                  |  Bin 0 -> 565 bytes
 symbols/amenity_court.p.20.png              |  Bin 0 -> 802 bytes
 symbols/amenity_prison.p.20.png             |  Bin 0 -> 417 bytes
 symbols/arrow.png                           |  Bin 0 -> 320 bytes
 symbols/arrow_back.png                      |  Bin 0 -> 353 bytes
 symbols/atm.png                             |  Bin 0 -> 222 bytes
 symbols/atm2.p.16.png                       |  Bin 0 -> 437 bytes
 symbols/bandb.p.20.png                      |  Bin 0 -> 398 bytes
 symbols/bank2.p.16.png                      |  Bin 0 -> 410 bytes
 symbols/bar.p.20.png                        |  Bin 0 -> 459 bytes
 symbols/beach.png                           |  Bin 0 -> 162 bytes
 symbols/biergarten.p.16.png                 |  Bin 0 -> 501 bytes
 symbols/bollard.png                         |  Bin 0 -> 104 bytes
 symbols/buddhist.png                        |  Bin 0 -> 406 bytes
 symbols/bus_station.n.16.png                |  Bin 0 -> 552 bytes
 symbols/bus_stop.p.12.png                   |  Bin 0 -> 353 bytes
 symbols/bus_stop.png                        |  Bin 0 -> 904 bytes
 symbols/bus_stop_small.png                  |  Bin 0 -> 95 bytes
 symbols/cable_car.png                       |  Bin 0 -> 229 bytes
 symbols/cafe.p.16.png                       |  Bin 0 -> 361 bytes
 symbols/camping.n.16.png                    |  Bin 0 -> 517 bytes
 symbols/car_share.p.16.png                  |  Bin 0 -> 489 bytes
 symbols/caravan_park.p.24.png               |  Bin 0 -> 486 bytes
 symbols/cemetery_jewish.18.png              |  Bin 0 -> 400 bytes
 symbols/chair_lift.png                      |  Bin 0 -> 230 bytes
 symbols/chalet.p.16.png                     |  Bin 0 -> 440 bytes
 symbols/christian3.p.14.png                 |  Bin 0 -> 252 bytes
 symbols/cinema.p.24.png                     |  Bin 0 -> 791 bytes
 symbols/cliff.png                           |  Bin 0 -> 26214 bytes
 symbols/cliff2.png                          |  Bin 0 -> 26214 bytes
 symbols/communications.p.20.png             |  Bin 0 -> 445 bytes
 symbols/danger.png                          |  Bin 0 -> 146 bytes
 symbols/department_store.p.16.png           |  Bin 0 -> 993 bytes
 symbols/embassy.png                         |  Bin 0 -> 2893 bytes
 symbols/fast_food.png                       |  Bin 0 -> 3091 bytes
 symbols/firestation.p.16.png                |  Bin 0 -> 479 bytes
 symbols/florist.p.16.png                    |  Bin 0 -> 422 bytes
 symbols/food_bar.p.16.png                   |  Bin 0 -> 376 bytes
 symbols/food_drinkingtap.p.20.png           |  Bin 0 -> 386 bytes
 symbols/forest.png                          |  Bin 0 -> 190 bytes
 symbols/fuel.p.16.png                       |  Bin 0 -> 306 bytes
 symbols/gate.png                            |  Bin 0 -> 106 bytes
 symbols/gate2.png                           |  Bin 0 -> 111 bytes
 symbols/glacier.png                         |  Bin 0 -> 122 bytes
 symbols/glacier2.png                        |  Bin 0 -> 199 bytes
 symbols/grave_yard.png                      |  Bin 0 -> 291 bytes
 symbols/grave_yard_generic.png              |  Bin 0 -> 1013 bytes
 symbols/guest_house.p.16.png                |  Bin 0 -> 503 bytes
 symbols/halt.png                            |  Bin 0 -> 94 bytes
 symbols/helipad.p.16.png                    |  Bin 0 -> 519 bytes
 symbols/hindu.png                           |  Bin 0 -> 464 bytes
 symbols/hospital.p.16.png                   |  Bin 0 -> 557 bytes
 symbols/hospital.png                        |  Bin 0 -> 491 bytes
 symbols/hostel.p.20.png                     |  Bin 0 -> 539 bytes
 symbols/hotel2.p.20.png                     |  Bin 0 -> 368 bytes
 symbols/information.p.16.png                |  Bin 0 -> 294 bytes
 symbols/islamic3.p.16.png                   |  Bin 0 -> 387 bytes
 symbols/jewish3.p.16.png                    |  Bin 0 -> 397 bytes
 symbols/landfill.png                        |  Bin 0 -> 122 bytes
 symbols/level_crossing.png                  |  Bin 0 -> 124 bytes
 symbols/level_crossing2.png                 |  Bin 0 -> 154 bytes
 symbols/library.p.20.png                    |  Bin 0 -> 715 bytes
 symbols/liftgate.png                        |  Bin 0 -> 166 bytes
 symbols/lighthouse.p.20.png                 |  Bin 0 -> 487 bytes
 symbols/lock_gate.png                       |  Bin 0 -> 172 bytes
 symbols/london-tube-24.png                  |  Bin 0 -> 621 bytes
 symbols/marsh.png                           |  Bin 0 -> 621 bytes
 symbols/memorial.png                        |  Bin 0 -> 3055 bytes
 symbols/military_red_hatch.png              |  Bin 0 -> 132 bytes
 symbols/mini_round.png                      |  Bin 0 -> 26852 bytes
 symbols/mosque.png                          |  Bin 0 -> 1023 bytes
 symbols/mot_shield1.png                     |  Bin 0 -> 412 bytes
 symbols/mot_shield2.png                     |  Bin 0 -> 439 bytes
 symbols/mot_shield3.png                     |  Bin 0 -> 441 bytes
 symbols/mot_shield4.png                     |  Bin 0 -> 445 bytes
 symbols/mot_shield5.png                     |  Bin 0 -> 446 bytes
 symbols/mot_shield6.png                     |  Bin 0 -> 447 bytes
 symbols/mot_shield7.png                     |  Bin 0 -> 447 bytes
 symbols/mot_shield8.png                     |  Bin 0 -> 450 bytes
 symbols/motel.p.20.png                      |  Bin 0 -> 657 bytes
 symbols/motorway_shield1.png                |  Bin 0 -> 176 bytes
 symbols/motorway_shield2.png                |  Bin 0 -> 256 bytes
 symbols/motorway_shield3.png                |  Bin 0 -> 251 bytes
 symbols/motorway_shield4.png                |  Bin 0 -> 239 bytes
 symbols/motorway_shield5.png                |  Bin 0 -> 205 bytes
 symbols/motorway_shield6.png                |  Bin 0 -> 207 bytes
 symbols/mud.png                             |  Bin 0 -> 104 bytes
 symbols/museum.p.16.png                     |  Bin 0 -> 311 bytes
 symbols/nature_reserve.png                  |  Bin 0 -> 141 bytes
 symbols/nature_reserve2.png                 |  Bin 0 -> 170 bytes
 symbols/nature_reserve2T.png                |  Bin 0 -> 246 bytes
 symbols/nature_reserve5.png                 |  Bin 0 -> 341 bytes
 symbols/nature_reserve6.png                 |  Bin 0 -> 365 bytes
 symbols/nature_reserveT.png                 |  Bin 0 -> 209 bytes
 symbols/orchard.png                         |  Bin 0 -> 110 bytes
 symbols/parking.p.16.png                    |  Bin 0 -> 312 bytes
 symbols/parking.png                         |  Bin 0 -> 409 bytes
 symbols/parking_private.p.16.png            |  Bin 0 -> 377 bytes
 symbols/peak.png                            |  Bin 0 -> 119 bytes
 symbols/pharmacy.p.16.png                   |  Bin 0 -> 341 bytes
 symbols/picnic.p.16.png                     |  Bin 0 -> 409 bytes
 symbols/pint.png                            |  Bin 0 -> 486 bytes
 symbols/place_of_worship.png                |  Bin 0 -> 209 bytes
 symbols/place_of_worship3.p.16.png          |  Bin 0 -> 190 bytes
 symbols/place_of_worship3.png               |  Bin 0 -> 103 bytes
 symbols/playground.p.20.png                 |  Bin 0 -> 575 bytes
 symbols/poi_cave.p.16.png                   |  Bin 0 -> 270 bytes
 symbols/police.p.16.png                     |  Bin 0 -> 657 bytes
 symbols/post_box.p.16.png                   |  Bin 0 -> 367 bytes
 symbols/post_box.png                        |  Bin 0 -> 337 bytes
 symbols/post_office.p.16.png                |  Bin 0 -> 494 bytes
 symbols/post_office.png                     |  Bin 0 -> 413 bytes
 symbols/postoffice.png                      |  Bin 0 -> 297 bytes
 symbols/power_line.png                      |  Bin 0 -> 131 bytes
 symbols/power_pole.png                      |  Bin 0 -> 94 bytes
 symbols/power_tower.png                     |  Bin 0 -> 115 bytes
 symbols/power_tower_3x3.png                 |  Bin 0 -> 933 bytes
 symbols/power_tower_5x5.png                 |  Bin 0 -> 947 bytes
 symbols/power_wind.png                      |  Bin 0 -> 638 bytes
 symbols/pri_shield1.png                     |  Bin 0 -> 422 bytes
 symbols/pri_shield2.png                     |  Bin 0 -> 431 bytes
 symbols/pri_shield3.png                     |  Bin 0 -> 433 bytes
 symbols/pri_shield4.png                     |  Bin 0 -> 437 bytes
 symbols/pri_shield5.png                     |  Bin 0 -> 439 bytes
 symbols/pri_shield6.png                     |  Bin 0 -> 440 bytes
 symbols/pri_shield7.png                     |  Bin 0 -> 440 bytes
 symbols/pri_shield8.png                     |  Bin 0 -> 442 bytes
 symbols/primary_shield1.png                 |  Bin 0 -> 175 bytes
 symbols/primary_shield2.png                 |  Bin 0 -> 181 bytes
 symbols/primary_shield3.png                 |  Bin 0 -> 181 bytes
 symbols/primary_shield4.png                 |  Bin 0 -> 197 bytes
 symbols/primary_shield5.png                 |  Bin 0 -> 197 bytes
 symbols/primary_shield6.png                 |  Bin 0 -> 199 bytes
 symbols/primary_shield7.png                 |  Bin 0 -> 199 bytes
 symbols/primary_shield8.png                 |  Bin 0 -> 207 bytes
 symbols/pub.p.16.png                        |  Bin 0 -> 433 bytes
 symbols/pub.png                             |  Bin 0 -> 307 bytes
 symbols/quarry.png                          |  Bin 0 -> 131 bytes
 symbols/quarry2.png                         |  Bin 0 -> 139 bytes
 symbols/recycle.png                         |  Bin 0 -> 1118 bytes
 symbols/recycling.p.16.png                  |  Bin 0 -> 562 bytes
 symbols/recycling.png                       |  Bin 0 -> 645 bytes
 symbols/rental_bicycle.p.20.png             |  Bin 0 -> 802 bytes
 symbols/restaurant.p.16.png                 |  Bin 0 -> 502 bytes
 symbols/school.png                          |  Bin 0 -> 3136 bytes
 symbols/scrub.png                           |  Bin 0 -> 166 bytes
 symbols/sec_shield1.png                     |  Bin 0 -> 422 bytes
 symbols/sec_shield2.png                     |  Bin 0 -> 431 bytes
 symbols/sec_shield3.png                     |  Bin 0 -> 433 bytes
 symbols/sec_shield4.png                     |  Bin 0 -> 437 bytes
 symbols/sec_shield5.png                     |  Bin 0 -> 439 bytes
 symbols/sec_shield6.png                     |  Bin 0 -> 440 bytes
 symbols/sec_shield7.png                     |  Bin 0 -> 440 bytes
 symbols/sec_shield8.png                     |  Bin 0 -> 442 bytes
 symbols/secondary_shield1.png               |  Bin 0 -> 168 bytes
 symbols/secondary_shield2.png               |  Bin 0 -> 174 bytes
 symbols/secondary_shield3.png               |  Bin 0 -> 176 bytes
 symbols/secondary_shield4.png               |  Bin 0 -> 191 bytes
 symbols/secondary_shield5.png               |  Bin 0 -> 194 bytes
 symbols/secondary_shield6.png               |  Bin 0 -> 196 bytes
 symbols/secondary_shield7.png               |  Bin 0 -> 195 bytes
 symbols/secondary_shield8.png               |  Bin 0 -> 202 bytes
 symbols/shelter2.p.16.png                   |  Bin 0 -> 571 bytes
 symbols/shinto.png                          |  Bin 0 -> 413 bytes
 symbols/shop_bakery.p.16.png                |  Bin 0 -> 441 bytes
 symbols/shop_butcher.png                    |  Bin 0 -> 780 bytes
 symbols/shop_clothes.p.16.png               |  Bin 0 -> 312 bytes
 symbols/shop_convenience.p.16.png           |  Bin 0 -> 373 bytes
 symbols/shop_diy.p.16.png                   |  Bin 0 -> 383 bytes
 symbols/shop_hairdresser.p.16.png           |  Bin 0 -> 472 bytes
 symbols/shop_supermarket.p.16.png           |  Bin 0 -> 425 bytes
 symbols/shopping_bicycle.p.16.png           |  Bin 0 -> 522 bytes
 symbols/shopping_car.p.16.png               |  Bin 0 -> 438 bytes
 symbols/shopping_car_repair.p.16.png        |  Bin 0 -> 457 bytes
 symbols/sikh.png                            |  Bin 0 -> 1297 bytes
 symbols/sikh3.p.16.png                      |  Bin 0 -> 400 bytes
 symbols/sosphone.png                        |  Bin 0 -> 508 bytes
 symbols/spring.png                          |  Bin 0 -> 108 bytes
 symbols/station.png                         |  Bin 0 -> 95 bytes
 symbols/station_disused.png                 |  Bin 0 -> 95 bytes
 symbols/station_small.png                   |  Bin 0 -> 95 bytes
 symbols/synagogue.png                       |  Bin 0 -> 376 bytes
 symbols/taoist.png                          |  Bin 0 -> 536 bytes
 symbols/telephone.p.16.png                  |  Bin 0 -> 444 bytes
 symbols/ter_shield1.png                     |  Bin 0 -> 422 bytes
 symbols/ter_shield2.png                     |  Bin 0 -> 431 bytes
 symbols/ter_shield3.png                     |  Bin 0 -> 433 bytes
 symbols/ter_shield4.png                     |  Bin 0 -> 437 bytes
 symbols/ter_shield5.png                     |  Bin 0 -> 439 bytes
 symbols/ter_shield6.png                     |  Bin 0 -> 440 bytes
 symbols/ter_shield7.png                     |  Bin 0 -> 440 bytes
 symbols/ter_shield8.png                     |  Bin 0 -> 442 bytes
 symbols/tertiary_shield1.png                |  Bin 0 -> 176 bytes
 symbols/tertiary_shield2.png                |  Bin 0 -> 182 bytes
 symbols/tertiary_shield3.png                |  Bin 0 -> 184 bytes
 symbols/tertiary_shield4.png                |  Bin 0 -> 204 bytes
 symbols/tertiary_shield5.png                |  Bin 0 -> 204 bytes
 symbols/tertiary_shield6.png                |  Bin 0 -> 206 bytes
 symbols/tertiary_shield7.png                |  Bin 0 -> 206 bytes
 symbols/tertiary_shield8.png                |  Bin 0 -> 214 bytes
 symbols/theatre.p.20.png                    |  Bin 0 -> 785 bytes
 symbols/toilets.p.20.png                    |  Bin 0 -> 586 bytes
 symbols/tourist_archaeological2.glow.24.png |  Bin 0 -> 1134 bytes
 symbols/tourist_memorial.p.20.png           |  Bin 0 -> 533 bytes
 symbols/tower.png                           |  Bin 0 -> 327 bytes
 symbols/tower_water.p.20.png                |  Bin 0 -> 477 bytes
 symbols/traffic_light.png                   |  Bin 0 -> 1169 bytes
 symbols/transport_ford.p.16.png             |  Bin 0 -> 490 bytes
 symbols/transport_slipway.p.20.png          |  Bin 0 -> 604 bytes
 symbols/tree.png                            |  Bin 0 -> 102 bytes
 symbols/tree2.png                           |  Bin 0 -> 120 bytes
 symbols/tru_shield1.png                     |  Bin 0 -> 422 bytes
 symbols/tru_shield2.png                     |  Bin 0 -> 431 bytes
 symbols/tru_shield3.png                     |  Bin 0 -> 433 bytes
 symbols/tru_shield4.png                     |  Bin 0 -> 437 bytes
 symbols/tru_shield5.png                     |  Bin 0 -> 441 bytes
 symbols/tru_shield6.png                     |  Bin 0 -> 440 bytes
 symbols/tru_shield7.png                     |  Bin 0 -> 440 bytes
 symbols/tru_shield8.png                     |  Bin 0 -> 442 bytes
 symbols/trunk_shield1.png                   |  Bin 0 -> 175 bytes
 symbols/trunk_shield2.png                   |  Bin 0 -> 181 bytes
 symbols/trunk_shield3.png                   |  Bin 0 -> 184 bytes
 symbols/trunk_shield4.png                   |  Bin 0 -> 202 bytes
 symbols/trunk_shield5.png                   |  Bin 0 -> 202 bytes
 symbols/trunk_shield6.png                   |  Bin 0 -> 205 bytes
 symbols/trunk_shield7.png                   |  Bin 0 -> 204 bytes
 symbols/trunk_shield8.png                   |  Bin 0 -> 212 bytes
 symbols/view_point.p.16.png                 |  Bin 0 -> 636 bytes
 symbols/vineyard.png                        |  Bin 0 -> 149 bytes
 symbols/volcano.png                         |  Bin 0 -> 264 bytes
 symbols/walking.n.12.png                    |  Bin 0 -> 372 bytes
 symbols/windmill.png                        |  Bin 0 -> 186 bytes
 symbols/zoo.png                             |  Bin 0 -> 129 bytes
 water-features.mss                          |   72 +
 water.mss                                   |  313 ++++
 262 files changed, 7367 insertions(+)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..59f0845
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.thumb.png
+layers/
+data/
+*.xml
diff --git a/CARTOGRAPHY.md b/CARTOGRAPHY.md
new file mode 100644
index 0000000..8b2b9a0
--- /dev/null
+++ b/CARTOGRAPHY.md
@@ -0,0 +1,37 @@
+# Cartography
+
+This is a style that serves multiple purposes, so here are some guidelines when considering cartographic changes.
+
+## Purposes
+
+There are multiple primary purposes of the map style, which pull in different directions
+
+* It's the primary feedback mechanism for mappers to validate their edits - so detail is useful
+* It's a major part of the impression visitors to osm.org receive - so clear design is useful
+* It's an examplar stylesheet for rendering OSM data - so easy customisation is useful
+
+It must always be borne in mind that a map style cannot show every detail of the OSM data, and in many cases it is more appropriate to show the detail in other, more specialist styles.
+
+## Colours
+
+Firstly, this is a map, not merely a colourful 2-dimensional visualisation of the database. Colours should be chosen based on their effectiveness and to make things look nice, not chosen for distinctiveness.
+
+The colour palette should be moving towards pastel/light/desaturated for background layers, midtones for streets and save highlights/bolds/saturated for points of interest. If colourspace can be left unused, that enables overlays for third parties.
+
+Colour definitions should, where useful, be put into variables at the top of the file, to enable easier customisation.
+
+## Data manipulation
+
+OpenStreetMap data has to be manipulated for rendering, but since this style is intended for use by mappers to check their work, it should minimise any distortions. For example, line-smoothing improves the look of railways and rivers, but introduces confusion for mappers. Post processing of geometries can improve the cartographic results, but breaks the cause-and-effect between editing the data and seeing the results.
+
+For similar reasons, use of external non-OSM data should be avoided.
+
+## Legibility
+
+I mean this not only in terms of font size, but in the ability of users to be able to "read" the map style. For example, a user might not be familiar with our exact road colours, but should be able to understand their relative importance via intensity of colour, width or other attributes. Important features should be more easily spotted and understood than less important information. It should be possible to gain an understanding of the majority of the map without using a legend.
+
+## The Mapper Feedback Loop
+
+If you thought that mappers were happy just to press "Save" on their editor, you'd be wrong. A key part of their feedback loop - to reassure them their work has been saved, and also to check that they have mapped 'correctly' - is waiting to see the results of their mapping on the main map layer on www.osm.org
+
+While this desire is in obvious conflict with the above comments on level of detail, it has a second impact on the map style. We need to, wherever possible, avoid accidentally encouraging mistakes - that is, avoiding the situation where a clearly misspelled or misused tag leads to the originally expected result. So `highway=mtorway` shouldn't show up as if it was `highway=motorway`, and so on. This has been a problem with "catch-all" rules in queries and filters, such as `where leisure i [...]
\ No newline at end of file
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..86cca83
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,15 @@
+OpenStreetMap Carto: A global map style for OpenStreetMap maps.
+
+Created by Andy Allan <andy at gravitystorm.co.uk> and contributors.
+Based on original cartography by Steve Chilton and others.
+
+This software and associated documentation files (the "Software") is
+released under the CC0 Public Domain Dedication, version 1.0, as
+published by Creative Commons. To the extent possible under law, the
+author(s) have dedicated all copyright and related and neighboring
+rights to the Software to the public domain worldwide. The Software is
+distributed WITHOUT ANY WARRANTY.
+
+If you did not receive a copy of the CC0 Public Domain Dedication
+along with the Software, see
+<http://creativecommons.org/publicdomain/zero/1.0/>
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..ec1f1cc
--- /dev/null
+++ b/README.md
@@ -0,0 +1,153 @@
+# OpenStreetMap Carto
+
+An implemention of the standard OpenStreetMap mapnik style, in CartoCSS.
+
+These stylesheets can be used in your own cartography projects, and are designed to be easily
+customised. They work with [TileMill](http://www.mapbox.com/tilemill/) and also with the command-line [CartoCSS](https://github.com/mapbox/carto) processor.
+
+Since August 2013 these stylesheets are used on the OSMF tileservers (tile.openstreetmap.org), and
+are updated from each point release. They supersede the previous [XML-based stylesheets](https://trac.openstreetmap.org/browser/subversion/applications/rendering/mapnik)
+
+# Setup
+
+You need OpenStreetMap data loaded into a PostGIS database (see below for [dependencies](https://github.com/gravitystorm/openstreetmap-carto#dependencies)). These stylesheets currently work only with the osm2pgsql defaults (i.e. database name is 'gis', table names are 'planet_osm_point' etc).
+
+It's probably easiest to grab an PBF of OSM data from [metro.teczno.com](http://metro.teczno.com/) or [geofabrik](http://download.geofabrik.de/). Once you've set up your PostGIS database, import with osm2pgsql:
+
+```
+osm2pgsql -d gis ~/path/to/data.osm.pbf --style openstreetmap-carto.style
+```
+
+Additionally you need some shapefiles.
+
+## Scripted download
+
+To download the shapefiles you can run the following script from this directory. No further steps should be needed as the data has been processed and placed in the requisite directories.
+
+```
+sh get-shapefiles.sh
+```
+
+## Manual download
+
+You can also download them manually at the following paths:
+
+* `simplified-land-polygons.shp` [download](http://data.openstreetmapdata.com/simplified-land-polygons-complete-3857.zip)
+* `land-polygon.shp` [download](http://data.openstreetmapdata.com/land-polygons-split-3857.zip)
+* `builtup_area.shp` [download](http://planet.openstreetmap.org/historical-shapefiles/world_boundaries-spherical.tgz) 
+* `ne_110m_admin_0_boundary_lines_land.shp` [download](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_boundary_lines_land.zip)
+* `ne_10m_populated_places_fixed.shp` [download](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places.zip) (and see below)
+
+Put these shapefiles at path/to/opentreetmap-carto/data
+
+### Populated places shapefile
+
+The Natural Earth 2.0 populated places shapefile contains data that triggers a bug in mapnik. As
+a workaround we run the shapefile through ogr2ogr to clean up the data.
+
+```
+ogr2ogr ne_10m_populated_places_fixed.shp ne_10m_populated_places.shp
+```
+
+See https://github.com/mapnik/mapnik/issues/1605 for more details.
+
+## Fonts
+The stylesheet depends on a number of openly licensed fonts for support of all the languages found on the map. The package which supplies these fonts on Ubuntu is indicated.
+
+If a font is missing, it will skip to the next available font which contains those characters. If you are not concerned with a particular language, you do not need its fonts. DejaVu Sans and Unifont are the two required fonts, and included on most systems.
+
+### Global
+* DejaVu Sans, for most languages (``ttf-dejavu``)
+* Droid Sans Fallback, as a reasonable fallback (``fonts-droid``)
+* Unifont, as a last resort fallback (``ttf-unifont``)
+
+### Southeast Asia
+* Arundina Sans, for Thai (``fonts-sipa-arundina``)
+* Padauk, for Burmese (``fonts-sil-padauk``)
+* Khmer OS Metal Chrieng Regular, for Khmer (``fonts-khmeros``)
+
+## Dependencies
+
+* [TileMill](http://mapbox.com/tilemill) - This is a TileMill project you can copy (or symlink) directly into your Mapbox/project directory
+
+If you aren't using TileMill, you can compile the CartoCSS stylesheets into Mapnik XML using the command-line `carto` command.
+
+* [carto](https://github.com/mapbox/carto) >= 0.9.3 (we're using instances with cascading rules)
+* [mapnik](https://github.com/mapnik/mapnik/wiki/Mapnik-Installation) >= 2.1.0
+
+---
+
+* [osm2pgsql](http://wiki.openstreetmap.org/wiki/Osm2pgsql) to import your data into a PostGIS database
+* [PostgreSQL](http://www.postgresql.org/)
+* [PostGIS](http://postgis.org/)
+* [ogr2ogr](http://www.gdal.org/) command line GDAL utility for processing vector data. here we use it to work around a encoding bug in the Nautral Earth data.
+* curl, unzip for downloading and decompressing files
+* shapeindex (a companion utility to Mapnik found in the mapnik-utils package) for indexing downloaded shapefiles
+
+# Roadmap
+
+## Initial Release (v1.0.0, December 2012)
+
+This was a full re-implementation of the original OSM style, with only a few bugs discovered later. There's been
+no interest in creating further point releases in the v1.x series.
+
+## Easier to wrangle (v2.x)
+
+There are a number of refactorings that can be made to the style, either to fix glitches
+with the current style, or to leverage new features in carto / mapnik to simplify the stylesheets
+with only small changes to the output. It's also appropriate to pull out some of the 'old-skool'
+tagging methods that are now rarely used.
+
+Care is being taken to not get too clever with variables and expressions. While these often make
+it easier to customise, experience has shown that over-cleverness (e.g. [interpolated entities][cleverness])
+can discourage contributions.
+
+The end goal will be a style that hews close to the current look of the standard style, but is
+much more suitable for further development, and/or forking for third-parties to customise.
+
+## Tackle the backlog (v3.x)
+
+There are over [400 open requests][trac] on trac, some that have been open for years. These need
+reviewing and dividing into obvious fixes, or additional new features that need some cartographic
+judgement. The work done already in v1.0 and v2.0 will make it much easier to process these.
+
+# CartoCSS Style Guidelines
+
+* Always specify zoom levels as either >= or < . Don't use = or =< or >
+* Open curly braces on the same line, and close on an empty line.
+* One space before and after = etc
+* Two space indents. No tabs.
+* space after : but not before
+* Dashes, not underscores, in layer names
+* Name SQL subqueries after the layer name (but use underscores)
+* Avoid restating defaults, e.g. don't add `point-allow-overlap = false`
+* Avoid repeating the layer name for layers with mutiple attachments, i.e., prefer
+
+```
+#layer {
+  ::outline {
+    line-width: 6;
+    line-color: black;
+  }
+  ::inline {
+    line-width: 2;
+    line-color: white;
+  }
+}
+```
+instead of
+
+```
+#layer::outline {
+    line-width: 6;
+    line-color: black;
+}
+#layer::inline {
+    line-width: 2;
+    line-color: white;
+}
+```
+* Order the selectors in a style-sheet in rough order of importance (i.e., highway=primary, then highway=secondary) and beyond that, add layers that are rendered later (i.e., higher) lower in the file.
+
+[trac]: https://trac.openstreetmap.org/query?component=mapnik&status=!closed&order=changetime&desc=1&max=500
+[cleverness]: https://github.com/openstreetmap/mapnik-stylesheets/blob/master/inc/settings.xml.inc.template#L16
diff --git a/TODO.md b/TODO.md
new file mode 100644
index 0000000..c496e12
--- /dev/null
+++ b/TODO.md
@@ -0,0 +1,28 @@
+# TODO
+
+## Roads
+
+turning circles for living streets
+turning circles for service
+widths for living streets
+highway area casing - should be wider
+highway area casing and fills should be variables
+tunnel casing widths
+tunnel fill widths
+motorway links are narrower than motorways (fair enough) but nothing else is (fix)
+service casing and fill widths
+pedestrian widths
+residential 10-13 width
+highway = road widths
+bridge casing widths
+paths etc widths
+paths etc colours
+railway colours
+paths etc tunnels
+track colours, width and dasharray
+track tunnels
+bridge casing
+bridge colour
+lowzoom widths
+tram width and colour
+guideways width and colour
diff --git a/addressing.mss b/addressing.mss
new file mode 100644
index 0000000..a01a46b
--- /dev/null
+++ b/addressing.mss
@@ -0,0 +1,49 @@
+#interpolation {
+  [zoom >= 17] {
+    line-color: #888;
+    line-width: 1;
+    line-dasharray: 2,4;
+  }
+}
+
+#housenumbers {
+  [zoom >= 17] {
+    text-name: "[addr:housenumber]";
+    text-placement: interior;
+    text-min-distance: 1;
+    text-wrap-width: 0;
+    text-face-name: @book-fonts;
+    text-fill: #444;
+    text-size: 9;
+  }
+}
+
+#housenames {
+  [zoom >= 17] {
+    text-name: "[addr:housename]";
+    text-placement: interior;
+    text-wrap-width: 20;
+    text-face-name: @book-fonts;
+    text-size: 8;
+    text-fill: #444;
+    [zoom >= 18] {
+      text-size: 9;
+    }
+  }
+}
+
+#building-text {
+  [way_area >= 150000][zoom >= 14],
+  [way_area >= 80000][zoom >= 15],
+  [way_area >= 20000][zoom >= 16],
+  [zoom >= 17] {
+    text-name: "[name]";
+    text-size: 11;
+    text-fill: #444;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 20;
+    text-halo-fill: rgba(255,255,255,0.5);
+    text-placement: interior;
+  }
+}
diff --git a/admin.mss b/admin.mss
new file mode 100644
index 0000000..dd7bdb9
--- /dev/null
+++ b/admin.mss
@@ -0,0 +1,117 @@
+ at admin-boundaries: #ac46ac;
+
+#admin-01234 {
+  [admin_level = '2'],
+  [admin_level = '3'] {
+    [zoom >= 4] {
+      line-color: @admin-boundaries;
+      line-width: 0.6;
+    }
+    [zoom >= 7] {
+      line-width: 2;
+    }
+    [zoom >= 10] {
+      [admin_level = '2'] {
+        line-width: 6;
+      }
+      [admin_level = '3'] {
+        line-width: 5;
+        line-dasharray: 4,2;
+        line-clip: false;
+      }
+    }
+  }
+  [admin_level = '4'] {
+    [zoom >= 4] {
+      line-color: @admin-boundaries;
+      line-width: 0.6;
+      line-dasharray: 4,3;
+      line-clip: false;
+    }
+    [zoom >= 7] {
+      line-width: 1;
+    }
+    [zoom >= 11] {
+      line-width: 3;
+    }
+  }
+  opacity: 0.4;
+}
+
+#admin-5678 {
+  [admin_level = '5'][zoom >= 11] {
+    line-color: @admin-boundaries;
+    line-width: 2;
+    line-dasharray: 6,3,2,3,2,3;
+    line-clip: false;
+  }
+  [admin_level = '6'][zoom >= 11] {
+    line-color: @admin-boundaries;
+    line-width: 2;
+    line-dasharray: 6,3,2,3;
+    line-clip: false;
+  }
+  [admin_level = '7'],
+  [admin_level = '8'] {
+    [zoom >= 12] {
+      line-color: @admin-boundaries;
+      line-width: 1.5;
+      line-dasharray: 5,2;
+      line-clip: false;
+    }
+  }
+  opacity: 0.5;
+}
+
+#admin-other {
+  [admin_level = '9'],
+  [admin_level = '10'] {
+    [zoom >= 13] {
+      line-color: @admin-boundaries;
+      line-width: 2;
+      line-dasharray: 2,3;
+      line-clip: false;
+    }
+  }
+  opacity: 0.5;
+}
+
+#admin-text[zoom >= 16] {
+  text-name: "[name]";
+  text-face-name: @book-fonts;
+  text-fill: @admin-boundaries;
+  text-placement: line;
+  text-halo-radius: 1.0;
+  text-placement: line;
+  text-dy: -10;
+}
+
+#national-park-boundaries {
+  [zoom >= 7] {
+    ::fill [zoom < 13] {
+      opacity: 0.05;
+      polygon-fill: green;
+    }
+    ::line {
+      opacity: 0.15;
+      line-color: green;
+      line-width: 1.5;
+      line-dasharray: 4,2;
+      [zoom >= 10] {
+        line-width: 3;
+        line-dasharray: 6,2;
+        line-join: bevel;
+      }
+    }
+  }
+  [way_area > 200000000][zoom >= 8][zoom < 12],
+  [zoom >= 11][zoom < 12] {
+    text-name: "[name]";
+    text-size: 8;
+    text-fill: #9c9;
+    text-face-name: @bold-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 14;
+    [zoom >= 11] { text-size: 11; }
+  }
+}
diff --git a/aerialways.mss b/aerialways.mss
new file mode 100644
index 0000000..6fef77f
--- /dev/null
+++ b/aerialways.mss
@@ -0,0 +1,20 @@
+#aerialways {
+  [aerialway = 'cable_car'],
+  [aerialway = 'gondola'],
+  [aerialway = 'goods'] {
+    [zoom >= 12] {
+      line-pattern-file: url('symbols/cable_car.png');
+    }
+  }
+
+  [aerialway = 'chair_lift'],
+  [aerialway = 'drag_lift'],
+  [aerialway = 't-bar'],
+  [aerialway = 'j-bar'],
+  [aerialway = 'platter'],
+  [aerialway = 'rope_tow'] {
+    [zoom >= 12] {
+      line-pattern-file: url('symbols/chair_lift.png');
+    }
+  }
+}
diff --git a/amenity-points.mss b/amenity-points.mss
new file mode 100644
index 0000000..42640f7
--- /dev/null
+++ b/amenity-points.mss
@@ -0,0 +1,1148 @@
+ at marina-text: #576ddf; // also swimming_pool
+ at military-text: #99001a;
+ at park-text: #2c4b2c;
+
+.points {
+  [tourism = 'alpine_hut'][zoom >= 13]::tourism {
+    point-file: url('symbols/alpinehut.p.16.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'shelter'][zoom >= 16]::amenity {
+    point-file: url('symbols/shelter2.p.16.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'atm'][zoom >=17]::amenity {
+    point-file: url('symbols/atm2.p.16.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'bank'][zoom >= 17]::amenity {
+    point-file: url('symbols/bank2.p.16.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'bar'][zoom >=17]::amenity {
+    point-file: url('symbols/bar.p.20.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'bicycle_rental'][zoom >= 17]::amenity {
+    point-file: url('symbols/rental_bicycle.p.20.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'bus_stop']::amenity,
+  [highway = 'bus_stop']::highway {
+    [zoom >= 16] {
+      point-file: url('symbols/bus_stop_small.png');
+      point-placement: interior;
+    }
+    [zoom >= 17] {
+      point-file: url('symbols/bus_stop.p.12.png');
+    }
+  }
+
+  [amenity = 'bus_station'][zoom >= 16]::amenity {
+    point-file: url('symbols/bus_station.n.16.png');
+    point-placement: interior;
+  }
+
+  [highway = 'traffic_signals'][zoom >= 17]::highway {
+    point-file: url('symbols/traffic_light.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'cafe'][zoom >=17]::amenity {
+    point-file: url('symbols/cafe.p.16.png');
+    point-placement: interior;
+  }
+
+  [tourism = 'camp_site'][zoom >= 16]::tourism {
+    point-file: url('symbols/camping.n.16.png');
+    point-placement: interior;
+  }
+
+  [highway = 'ford'][zoom >= 16]::highway {
+    point-file: url('symbols/transport_ford.p.16.png');
+    point-placement: interior;
+  }
+
+  [tourism = 'caravan_site'][zoom >= 16]::tourism {
+    point-file: url('symbols/caravan_park.p.24.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'car_sharing'][zoom >= 16]::amenity {
+    point-file: url('symbols/car_share.p.16.png');
+    point-placement: interior;
+  }
+
+  [tourism = 'chalet'][zoom >= 17]::tourism {
+    point-file: url('symbols/chalet.p.16.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'cinema'][zoom >= 17]::amenity {
+    point-file: url('symbols/cinema.p.24.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'fire_station'][zoom >= 17]::amenity {
+    point-file: url('symbols/firestation.p.16.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'fuel'][zoom >= 17]::amenity {
+    point-file: url('symbols/fuel.p.16.png');
+    point-placement: interior;
+  }
+
+  [tourism = 'guest_house'][zoom >= 17]::tourism {
+    point-file: url('symbols/guest_house.p.16.png');
+    point-placement: interior;
+  }
+
+  [tourism = 'bed_and_breakfast'][zoom >= 17]::tourism {
+    point-file: url('symbols/bandb.p.20.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'hospital'][zoom >= 15]::amenity {
+    point-file: url('symbols/hospital.p.16.png');
+    point-placement: interior;
+  }
+
+  [tourism = 'hostel'][zoom >= 17]::tourism {
+    point-file: url('symbols/hostel.p.20.png');
+    point-placement: interior;
+  }
+
+  [tourism = 'hotel'][zoom >= 17]::tourism {
+    point-file: url('symbols/hotel2.p.20.png');
+    point-placement: interior;
+  }
+
+  [tourism = 'motel'][zoom >= 17]::tourism {
+    point-file: url('symbols/motel.p.20.png');
+    point-placement: interior;
+  }
+
+  [tourism = 'information'][zoom >= 16]::tourism {
+    point-file: url('symbols/information.p.16.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'embassy'][zoom >= 17]::amenity {
+    point-file: url('symbols/embassy.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'library'][zoom >= 17]::amenity {
+    point-file: url('symbols/library.p.20.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'courthouse'][zoom > 17]::amenity {
+    point-file: url('symbols/amenity_court.p.20.png');
+    point-placement: interior;
+  }
+
+  [waterway = 'lock']::waterway,
+  [lock = 'yes']::lock {
+    [zoom >= 15] {
+      point-file: url('symbols/lock_gate.png');
+      point-placement: interior;
+    }
+  }
+
+  [man_made = 'mast'][zoom >= 17]::man_made {
+    point-file: url('symbols/communications.p.20.png');
+    point-placement: interior;
+  }
+
+  [tourism = 'museum'][zoom >= 17]::tourism {
+    point-file: url('symbols/museum.p.16.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'parking'][zoom >= 15]::amenity {
+    point-file: url('symbols/parking.p.16.png');
+    point-placement: interior;
+    [access != ''][access != 'public'][access != 'yes'] {
+      point-file: url('symbols/parking_private.p.16.png');
+    }
+  }
+
+  [amenity = 'pharmacy'][zoom >= 17]::amenity {
+    point-file: url('symbols/pharmacy.p.16.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'place_of_worship'][zoom >= 16]::amenity {
+    point-file: url('symbols/place_of_worship3.p.16.png');
+    point-placement: interior;
+    [religion = 'christian'] {
+      point-file: url('symbols/christian3.p.14.png');
+    }
+    [religion = 'muslim'] {
+      point-file: url('symbols/islamic3.p.16.png');
+    }
+    [religion = 'sikh'] {
+      point-file: url('symbols/sikh3.p.16.png');
+    }
+    [religion = 'jewish'] {
+      point-file: url('symbols/jewish3.p.16.png');
+    }
+    [religion = 'hindu'] {
+      point-file: url('symbols/hindu.png');
+    }
+    [religion = 'buddhist'] {
+      point-file: url('symbols/buddhist.png');
+    }
+    [religion = 'shinto'] {
+      point-file: url('symbols/shinto.png');
+    }
+    [religion = 'taoist'] {
+      point-file: url('symbols/taoist.png');
+    }
+  }
+
+  [amenity = 'police'][zoom >= 17]::amenity {
+    point-file: url('symbols/police.p.16.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'post_box'][zoom >= 17]::amenity {
+    point-file: url('symbols/post_box.p.16.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'post_office'][zoom >= 17]::amenity {
+    point-file: url('symbols/post_office.p.16.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'pub'][zoom >= 16]::amenity {
+    point-file: url('symbols/pub.p.16.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'biergarten'][zoom >= 16]::amenity {
+    point-file: url('symbols/biergarten.p.16.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'recycling'][zoom >= 16]::amenity {
+    point-file: url('symbols/recycling.p.16.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'restaurant'][zoom >= 17]::amenity {
+    point-file: url('symbols/restaurant.p.16.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'fast_food'][zoom >= 17]::amenity {
+    point-file: url('symbols/fast_food.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'telephone'][zoom >= 17]::amenity {
+    point-file: url('symbols/telephone.p.16.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'emergency_phone'][zoom >= 17]::amenity {
+    point-file: url('symbols/sosphone.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'theatre'][zoom >= 17]::amenity {
+    point-file: url('symbols/theatre.p.20.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'toilets'][zoom >= 17]::amenity {
+    point-file: url('symbols/toilets.p.20.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'drinking_water'][zoom >= 17]::amenity {
+    point-file: url('symbols/food_drinkingtap.p.20.png');
+    point-placement: interior;
+  }
+
+  [amenity = 'prison'][zoom >= 17]::amenity {
+    point-file: url('symbols/amenity_prison.p.20.png');
+    point-placement: interior;
+  }
+
+  [tourism = 'viewpoint'][zoom >= 16]::tourism {
+    point-file: url('symbols/view_point.p.16.png');
+    point-placement: interior;
+  }
+
+  [man_made = 'water_tower'][zoom >= 17]::man_made {
+    point-file: url('symbols/tower_water.p.20.png');
+    point-placement: interior;
+  }
+
+  [historic = 'memorial'][zoom >= 17]::historic {
+    point-file: url('symbols/tourist_memorial.p.20.png');
+    point-placement: interior;
+  }
+
+  [historic = 'archaeological_site'][zoom >= 16]::historic {
+    point-file: url('symbols/tourist_archaeological2.glow.24.png');
+    point-placement: interior;
+  }
+
+  [shop = 'supermarket'][zoom >= 16]::shop {
+    point-file: url('symbols/shop_supermarket.p.16.png');
+    point-placement: interior;
+  }
+
+  [shop = 'bakery'][zoom >= 17]::shop {
+    point-file: url('symbols/shop_bakery.p.16.png');
+    point-placement: interior;
+  }
+
+  [shop = 'butcher'][zoom >= 17]::shop {
+    point-file: url('symbols/shop_butcher.png');
+    point-placement: interior;
+  }
+
+  [shop = 'clothes']::shop,
+  [shop = 'fashion']::shop {
+    [zoom >= 17] {
+      point-file: url('symbols/shop_clothes.p.16.png');
+      point-placement: interior;
+    }
+  }
+
+  [shop = 'convenience'][zoom >= 17]::shop {
+    point-file: url('symbols/shop_convenience.p.16.png');
+    point-placement: interior;
+  }
+
+  [shop = 'department_store'][zoom >= 16]::shop {
+    point-file: url('symbols/department_store.p.16.png');
+    point-placement: interior;
+  }
+
+  [shop = 'doityourself'][zoom >= 17]::shop {
+    point-file: url('symbols/shop_diy.p.16.png');
+    point-placement: interior;
+  }
+
+  [shop = 'florist'][zoom >= 17]::shop {
+    point-file: url('symbols/florist.p.16.png');
+    point-placement: interior;
+  }
+
+  [shop = 'hairdresser'][zoom >= 17]::shop {
+    point-file: url('symbols/shop_hairdresser.p.16.png');
+    point-placement: interior;
+  }
+
+  [shop = 'car'][zoom >= 17]::shop {
+    point-file: url('symbols/shopping_car.p.16.png');
+    point-placement: interior;
+  }
+
+  [shop = 'car_repair'][zoom >= 17]::shop {
+    point-file: url('symbols/shopping_car_repair.p.16.png');
+    point-placement: interior;
+  }
+
+  [shop = 'bicycle'][zoom >= 17]::shop {
+    point-file: url('symbols/shopping_bicycle.p.16.png');
+    point-placement: interior;
+  }
+
+  [leisure = 'playground'][zoom >= 17]::leisure {
+    point-file: url('symbols/playground.p.20.png');
+    point-placement: interior;
+  }
+
+  [tourism = 'picnic_site'][zoom >= 16]::tourism {
+    point-file: url('symbols/picnic.p.16.png');
+    point-placement: interior;
+  }
+
+  [leisure = 'picnic_table'][zoom >= 17]::leisure {
+    point-file: url('symbols/picnic.p.16.png');
+    point-placement: interior;
+  }
+
+  [leisure = 'slipway'][zoom >= 17]::leisure {
+    point-file: url('symbols/transport_slipway.p.20.png');
+    point-placement: interior;
+  }
+}
+
+
+.text {
+  [place = 'island'][zoom >= 12]::place {
+    text-name: "[name]";
+    text-fill: #000;
+    text-size: 9;
+    text-face-name: @oblique-fonts;
+    text-halo-radius: 1;
+    text-placement: interior;
+  }
+
+  [amenity = 'pub']::amenity,
+  [amenity = 'restaurant']::amenity,
+  [amenity = 'cafe']::amenity,
+  [amenity = 'fast_food']::amenity,
+  [amenity = 'biergarten']::amenity {
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-fill: #734a08;
+      text-size: 10;
+      text-dy: 9;
+      text-face-name: @bold-fonts;
+      text-halo-radius: 1;
+      text-wrap-width: 34;
+      text-placement: interior;
+    }
+  }
+
+  [amenity = 'bar'][zoom >= 17]::amenity {
+    text-name: "[name]";
+    text-size: 10;
+    text-fill: #734a08;
+    text-dy: 11;
+    text-face-name: @bold-fonts;
+    text-halo-radius: 1;
+    text-placement: interior;
+  }
+
+  [amenity = 'library']::amenity,
+  [amenity = 'theatre']::amenity,
+  [amenity = 'courthouse']::amenity {
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: 10;
+      text-fill: #734a08;
+      text-dy: 12;
+      text-face-name: @bold-fonts;
+      text-halo-radius: 1;
+      text-placement: interior;
+    }
+  }
+
+  [amenity = 'cinema'][zoom >= 17]::amenity {
+    text-name: "[name]";
+    text-size: 10;
+    text-fill: #734a08;
+    text-dy: 14;
+    text-face-name: @bold-fonts;
+    text-halo-radius: 1;
+    text-placement: interior;
+  }
+
+  [amenity = 'parking'][zoom >= 17]::amenity {
+    text-name: "[name]";
+    text-size: 9;
+    text-fill: #0066ff;
+    text-dy: 9;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 34;
+    text-placement: interior;
+    [access != ''][access != 'public'][access != 'yes'] {
+      text-fill: #66ccaf;
+    }
+  }
+
+  [amenity = 'police'][zoom >= 17]::amenity {
+    text-name: "[name]";
+    text-size: 10;
+    text-fill: #734a08;
+    text-dy: 10;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 30;
+    text-placement: interior;
+  }
+
+  [amenity = 'fire_station'][zoom >= 17]::amenity {
+    text-name: "[name]";
+    text-size: 10;
+    text-fill: #734a08;
+    text-dy: 9;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 30;
+    text-placement: interior;
+  }
+
+  [amenity = 'place_of_worship'][zoom >= 17]::amenity {
+    text-name: "[name]";
+    text-size: 10;
+    text-fill: #000033;
+    text-dy: 12;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 30;
+    text-placement: interior;
+  }
+
+  [natural = 'wood'][zoom >= 15]::natural {
+    text-name: "[name]";
+    text-size: 10;
+    text-fill: darken(@wood, 50%);
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 10;
+    text-placement: interior;
+  }
+
+  [natural = 'peak']::natural,
+  [natural = 'volcano']::natural {
+    [zoom >= 13] {
+      text-name: "[name]";
+      text-size: 10;
+      text-fill: brown;
+      text-dy: 7;
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-placement: interior;
+      ele/text-name: "[ele]";
+      ele/text-size: 9;
+      ele/text-fill: brown;
+      ele/text-dy: 6;
+      ele/text-face-name: @oblique-fonts;
+      ele/text-halo-radius: 1;
+      ele/text-placement: interior;
+      [name != ''] {
+        ele/text-dy: 19;
+      }
+    }
+  }
+
+  [natural = 'cave_entrance'][zoom >= 15]::natural {
+    text-name: "[name]";
+    text-size: 10;
+    text-fill: brown;
+    text-dy: 9;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 20;
+    text-placement: interior;
+  }
+
+  [historic = 'memorial'][zoom >= 17]::historic {
+    text-name: "[name]";
+    text-size: 9;
+    text-fill: brown;
+    text-dy: 13;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 20;
+    text-placement: interior;
+  }
+
+  [historic = 'archaeological_site'][zoom >= 17]::historic {
+    text-name: "[name]";
+    text-size: 9;
+    text-fill: brown;
+    text-dy: 15;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 20;
+    text-placement: interior;
+  }
+
+  [natural = 'water']::natural,
+  [natural = 'lake']::natural,
+  [landuse = 'reservoir']::landuse,
+  [landuse = 'basin']::landuse {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 12;
+      text-fill: @water-text;
+      text-face-name: @oblique-fonts;
+      text-halo-radius: 1;
+      text-wrap-width: 20;
+      text-placement: interior;
+    }
+  }
+
+  [leisure = 'swimming_pool']::leisure {
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: @marina-text;
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-wrap-width: 10;
+      text-placement: interior;
+    }
+  }
+
+  [leisure = 'sports_centre']::leisure,
+  [leisure = 'stadium']::leisure,
+  [leisure = 'track']::leisure,
+  [leisure = 'pitch']::leisure {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: darken(@stadium, 30%);
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-wrap-width: 10;
+      text-placement: interior;
+    }
+  }
+
+  [leisure = 'playground']::leisure,
+  [leisure = 'park']::leisure,
+  [leisure = 'recreation_ground']::leisure,
+  [landuse = 'recreation_ground']::landuse,
+  [landuse = 'conservation']::landuse,
+  [landuse = 'village_green']::landuse,
+  [leisure = 'common']::leisure,
+  [leisure = 'garden']::leisure,
+  [leisure = 'golf_course']::leisure,
+  [leisure = 'nature_reserve']::leisure {
+    [way_area >= 150000][zoom >= 14],
+    [way_area >= 80000][zoom >= 15],
+    [way_area >= 20000][zoom >= 16],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: 11;
+      text-fill: @park-text;
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: 30;
+      text-placement: interior;
+    }
+  }
+
+  [landuse = 'quarry']::landuse {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: #000;
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-wrap-width: 10;
+    }
+  }
+
+  [landuse = 'vineyard']::landuse,
+  [landuse = 'orchard']::landuse  {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: darken(@vineyard, 50%);
+      text-face-name: @book-fonts;
+      // extra halo needed to overpower the cemetery polygon pattern
+      text-halo-radius: 1.5;
+      text-wrap-width: 10;
+    }
+  }
+
+  [landuse = 'cemetery']::landuse,
+  [landuse = 'grave_yard']::landuse  {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: darken(@cemetery, 50%);
+      text-face-name: @book-fonts;
+      // extra halo needed to overpower the cemetery polygon pattern
+      text-halo-radius: 1.5;
+      text-wrap-width: 10;
+    }
+  }
+
+  [landuse = 'residential']::landuse {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: #000;
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-wrap-width: 10;
+    }
+  }
+
+  [landuse = 'garages']::landuse {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: darken(@garages, 50%);
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-wrap-width: 10;
+    }
+  }
+
+  [landuse = 'field']::landuse {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: darken(@field, 50%);
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-wrap-width: 10;
+    }
+  }
+
+  [landuse = 'meadow']::landuse,
+  [landuse = 'grass']::landuse  {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: darken(@grass, 65%);
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-wrap-width: 10;
+    }
+  }
+
+  [landuse = 'allotments']::landuse {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: darken(@allotments, 60%);
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-wrap-width: 10;
+    }
+  }
+
+  [landuse = 'forest']::landuse {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: darken(@forest, 50%);
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-wrap-width: 10;
+    }
+  }
+
+  [landuse = 'farm']::landuse,
+  [landuse = 'farmland']::landuse,
+  [landuse = 'farmyard']::landuse {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: darken(@farm, 70%);
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-wrap-width: 10;
+    }
+  }
+
+  [landuse = 'retail']::landuse {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: darken(@retail, 60%);
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-wrap-width: 10;
+    }
+  }
+
+  [landuse = 'industrial']::landuse,
+  [landuse = 'railway']::landuse {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: darken(@industrial, 60%);
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-wrap-width: 10;
+    }
+  }
+
+  [landuse = 'commercial']::landuse {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: darken(@commercial, 60%);
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-wrap-width: 10;
+    }
+  }
+
+  [landuse = 'brownfield']::landuse,
+  [landuse = 'landfill']::landuse,
+  [landuse = 'greenfield']::landuse,
+  [landuse = 'construction']::landuse {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: darken(@construction, 50%);
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-wrap-width: 10;
+    }
+  }
+
+  [natural = 'bay'][zoom >= 14]::natural {
+    text-name: "[name]";
+    text-size: 10;
+    text-fill: #6699cc;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 20;
+    text-placement: interior;
+  }
+
+  [natural = 'spring'][zoom >= 16]::natural {
+    text-name: "[name]";
+    text-size: 10;
+    text-fill: #6699cc;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 20;
+    text-placement: interior;
+    text-dy: 6;
+  }
+
+  [tourism = 'alpine_hut'][zoom >= 15]::tourism {
+    text-name: "[name]";
+    text-size: 9;
+    text-fill: #6699cc;
+    text-dy: 10;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-placement: interior;
+    [zoom >= 16] {
+      ele/text-name: "[ele]";
+      ele/text-size: 8;
+      ele/text-fill: #6699cc;
+      ele/text-dy: 22;
+      ele/text-face-name: @oblique-fonts;
+      ele/text-halo-radius: 1;
+      ele/text-placement: interior;
+    }
+  }
+
+  [amenity = 'shelter'][zoom >= 17]::amenity {
+    text-name: "[name]";
+    text-size: 9;
+    text-fill: #6699cc;
+    text-dy: 10;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-placement: interior;
+    ele/text-name: "[ele]";
+    ele/text-size: 8;
+    ele/text-fill: #6699cc;
+    ele/text-dy: 22;
+    ele/text-face-name: @oblique-fonts;
+    ele/text-halo-radius: 1;
+    ele/text-placement: interior;
+  }
+
+  [amenity = 'bank'][zoom >= 17]::amenity {
+    text-name: "[name]";
+    text-size: 9;
+    text-fill: black;
+    text-dy: 9;
+    text-halo-radius: 1;
+    text-placement: interior;
+    text-face-name: @book-fonts;
+  }
+
+  [tourism = 'hotel']::tourism,
+  [tourism = 'motel']::tourism,
+  [tourism = 'hostel']::tourism,
+  [tourism = 'chalet']::tourism {
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: 10;
+      text-fill: #0066ff;
+      text-dy: 11;
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-placement: interior;
+    }
+  }
+
+  [amenity = 'embassy'][zoom >= 17]::amenity {
+    text-name: "[name]";
+    text-size: 9;
+    text-fill: #0066ff;
+    text-dy: 8;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-placement: interior;
+  }
+
+  [tourism = 'guest_house'][zoom >= 17]::tourism {
+    text-name: "[name]";
+    text-size: 8;
+    text-fill: #0066ff;
+    text-dy: 10;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-placement: interior;
+  }
+
+  [tourism = 'bed_and_breakfast'][zoom >= 17]::tourism {
+    text-name: "[name]";
+    text-size: 8;
+    text-fill: #0066ff;
+    text-dy: 8;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-placement: interior;
+  }
+
+  [amenity = 'fuel']::amenity,
+  [amenity = 'bus_station']::amenity {
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: #0066ff;
+      text-dy: 9;
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+    }
+  }
+
+  [tourism = 'camp_site'][zoom >= 17]::tourism {
+    text-name: "[name]";
+    text-size: 10;
+    text-fill: #0066ff;
+    text-dy: 15;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 70;
+  }
+
+  [tourism = 'caravan_site'][zoom >= 17]::tourism {
+    text-name: "[name]";
+    text-size: 10;
+    text-fill: #0066ff;
+    text-dy: 19;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 70;
+  }
+
+  [waterway = 'lock'][zoom >= 15]::waterway {
+    text-name: "[name]";
+    text-size: 9;
+    text-dy: 10;
+    text-fill: #0066ff;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 70;
+  }
+
+  [leisure = 'marina'][zoom >= 15]::leisure {
+    text-name: "[name]";
+    text-size: 8;
+    text-fill: @marina-text;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 30;
+    text-placement: interior;
+    [zoom >= 17] {
+      text-size: 10;
+    }
+  }
+
+  [tourism = 'theme_park'][zoom >= 14]::tourism {
+    text-name: "[name]";
+    text-size: 8;
+    text-fill: #734a08;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 30;
+    text-placement: interior;
+    [zoom >= 16] {
+      text-size: 10;
+    }
+  }
+
+  [tourism = 'museum'][zoom >= 17]::tourism {
+    text-name: "[name]";
+    text-size: 10;
+    text-dy: 10;
+    text-fill: #734a08;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-placement: interior;
+  }
+
+  [amenity = 'prison'][zoom >= 17]::amenity {
+    text-name: "[name]";
+    text-size: 10;
+    text-fill: #734a08;
+    text-dy: 16;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-placement: interior;
+  }
+
+  [tourism = 'attraction'][zoom >= 16]::tourism {
+    text-name: "[name]";
+    text-size: 10;
+    text-fill: #660033;
+    text-face-name: @book-fonts;
+    text-halo-radius: 2;
+    text-wrap-width: 10;
+    text-placement: interior;
+  }
+
+  [amenity = 'university'][zoom >= 15]::amenity {
+    text-name: "[name]";
+    text-size: 9;
+    text-fill: #000033;
+    text-face-name: @bold-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 16;
+    text-placement: interior;
+  }
+
+  [amenity = 'school']::amenity,
+  [amenity = 'college']::amenity {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: #000033;
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-wrap-width: 14;
+      text-placement: interior;
+    }
+  }
+
+  [amenity = 'kindergarten'][zoom >= 16]::amenity {
+    text-name: "[name]";
+    text-size: 8;
+    text-fill: #000033;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 14;
+    text-placement: interior;
+  }
+
+  [man_made = 'lighthouse'][zoom >= 15]::man_made {
+    text-name: "[name]";
+    text-size: 9;
+    text-fill: #000033;
+    text-dy: 16;
+    text-face-name: @book-fonts;
+    text-halo-radius: 2;
+    text-wrap-width: 12;
+    text-placement: interior;
+  }
+
+  [man_made = 'windmill'][zoom >= 17]::man_made {
+    text-name: "[name]";
+    text-size: 9;
+    text-fill: #734a08;
+    text-dy: 12;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 20;
+    text-placement: interior;
+  }
+
+  [amenity = 'hospital'][zoom >= 16]::amenity {
+    text-name: "[name]";
+    text-fill: #da0092;
+    text-size: 8;
+    text-dy: 10;
+    text-face-name: @book-fonts;
+    text-halo-radius: 2;
+    text-wrap-width: 24;
+    text-placement: interior;
+  }
+
+  [amenity = 'pharmacy'][zoom >= 17]::amenity {
+    text-name: "[name]";
+    text-size: 8;
+    text-dy: 10;
+    text-fill: #da0092;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 12;
+    text-placement: interior;
+  }
+
+  [shop = 'bakery']::shop,
+  [shop = 'clothes']::shop,
+  [shop = 'fashion']::shop,
+  [shop = 'convenience']::shop,
+  [shop = 'doityourself']::shop,
+  [shop = 'hairdresser']::shop,
+  [shop = 'butcher']::shop,
+  [shop = 'car']::shop,
+  [shop = 'car_repair']::shop,
+  [shop = 'bicycle']::shop,
+  [shop = 'florist']::shop {
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: 8;
+      text-dy: 10;
+      text-fill: #939;
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-wrap-width: 12;
+      text-placement: interior;
+    }
+  }
+
+  [shop = 'supermarket']::shop,
+  [shop = 'department_store']::shop {
+    [zoom >= 16] {
+      text-name: "[name]";
+      text-size: 9;
+      text-dy: 9;
+      text-fill: #939;
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-wrap-width: 20;
+      text-placement: interior;
+    }
+  }
+
+  [military = 'danger_area'][zoom >= 12]::military {
+    text-name: "[name]";
+    text-size: 9;
+    text-fill: @military-text;
+    text-face-name: @bold-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 10;
+    text-placement: interior;
+  }
+
+  [landuse = 'military']::landuse {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: @military-text;
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-wrap-width: 10;
+      text-placement: interior;
+    }
+  }
+
+  [aeroway = 'gate'][zoom >= 17]::aeroway {
+    text-name: "[ref]";
+    text-size: 10;
+    text-fill: #aa66cc;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-wrap-width: 10;
+    text-placement: interior;
+  }
+}
diff --git a/amenity-symbols.mss b/amenity-symbols.mss
new file mode 100644
index 0000000..f1699da
--- /dev/null
+++ b/amenity-symbols.mss
@@ -0,0 +1,112 @@
+.symbols {
+  [aeroway = 'helipad'][zoom >= 16]::aeroway {
+    point-file: url('symbols/helipad.p.16.png');
+    text-name: "[name]";
+    text-size: 8;
+    text-fill: #6692da;
+    text-dy: -10;
+    text-face-name: @bold-fonts;
+    text-halo-radius: 1;
+    text-placement: interior;
+  }
+
+  [aeroway = 'aerodrome'][zoom >= 10][zoom < 13]::aeroway {
+    [zoom < 11] {
+      point-file: url('symbols/aerodrome.p.16.png');
+      text-dy: -12;
+    }
+    text-name: "[name]";
+    text-size: 8;
+    text-fill: #6692da;
+    text-face-name: @oblique-fonts;
+    text-halo-radius: 1;
+    text-placement: interior;
+  }
+
+  [railway = 'level_crossing'][zoom >= 14]::railway {
+    point-file: url('symbols/level_crossing.png');
+    point-placement: interior;
+    [zoom >= 16] {
+      point-file: url('symbols/level_crossing2.png');
+    }
+  }
+
+  [man_made = 'lighthouse'][zoom >= 15]::man_made {
+    point-file: url('symbols/lighthouse.p.20.png');
+    point-placement: interior;
+  }
+
+  [natural = 'peak'][zoom >= 11]::natural {
+    point-file: url('symbols/peak.png');
+    point-placement: interior;
+  }
+
+  [natural = 'volcano'][zoom >= 11]::natural {
+    point-file: url('symbols/volcano.png');
+    point-placement: interior;
+  }
+
+  [natural = 'cave_entrance'][zoom >= 15]::natural {
+    point-file: url('symbols/poi_cave.p.16.png');
+    point-placement: interior;
+  }
+
+  [natural = 'spring'][zoom >= 14]::natural {
+    point-file: url('symbols/spring.png');
+    point-placement: interior;
+  }
+
+  [natural = 'tree'][zoom >= 16]::natural {
+    point-file: url('symbols/tree.png');
+    point-ignore-placement: true;
+    point-placement: interior;
+    [zoom >= 17] {
+      point-file: url('symbols/tree2.png');
+    }
+  }
+
+  [power = 'generator']['generator:source' = 'wind']::power,
+  [power = 'generator'][power_source = 'wind']::power,
+  [man_made = 'power_wind'] {
+    [zoom >= 15] {
+      point-file: url('symbols/power_wind.png');
+      point-placement: interior;
+    }
+  }
+
+  [man_made = 'windmill'][zoom >= 16]::man_made {
+    point-file: url('symbols/windmill.png');
+    point-placement: interior;
+  }
+
+  [man_made = 'mast'][zoom >= 17]::man_made {
+    point-file: url('symbols/communications.p.20.png');
+    point-placement: interior;
+  }
+
+  [highway = 'mini_roundabout'][zoom >= 15]::highway {
+    point-file: url('symbols/mini_round.png');
+    point-placement: interior;
+  }
+
+  [highway = 'gate']::highway,
+  [barrier = 'gate']::barrier {
+    [zoom >= 15] {
+      point-file: url('symbols/gate2.png');
+      point-placement: interior;
+    }
+  }
+
+  [barrier = 'lift_gate'][zoom >= 16]::barrier {
+    point-file: url('symbols/liftgate.png');
+    point-placement: interior;
+  }
+
+  [barrier = 'bollard'],
+  [barrier = 'block'] {
+    [zoom >= 16] {
+      point-file: url('symbols/bollard.png');
+      point-placement: interior;
+    }
+  }
+}
diff --git a/buildings.mss b/buildings.mss
new file mode 100644
index 0000000..9e988c4
--- /dev/null
+++ b/buildings.mss
@@ -0,0 +1,52 @@
+#buildings-lz {
+  [zoom >= 10] {
+    [railway = 'station']::railway,
+    [building = 'station'] {
+      polygon-fill: #d4aaaa;
+      polygon-clip: false;
+    }
+
+    [building = 'supermarket'] {
+      polygon-fill: pink;
+      polygon-opacity: 0.5;
+      polygon-clip: false;
+    }
+
+    [amenity = 'place_of_worship']::amenity {
+      polygon-opacity: 0.5;
+      polygon-fill: #777;
+      polygon-clip: false;
+      [zoom >= 15] {
+        polygon-opacity: 0.9;
+        polygon-fill: #aaa;
+        line-width: 0.3;
+        line-color: #111;
+      }
+    }
+  }
+}
+
+#buildings {
+  [building = 'INT-light'][zoom >= 12] {
+    polygon-fill: #bca9a9;
+    polygon-opacity: 0.7;
+    polygon-clip: false;
+  }
+  [building != 'INT-light'][building != ''][zoom >= 12] {
+    polygon-fill: #bca9a9;
+    polygon-opacity: 0.9;
+    polygon-clip: false;
+    [zoom >= 16] {
+      line-color: #330066;
+      line-width: 0.2;
+    }
+  }
+  [aeroway = 'terminal'][zoom >= 12]::aeroway {
+    polygon-fill: #cc99ff;
+    polygon-clip: false;
+    [zoom >= 14] {
+      line-color: #330066;
+      line-width: 0.2;
+    }
+  }
+}
diff --git a/citywalls.mss b/citywalls.mss
new file mode 100644
index 0000000..02ae59d
--- /dev/null
+++ b/citywalls.mss
@@ -0,0 +1,24 @@
+#citywalls {
+  [zoom >= 14] {
+    line-color: grey;
+    line-width: 4;
+    line-opacity: 0.8;
+    [zoom >= 15] {
+      line-width: 6;
+    }
+    [zoom >= 16] {
+      line-width: 9;
+    }
+  }
+}
+
+.castlewalls {
+  [zoom >= 14] {
+    line-color: #999;
+    line-width: 1;
+  }
+  [zoom >= 16] {
+    line-color: #888;
+    line-width: 2;
+  }
+}
diff --git a/ferry-routes.mss b/ferry-routes.mss
new file mode 100644
index 0000000..57145df
--- /dev/null
+++ b/ferry-routes.mss
@@ -0,0 +1,11 @@
+#ferry-routes {
+  [zoom >= 7] {
+    line-color: #66f;
+    line-width: 0.4;
+    line-dasharray: 4,4;
+    [zoom >= 11] {
+      line-width: 0.8;
+      line-dasharray: 6,6;
+    }
+  }
+}
diff --git a/get-shapefiles.sh b/get-shapefiles.sh
new file mode 100755
index 0000000..e21945f
--- /dev/null
+++ b/get-shapefiles.sh
@@ -0,0 +1,65 @@
+#!/bin/bash
+set -e -u
+
+UNZIP_OPTS=-qqu
+
+# create and populate data dir
+
+mkdir -p data/
+mkdir -p data/world_boundaries
+mkdir -p data/simplified-land-polygons-complete-3857
+mkdir -p data/ne_110m_admin_0_boundary_lines_land
+mkdir -p data/ne_10m_populated_places
+mkdir -p data/land-polygons-split-3857
+
+# world_boundaries
+echo "dowloading world_boundaries..."
+curl -z "data/world_boundaries-spherical.tgz" -L -o "data/world_boundaries-spherical.tgz" "http://planet.openstreetmap.org/historical-shapefiles/world_boundaries-spherical.tgz"
+echo "expanding world_boundaries..."
+tar -xzf data/world_boundaries-spherical.tgz -C data/
+
+# simplified-land-polygons-complete-3857
+echo "downloading simplified-land-polygons-complete-3857..."
+curl -z "data/simplified-land-polygons-complete-3857.zip" -L -o "data/simplified-land-polygons-complete-3857.zip" "http://data.openstreetmapdata.com/simplified-land-polygons-complete-3857.zip"
+echo "simplified-land-polygons-complete-3857..."
+unzip $UNZIP_OPTS data/simplified-land-polygons-complete-3857.zip simplified-land-polygons-complete-3857/simplified_land_polygons.{shp,shx,prj,dbf,cpg} -d data/
+
+# ne_110m_admin_0_boundary_lines_land
+echo "dowloading ne_110m_admin_0_boundary_lines_land..."
+curl -z data/ne_110m_admin_0_boundary_lines_land.zip -L -o data/ne_110m_admin_0_boundary_lines_land.zip http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_boundary_lines_land.zip
+echo "expanding ne_110m_admin_0_boundary_lines_land..."
+unzip $UNZIP_OPTS data/ne_110m_admin_0_boundary_lines_land.zip -d data/ne_110m_admin_0_boundary_lines_land/
+
+# ne_10m_populated_places
+echo "dowloading ne_10m_populated_places..."
+curl -z data/ne_10m_populated_places.zip -L -o data/ne_10m_populated_places.zip http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places.zip
+echo "expanding ne_10m_populated_places..."
+unzip $UNZIP_OPTS data/ne_10m_populated_places.zip -d data/ne_10m_populated_places/
+
+# land-polygons-split-3857
+echo "dowloading land-polygons-split-3857..."
+curl -z "data/land-polygons-split-3857.zip" -L -o "data/land-polygons-split-3857.zip" "http://data.openstreetmapdata.com/land-polygons-split-3857.zip"
+echo "expanding land-polygons-split-3857..."
+unzip $UNZIP_OPTS data/land-polygons-split-3857.zip -d data/
+
+
+#process populated places
+echo "processing ne_10m_populated_places..."
+rm -f data/ne_10m_populated_places/ne_10m_populated_places_fixed.*
+ogr2ogr --config SHAPE_ENCODING UTF8 data/ne_10m_populated_places/ne_10m_populated_places_fixed.shp data/ne_10m_populated_places/ne_10m_populated_places.shp
+
+#index
+echo "indexing shapefiles"
+
+shapeindex --shape_files \
+data/simplified-land-polygons-complete-3857/simplified_land_polygons.shp \
+data/land-polygons-split-3857/land_polygons.shp \
+data/ne_10m_populated_places/ne_10m_populated_places_fixed.shp \
+data/ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp
+
+
+#clean up
+echo "cleaning up..."
+rm data/ne_10m_populated_places/ne_10m_populated_places.*
+
+echo "...done!"
diff --git a/landcover.mss b/landcover.mss
new file mode 100644
index 0000000..b460703
--- /dev/null
+++ b/landcover.mss
@@ -0,0 +1,436 @@
+// --- Parks, woods, other green things ---
+
+ at forest: #a0cf85;
+ at grass: #cfeca8; // also meadow, common, garden, village_green, conservation
+ at golf_course: #b5e3b5;
+ at natural: #c6e4b4; // also grassland
+ at park: #b6fdb6; // also recreation_ground
+ at wood: #aed1a0;
+ at vineyard: #abdf96;
+
+// --- sports ---
+
+ at stadium: #3c9; // also sports_centre
+ at track: #74dcba;
+ at pitch: #8ad3af;
+
+// --- Other ----
+
+ at aerodrome: #ccc;
+ at allotments: #e5c7ab;
+ at apron: #e9d1ff;
+ at attraction: #f2caea;
+ at barracks: #ff8f8f;
+ at campsite: #ccff99; // also caravan_site, picnic_site
+ at cemetery: #aacbaf; // also grave_yard
+ at construction: #9d9d6c;
+ at commercial: #efc8c8;
+ at danger_area: pink;
+ at desert: #e3b57a;
+ at field: #660;
+ at garages: #996;
+ at heath: #d6d99f;
+ at industrial: #dfd1d6; // also railway
+ at farmyard: #ddbf92;
+ at farm: #ead8bd; // also farmland
+ at parking: #f7efb7;
+ at playground: #ccfff1;
+ at power: #bbb;
+ at rest_area: #efc8c8; // also services
+ at retail: #f1dada;
+ at residential: #ddd;
+ at sand: #ffdf88;
+ at school: #f0f0d8; // also university, college, hospital, kindergarten
+
+#landcover {
+ [feature = 'leisure_swimming_pool'][zoom >= 14] {
+    polygon-fill: @water-color;
+    line-color: blue;
+    line-width: 0.5;
+  }
+
+  [feature = 'leisure_playground'][zoom >= 13] {
+    polygon-fill: @playground;
+    line-color: #666;
+    line-width: 0.3;
+  }
+
+  [feature = 'tourism_camp_site'],
+  [feature = 'tourism_caravan_site'],
+  [feature = 'tourism_picnic_site'] {
+    [zoom >= 13] {
+      polygon-fill: @campsite;
+      polygon-opacity: 0.5;
+      line-color: #666;
+      line-width: 0.3;
+    }
+  }
+
+  [feature = 'tourism_attraction'][zoom >= 10] {
+    polygon-fill: @attraction;
+  }
+
+  [feature = 'landuse_quarry'][zoom >= 11] {
+    polygon-pattern-file: url('symbols/quarry2.png');
+    line-width: 0.5;
+    line-color: grey;
+  }
+
+  [feature = 'landuse_vineyard'] {
+    [zoom >= 10][zoom < 13] {
+      polygon-fill: @vineyard;
+    }
+    [zoom >= 13] {
+      polygon-pattern-file: url('symbols/vineyard.png');
+    }
+  }
+
+  [feature = 'landuse_orchard'][zoom >= 10] {
+    polygon-pattern-file: url('symbols/orchard.png');
+  }
+
+  [feature = 'landuse_cemetery'],
+  [feature = 'landuse_grave_yard'],
+  [feature = 'amenity_grave_yard'] {
+    [zoom >= 10][zoom < 14] {
+      polygon-fill: @cemetery;
+    }
+    [zoom >= 14] {
+      [religion = 'jewish'] { polygon-pattern-file: url('symbols/cemetery_jewish.18.png'); }
+      [religion = 'christian'] { polygon-pattern-file: url('symbols/grave_yard.png'); }
+      [religion = 'INT-generic'] { polygon-pattern-file: url('symbols/grave_yard_generic.png'); }
+    }
+  }
+
+  [feature = 'landuse_residential'][zoom >= 10] {
+    polygon-fill: @residential;
+  }
+
+  [feature = 'landuse_garages'][zoom >= 12] {
+    polygon-fill: @garages;
+    polygon-opacity: 0.2;
+  }
+
+  [feature = 'military_barracks'][zoom >= 10] {
+    polygon-fill: @barracks;
+  }
+
+  [feature = 'landuse_field'],
+  [feature = 'natural_field'] {
+    [zoom >= 10] {
+      polygon-fill: @field;
+      polygon-opacity: 0.2;
+      [zoom >= 14] {
+        line-width: 0.3;
+        line-opacity: 0.4;
+        line-color: #660;
+      }
+    }
+  }
+
+  [feature = 'military_danger_area'] {
+    [zoom >= 9][zoom < 11] {
+      polygon-fill: @danger_area;
+      polygon-opacity: 0.3;
+    }
+    [zoom >= 11] {
+      polygon-pattern-file: url('symbols/danger.png');
+    }
+  }
+
+  [feature = 'landuse_meadow'],
+  [feature = 'landuse_grass'] {
+    [zoom >= 10] {
+      polygon-fill: @grass;
+    }
+  }
+
+  [feature = 'leisure_park'],
+  [feature = 'leisure_recreation_ground'] {
+    [zoom >= 10] {
+      polygon-fill: @park;
+      polygon-opacity: 0.6;
+    }
+  }
+
+  [feature = 'tourism_zoo'][zoom >= 10] {
+    polygon-pattern-file: url('symbols/zoo.png');
+  }
+
+  [feature = 'leisure_common'][zoom >= 10] {
+    polygon-fill: @grass;
+  }
+
+  [feature = 'leisure_garden'][zoom >= 10] {
+    polygon-fill: @grass;
+  }
+
+  [feature = 'leisure_golf_course'][zoom >= 10] {
+    polygon-fill: @golf_course;
+  }
+
+  [feature = 'landuse_allotments'] {
+    [zoom >= 10][zoom < 14] {
+      polygon-fill: @allotments;
+    }
+    [zoom >= 14] {
+      polygon-pattern-file: url('symbols/allotments.png');
+    }
+  }
+
+  [feature = 'landuse_forest'] {
+    [zoom >= 8] {
+      polygon-fill: @forest;
+    }
+    [zoom >= 14] {
+      polygon-pattern-file: url('symbols/forest.png');
+    }
+  }
+
+  [feature = 'landuse_farmyard'][zoom >= 9] {
+    polygon-fill: @farmyard;
+  }
+
+  [feature = 'landuse_farm'],
+  [feature = 'landuse_farmland'] {
+    [zoom >= 9] {
+      polygon-fill: @farm;
+    }
+  }
+
+  [feature = 'landuse_recreation_ground'],
+  [feature = 'landuse_conservation'] {
+    [zoom >= 10] {
+      polygon-fill: @grass;
+    }
+  }
+
+  [feature = 'landuse_village_green'][zoom >= 11] {
+    polygon-fill: @grass;
+  }
+
+  [feature = 'landuse_retail'][zoom >= 10] {
+    polygon-fill: @retail;
+    [zoom >= 15] {
+      line-width: 0.3;
+      line-color: red;
+    }
+  }
+
+  [feature = 'landuse_industrial'],
+  [feature = 'landuse_railway'] {
+    [zoom >= 10] {
+      polygon-fill: @industrial;
+    }
+  }
+
+  [feature = 'power_station'],
+  [feature = 'power_generator'] {
+    [zoom >= 10] {
+      polygon-fill: @power;
+      [zoom >= 12] {
+        line-width: 0.4;
+        line-color: #555;
+      }
+    }
+  }
+
+  [feature = 'power_sub_station'][zoom >= 13] {
+    polygon-fill: @power;
+    line-width: 0.4;
+    line-color: #555;
+  }
+
+  [feature = 'landuse_commercial'][zoom >= 10] {
+    polygon-fill: @commercial;
+  }
+
+  [feature = 'landuse_brownfield'],
+  [feature = 'landuse_landfill'],
+  [feature = 'landuse_greenfield'],
+  [feature = 'landuse_construction'] {
+    [zoom >= 10] {
+      polygon-fill: @construction;
+      polygon-opacity: 0.7;
+    }
+  }
+
+  [feature = 'natural_wood'] {
+    [zoom >= 8] {
+      polygon-fill: @wood;
+    }
+  }
+
+  [feature = 'natural_desert'][zoom >= 8] {
+    polygon-fill: @desert;
+  }
+
+  [feature = 'natural_sand'][zoom >= 10] {
+    polygon-fill: @sand;
+  }
+
+  [feature = 'natural_heath'][zoom >= 10] {
+    polygon-fill: @heath;
+  }
+
+  [feature = 'natural_grassland'][zoom >= 10] {
+    polygon-fill: #c6e4b4;
+  }
+
+  [feature = 'natural_scrub'] {
+    [zoom >= 10][zoom < 14] {
+      polygon-fill: #b5e3b5;
+    }
+    [zoom >= 14] {
+      polygon-pattern-file: url('symbols/scrub.png');
+    }
+  }
+
+  [feature = 'amenity_university'],
+  [feature = 'amenity_college'],
+  [feature = 'amenity_school'],
+  [feature = 'amenity_hospital'],
+  [feature = 'amenity_kindergarten'] {
+    [zoom >= 10] {
+      polygon-fill: @school;
+      [zoom >= 12] {
+        line-width: 0.3;
+        line-color: brown;
+      }
+    }
+  }
+
+  [feature = 'amenity_parking'][zoom >= 10] {
+    polygon-fill: @parking;
+    [zoom >= 15] {
+      line-width: 0.3;
+      line-color: @parking;
+    }
+  }
+
+  [feature = 'aeroway_apron'][zoom >= 12] {
+    polygon-fill: @apron;
+  }
+
+  [feature = 'aeroway_aerodrome'][zoom >= 12] {
+    polygon-fill: @aerodrome;
+    polygon-opacity: 0.2;
+    line-width: 0.2;
+    line-color: #555;
+  }
+
+  [feature = 'natural_beach'][zoom >= 13] {
+    polygon-pattern-file: url('symbols/beach.png');
+  }
+
+  [feature = 'highway_services'],
+  [feature = 'highway_rest_area'] {
+    [zoom >= 14] {
+      polygon-fill: @rest_area;
+    }
+  }
+}
+
+/* man_made=cutline */
+#landcover-line {
+  [zoom >= 14] {
+    line-width: 3;
+    line-join: round;
+    line-cap: square;
+    line-color: @land-color;
+    [zoom >= 16] {
+      line-width: 6;
+    }
+  }
+}
+
+#sports-grounds {
+  [leisure = 'sports_centre'],
+  [leisure = 'stadium'] {
+    [zoom >= 10] {
+      polygon-fill: @stadium;
+    }
+  }
+
+  [leisure = 'track'][zoom >= 10] {
+    polygon-fill: @track;
+    line-width: 0.5;
+    line-color: #888;
+  }
+
+  [leisure = 'pitch'][zoom >= 10] {
+    polygon-fill: @pitch;
+    line-width: 0.5;
+    line-color: #888;
+  }
+}
+
+
+#landuse-overlay {
+  [landuse = 'military'][zoom >= 10]::landuse {
+    polygon-pattern-file: url('symbols/military_red_hatch.png');
+    polygon-pattern-alignment: global;
+    line-color: #f55;
+    line-width: 3;
+    line-opacity: 0.329;
+  }
+  [leisure = 'nature_reserve'][zoom >= 10] {
+    polygon-pattern-file: url('symbols/nature_reserve5.png');
+    line-color: #6c3;
+    line-width: 0.5;
+    [zoom >= 14] {
+      polygon-pattern-file: url('symbols/nature_reserve6.png');
+      line-width: 1;
+    }
+  }
+}
+
+#cliffs {
+  [natural = 'cliff'][zoom >= 13] {
+    line-pattern-file: url('symbols/cliff.png');
+    [zoom >= 15] {
+      line-pattern-file: url('symbols/cliff2.png');
+    }
+  }
+  [man_made = 'embankment'][zoom >= 15]::man_made {
+    line-pattern-file: url('symbols/cliff.png');
+  }
+}
+
+#area-barriers {
+  [zoom >= 16] {
+    line-color: #444;
+    line-width: 0.4;
+    [barrier = 'hedge'] {
+      polygon-fill: #aed1a0;
+    }
+  }
+}
+
+.barriers {
+  [zoom >= 16] {
+    line-width: 0.4;
+    line-color: #444;
+  }
+  [barrier = 'embankment'][zoom >= 14] {
+    line-width: 0.4;
+    line-color: #444;
+  }
+  [barrier = 'hedge'][zoom >= 16] {
+    line-width: 3;
+    line-color: #aed1a0;
+  }
+}
+
+
+#theme-park {
+  [tourism = 'theme_park'][zoom >= 13] {
+    line-color: #734a08;
+    line-width: 1.5;
+    line-dasharray: 9,3;
+    line-opacity: 0.6;
+    [zoom >= 15] {
+      line-width: 2.5;
+    }
+  }
+}
diff --git a/openstreetmap-carto.style b/openstreetmap-carto.style
new file mode 100644
index 0000000..1c53f73
--- /dev/null
+++ b/openstreetmap-carto.style
@@ -0,0 +1,226 @@
+# This is the default osm2pgsql .style file that comes with osm2pgsql.
+#
+# A .style file has 4 columns that define how OSM objects end up in tables in
+# the database and what columns are created. It interacts with the command-line
+# hstore options.
+#
+# Columns
+# =======
+#
+# OsmType: This is either "node", "way" or "node,way" and indicates if this tag
+# applies to nodes, ways, or both.
+#
+# Tag: The tag
+#
+# DataType: The type of the column to be created. Normally "text"
+#
+# Flags: Flags that indicate what table the OSM object is moved into.
+#
+# There are 5 possible flags. These flags are used both to indicate if a column
+# should be created, and if ways with the tag are assumed to be areas. The area
+# assumptions can be overridden with an area=yes/no tag
+#
+# polygon - Create a column for this tag, and objects the tag with are areas
+#
+# linear - Create a column for this tag
+#
+# phstore - Don't create a column for this tag, but objects with the tag are areas
+#
+# delete - Drop this tag completely and don't create a column for it. This also
+# prevents the tag from being added to hstore columns
+#
+# nocache - Deprecated and does nothing
+#
+# If an object has a tag that indicates it is an area or has area=yes/1,
+# osm2pgsql will try to turn it into an area. If it succeeds, it places it in
+# the polygon table. If it fails (e.g. not a closed way) it places it in the
+# line table.
+#
+# Nodes are never placed into the polygon or line table and are always placed in
+# the point table.
+#
+# Hstore
+# ======
+#
+# The options --hstore, --hstore-match-only, and --hstore-all interact with
+# the .style file.
+#
+# With --hstore any tags without a column will be added to the hstore column.
+# This will also cause all objects to be kept.
+#
+# With --hstore-match-only the behavior for tags is the same, but objects are
+# only kept if they have a non-NULL value in one of the columns.
+#
+# With --hstore-all all tags are added to the hstore column unless they appear
+# in the style file with a delete flag, causing duplication between the normal
+# columns and the hstore column.
+#
+# Special database columns
+# ========================
+#
+# There are some special database columns that if present in the .style file
+# will be populated by osm2pgsql.
+#
+# These are
+#
+# z_order - datatype int4
+#
+# way_area - datatype real. The area of the way, in the units of the projection
+# (e.g. square mercator meters). Only applies to areas
+#
+# osm_user, osm_uid, osm_version, osm_timestamp - datatype text. Used with the
+# --extra-attributes option to include metadata in the database. If importing
+# with both --hstore and --extra-attributes the meta-data will end up in the
+# tags hstore column regardless of the style file.
+
+# OsmType  Tag          DataType     Flags
+node,way   access       text         linear
+node,way   addr:housename      text  linear
+node,way   addr:housenumber    text  linear
+node,way   addr:interpolation  text  linear
+node,way   admin_level  text         linear
+node,way   aerialway    text         linear
+node,way   aeroway      text         polygon
+node,way   amenity      text         polygon
+node,way   area         text         # hard coded support for area=1/yes => polygon is in osm2pgsql
+node,way   barrier      text         linear
+node,way   bicycle      text
+node,way   brand        text         linear
+node,way   bridge       text         linear
+node,way   boundary     text         linear
+node,way   building     text         polygon
+node       capital      text         linear
+node,way   construction text         linear
+node,way   covered      text         linear
+node,way   culvert      text         linear
+node,way   cutting      text         linear
+node,way   denomination text         linear
+node,way   disused      text         linear
+node       ele          text         linear
+node,way   embankment   text         linear
+node,way   foot         text         linear
+node,way   generator:source    text  linear
+node,way   harbour      text         polygon
+node,way   highway      text         linear
+node,way   historic     text         polygon
+node,way   horse        text         linear
+node,way   intermittent text         linear
+node,way   junction     text         linear
+node,way   landuse      text         polygon
+node,way   layer        text         linear
+node,way   leisure      text         polygon
+node,way   lock         text         linear
+node,way   man_made     text         polygon
+node,way   military     text         polygon
+node,way   motorcar     text         linear
+node,way   name         text         linear
+node,way   natural      text         polygon  # natural=coastline tags are discarded by a hard coded rule in osm2pgsql
+node,way   office       text         polygon
+node,way   oneway       text         linear
+node,way   operator     text         linear
+node,way   place        text         polygon
+node       poi          text
+node,way   population   text         linear
+node,way   power        text         polygon
+node,way   power_source text         linear
+node,way   public_transport text     polygon
+node,way   railway      text         linear
+node,way   ref          text         linear
+node,way   religion     text         nocache
+node,way   route        text         linear
+node,way   service      text         linear
+node,way   shop         text         polygon
+node,way   sport        text         polygon
+node,way   surface      text         linear
+node,way   toll         text         linear
+node,way   tourism      text         polygon
+node,way   tower:type   text         linear
+way        tracktype    text         linear
+node,way   tunnel       text         linear
+node,way   water        text         polygon
+node,way   waterway     text         polygon
+node,way   wetland      text         polygon
+node,way   width        text         linear
+node,way   wood         text         linear
+node,way   z_order      int4         linear # This is calculated during import
+way        way_area     real                # This is calculated during import
+
+# Area tags
+# We don't make columns for these tags, but objects with them are areas.
+# Mainly for use with hstore
+way         abandoned:aeroway       text    phstore
+way         abandoned:amenity       text    phstore
+way         abandoned:building      text    phstore
+way         abandoned:landuse       text    phstore
+way         abandoned:power         text    phstore
+way         area:highway            text    phstore
+
+# Deleted tags
+# These are tags that are generally regarded as useless for most rendering.
+# Most of them are from imports or intended as internal information for mappers
+# Some of them are automatically deleted by editors.
+# If you want some of them, perhaps for a debugging layer, just delete the lines.
+
+# These tags are used by mappers to keep track of data.
+# They aren't very useful for rendering.
+node,way    note                    text    delete
+node,way    note:*                  text    delete
+node,way    source                  text    delete
+node,way    source_ref              text    delete
+node,way    source:*                text    delete
+node,way    attribution             text    delete
+node,way    comment                 text    delete
+node,way    fixme                   text    delete
+
+# Tags generally dropped by editors, not otherwise covered
+node,way    created_by              text    delete
+node,way    odbl                    text    delete
+node,way    odbl:note               text    delete
+node,way    SK53_bulk:load          text    delete
+
+# Lots of import tags
+# TIGER (US)
+node,way    tiger:*                 text    delete
+
+# NHD (US)
+# NHD has been converted every way imaginable
+node,way    NHD:*                   text    delete
+node,way    nhd:*                   text    delete
+
+# GNIS (US)
+node,way    gnis:*                  text    delete
+
+# Geobase (CA)
+node,way    geobase:*               text    delete
+# NHN (CA)
+node,way    accuracy:meters         text    delete
+node,way    sub_sea:type            text    delete
+node,way    waterway:type           text    delete
+
+# KSJ2 (JA)
+# See also note:ja and source_ref above
+node,way    KSJ2:*                  text    delete
+# Yahoo/ALPS (JA)
+node,way    yh:*                    text    delete
+
+# osak (DK)
+node,way    osak:*                  text    delete
+
+# kms (DK)
+node,way    kms:*                   text    delete
+
+# ngbe (ES)
+# See also note:es and source:file above
+node,way    ngbe:*                  text    delete
+
+# naptan (UK)
+node,way    naptan:*                text    delete
+
+# Corine (CLC) (Europe)
+node,way    CLC:*                   text    delete
+
+# misc
+node,way    3dshapes:ggmodelk       text    delete
+node,way    AND_nosr_r              text    delete
+node,way    import                  text    delete
+node,way    it:fvg:*                text    delete
diff --git a/placenames.mss b/placenames.mss
new file mode 100644
index 0000000..d98f2b9
--- /dev/null
+++ b/placenames.mss
@@ -0,0 +1,142 @@
+ at placenames: #222;
+ at placenames-light: #777777;
+.country {
+  [place = 'country'][zoom >= 2][zoom < 6] {
+    text-name: "[name]";
+    text-size: 9;
+    text-fill: #9d6c9d;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1.5;
+    text-wrap-width: 20;
+    [zoom >= 4] {
+      text-size: 10;
+    }
+  }
+}
+
+.state {
+  [place = 'state'][zoom >= 4][zoom < 9] {
+    text-name: "[ref]";
+    text-size: 9;
+    text-fill: #9d6c9d;
+    text-face-name: @oblique-fonts;
+    text-halo-radius: 1.5;
+    text-wrap-width: 0;
+    [zoom >= 5] {
+      text-name: "[name]";
+    }
+    [zoom >= 7] {
+      text-size: 11;
+    }
+  }
+}
+
+#placenames-capital {
+  [zoom >= 5][zoom < 15] {
+    text-name: "[name]";
+    text-size: 10;
+    text-fill: @placenames;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1.5;
+    text-min-distance: 10;
+    [zoom >= 6] {
+      text-size: 12;
+    }
+    [zoom >= 11] {
+      text-size: 15;
+    }
+  }
+}
+
+#placenames-medium::city {
+  [place = 'city'] {
+    [zoom >= 6][zoom < 15] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: @placenames;
+      text-face-name: @book-fonts;
+      text-halo-radius: 1.5;
+      text-min-distance: 10;
+      [zoom >= 9] {
+        text-size: 12;
+      }
+      [zoom >= 11] {
+        text-size: 15;
+      }
+    }
+  }
+}
+
+#placenames-medium::town {
+  [place = 'town'] {
+    [zoom >= 9] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: @placenames;
+      text-face-name: @book-fonts;
+      text-halo-radius: 1.5;
+      text-wrap-width: 20;
+      text-min-distance: 10;
+    }
+    [zoom >= 11] {
+      text-size: 11;
+    }
+    [zoom >= 14] {
+      text-size: 15;
+      text-fill: @placenames-light;
+    }
+  }
+}
+
+#placenames-small::suburb {
+  [place = 'suburb'][zoom >= 12] {
+    text-name: "[name]";
+    text-size: 11;
+    text-fill: @placenames;
+    text-face-name: @book-fonts;
+    text-halo-radius: 1.5;
+    text-min-distance: 10;
+    [zoom >= 14] {
+      text-size: 14;
+      text-fill: @placenames-light;
+    }
+  }
+}
+
+#placenames-small::village {
+  [place = 'village'] {
+    [zoom >=12] {
+      text-name: "[name]";
+      text-size: 10;
+      text-fill: @placenames;
+      text-face-name: @book-fonts;
+      text-halo-radius: 1.5;
+      text-min-distance: 10;
+      [zoom >= 15] {
+        text-size: 13;
+        text-fill: @placenames-light;
+      }
+    }
+  }
+}
+
+#placenames-small::hamlet {
+  [place = 'hamlet'],
+  [place = 'locality'],
+  [place = 'neighbourhood'],
+  [place = 'isolated_dwelling'],
+  [place = 'farm'] {
+    [zoom >= 14] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: @placenames;
+      text-face-name: @book-fonts;
+      text-halo-radius: 1.5;
+      text-min-distance: 10;
+    }
+    [zoom >= 16] {
+      text-size: 12;
+      text-fill: @placenames-light;
+    }
+  }
+}
diff --git a/power.mss b/power.mss
new file mode 100644
index 0000000..e402c0d
--- /dev/null
+++ b/power.mss
@@ -0,0 +1,34 @@
+#power-line {
+  [zoom >= 14] {
+    line-width: 1;
+    line-color: #777;
+  }
+  [zoom >= 16] {
+    line-width: 1.5;
+  }
+}
+
+#power-minorline {
+  [zoom >= 16] {
+    line-width: 0.5;
+    line-color: #777;
+  }
+}
+
+#power-towers {
+  [zoom >= 14] {
+    point-file: url('symbols/power_tower_3x3.png');
+  }
+  [zoom >= 15] {
+    point-file: url('symbols/power_tower_5x5.png');
+  }
+  [zoom >= 17] {
+    point-file: url('symbols/power_tower.png');
+  }
+}
+
+#power-poles {
+  [zoom >= 16] {
+    point-file: url('symbols/power_pole.png');
+  }
+}
diff --git a/project.mml b/project.mml
new file mode 100644
index 0000000..7082f69
--- /dev/null
+++ b/project.mml
@@ -0,0 +1,1757 @@
+{
+  "bounds": [
+    -180,
+    -85.05112877980659,
+    180,
+    85.05112877980659
+  ],
+  "center": [
+    0,
+    0,
+    4
+  ],
+  "format": "png",
+  "interactivity": false,
+  "minzoom": 0,
+  "maxzoom": 22,
+  "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+  "Stylesheet": [
+    "style.mss",
+    "shapefiles.mss",
+    "landcover.mss",
+    "water.mss",
+    "water-features.mss",
+    "roads.mss",
+    "power.mss",
+    "citywalls.mss",
+    "placenames.mss",
+    "buildings.mss",
+    "amenity-symbols.mss",
+    "stations.mss",
+    "amenity-points.mss",
+    "ferry-routes.mss",
+    "aerialways.mss",
+    "admin.mss",
+    "addressing.mss"
+  ],
+  "Layer": [
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -85.051,
+        179.99999692067183,
+        83.66933299999998
+      ],
+      "id": "world",
+      "class": "",
+      "Datasource": {
+        "file": "data/simplified-land-polygons-complete-3857/simplified_land_polygons.shp",
+        "type": "shape"
+      },
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "world"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -85.051,
+        179.99999692067183,
+        83.66933299999998
+      ],
+      "id": "coast-poly",
+      "class": "",
+      "Datasource": {
+        "file": "data/land-polygons-split-3857/land_polygons.shp",
+        "type": "shape"
+      },
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "coast-poly"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.12960815429688,
+        -52.982724914179855,
+        178.4432525634766,
+        70.87402746981634
+      ],
+      "id": "builtup",
+      "class": "",
+      "Datasource": {
+        "file": "data/world_boundaries/builtup_area.shp",
+        "type": "shape"
+      },
+      "srs-name": "mercator",
+      "srs": "+proj=merc +datum=WGS84 +over",
+      "advanced": {},
+      "name": "builtup"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -140.99778,
+        -54.89681,
+        141.03385176001382,
+        70.16419
+      ],
+      "id": "necountries",
+      "class": "",
+      "Datasource": {
+        "file": "data/ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp",
+        "type": "shape"
+      },
+      "srs-name": "WGS84",
+      "srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs",
+      "advanced": {},
+      "name": "necountries"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way, religion,\ncoalesce (aeroway, amenity, landuse, leisure, military, \"natural\", power, tourism, highway) as feature from (\nselect way,\n('aeroway_' || (case when aeroway in ('apron', 'aerodrome') then aeroway else null end)) as aeroway,\n('amenity_' || (case when amenity in ('parking', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard') then amenity else null end)) as amenity,\n('landuse_' || (case when landuse in ('quarry', 'viney [...]
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "",
+        "dbname": "gis"
+      },
+      "id": "landcover",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "landcover"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way\nfrom planet_osm_line\nwhere man_made='cutline'\n) as landcover_line",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "landcover-line",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "landcover-line"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,leisure,\ncase when leisure='pitch' then 2\n  when leisure='track' then 1\n  else 0 end as prio\n  from planet_osm_polygon\n  where leisure in ('sports_centre','stadium','pitch','track')\n  order by z_order,prio,way_area desc\n) as sports_grounds",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "sports-grounds",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "sports-grounds"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select way,waterway\n      from planet_osm_line\n      where waterway in ('stream','drain','ditch')\n        and (tunnel is null or tunnel != 'yes')\n      ) as water_lines_casing",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "water-lines-casing",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "water-lines-casing"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select way,waterway\n      from planet_osm_line\n      where waterway='river'\n      ) as water_lines_low_zoom",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "water-lines-low-zoom",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "water-lines-low-zoom"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select way,\"natural\",waterway,landuse,name\n      from planet_osm_polygon\n      where (waterway in ('dock','mill_pond','riverbank','canal')\n         or landuse in ('reservoir','water','basin')\n         or \"natural\" in ('lake','water','land','glacier','mud'))\n         and building is null\n      order by z_order,way_area desc\n      ) as water_areas",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "water-areas",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "water-areas"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select way,\"natural\"\n      from planet_osm_polygon\n      where \"natural\" in ('marsh','wetland') and building is null\n      order by z_order,way_area desc\n      ) as water_areas_overlay",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "water-areas-overlay",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "water-areas-overlay"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select way,waterway,lock,name,tunnel\n      from planet_osm_line\n      where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n        and (bridge is null or bridge not in ('yes','true','1','aqueduct'))\n      order by z_order\n      ) as water_lines",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "water-lines",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "water-lines"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,name from planet_osm_line where waterway='dam') as dam",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "dam",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "dam"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way from planet_osm_polygon where leisure ='marina') as marinas_area",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "marinas-area",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "marinas-area"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,man_made from planet_osm_polygon where man_made in ('pier','breakwater','groyne')) as piers_area",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "piers-area",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "piers-area"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,man_made from planet_osm_line where man_made in ('pier','breakwater','groyne')) as piers",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "piers",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "piers"
+    },
+    {
+      "geometry": "point",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,waterway from planet_osm_point where waterway='lock_gate') as locks",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "locks",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "locks"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,coalesce(('highway_' || highway), ('railway_' ||(case when railway='preserved' and service in ('spur','siding','yard') then 'INT-preserved-ssy'::text when (railway='rail' and service in ('spur','siding','yard'))  then 'INT-spur-siding-yard' when railway in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'abandoned', 'construction', 'miniature', 'turntable') then railway e [...]
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "tunnels",
+      "class": "tunnels-fill tunnels-casing access directions",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "tunnels",
+      "properties": {
+        "group-by": "layernotnull"
+      }
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way from planet_osm_line where \"historic\"='citywalls') as citywalls",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "citywalls",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "citywalls"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way from planet_osm_line where \"historic\"='castle_walls') as castlewalls",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "castlewalls",
+      "class": "castlewalls",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "castlewalls"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way from planet_osm_polygon where \"historic\"='castle_walls') as castlewalls_poly",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "castlewalls-poly",
+      "class": "castlewalls",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "castlewalls-poly"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,landuse,leisure\n       from planet_osm_polygon\n       where (landuse = 'military' or leisure='nature_reserve') and building is null\n      ) as landuse_overlay",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "landuse-overlay",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "landuse-overlay"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way, barrier from planet_osm_line where barrier is not null) as line_barriers",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "line-barriers",
+      "class": "barriers",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "line-barriers"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,\"natural\",man_made from planet_osm_line where \"natural\" = 'cliff' or man_made = 'embankment') as cliffs",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "cliffs",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "cliffs"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,barrier from planet_osm_polygon where barrier is not null) as area_barriers",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "area-barriers",
+      "class": "barriers",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "area-barriers"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way from planet_osm_line where route='ferry' ) as ferry_routes",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "ferry-routes",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "ferry-routes"
+    },
+    {
+      "geometry": "point",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select distinct on (p.way) p.way as way,l.highway as int_tc_type\n       from planet_osm_point p\n       join planet_osm_line l\n        on ST_DWithin(p.way,l.way,0.1)\n       join (values\n        ('tertiary',1),\n        ('unclassified',2),\n        ('residential',3),\n        ('living_street',4),\n        ('service',5)\n       ) as v (highway,prio)\n        on v.highway=l.highway\n       where p.highway='turning_circle'\n       order by p.way,v.prio\n      ) as turn [...]
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "turning-circle-casing",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "turning-circle-casing"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,coalesce(('highway_' || (case when highway in ('residential','unclassified','pedestrian','service','footway','track','path','platform') then highway else null end)), ('railway_' || (case when railway in ('platform') then railway else null end))) as feature from planet_osm_polygon\n       where highway in ('residential','unclassified','pedestrian','service','footway','track','path','platform')\n          or railway in ('platform')\n       order by z_order,way [...]
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "highway-area-casing",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "highway-area-casing"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select way,coalesce(('highway_' || highway), ('railway_' ||(case when railway='preserved' and service in ('spur','siding','yard') then 'INT-preserved-ssy'::text when (railway='rail' and service in ('spur','siding','yard'))  then 'INT-spur-siding-yard' when railway in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'abandoned', 'construction', 'miniature', 'turntable') then rai [...]
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "roads-casing",
+      "class": "roads-casing",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "roads-casing"
+    },
+    {
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,coalesce(('highway_' || (case when highway in ('residential','unclassified','pedestrian','service','footway','living_street','track','path','platform','services') then highway else null end)), ('railway_' || (case when railway in ('platform') then railway else null end)), (('aeroway_' || case when aeroway in ('runway','taxiway','helipad') then aeroway else null end))) as feature from planet_osm_polygon\n       where highway in ('residential','unclassified',' [...]
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "highway-area-fill",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "highway-area-fill"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select way,building,railway,amenity from planet_osm_polygon\n       where railway='station'\n          or building in ('station','supermarket')\n          or amenity='place_of_worship'\n       order by z_order,way_area desc) as buildings_lz",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "buildings-lz",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "buildings-lz"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select way,aeroway,\n        case\n         when building in ('residential','house','garage','garages','detached','terrace','apartments') then 'INT-light'::text\n         else building\n        end as building\n       from planet_osm_polygon\n       where (building is not null\n         and building not in ('no','station','supermarket','planned')\n         and (railway is null or railway != 'station')\n         and (amenity is null or amenity != 'place_of_worship [...]
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "buildings",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "buildings"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select way,coalesce(('highway_' || highway), ('railway_' ||(case when railway='preserved' and service in ('spur','siding','yard') then 'INT-preserved-ssy'::text when (railway='rail' and service in ('spur','siding','yard'))  then 'INT-spur-siding-yard' when railway in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'abandoned', 'construction', 'miniature', 'turntable') then rai [...]
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "roads-fill",
+      "class": "roads-fill access directions",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "roads-fill"
+    },
+    {
+      "geometry": "point",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select distinct on (p.way) p.way as way,l.highway as int_tc_type\n       from planet_osm_point p\n       join planet_osm_line l\n        on ST_DWithin(p.way,l.way,0.1)\n       join (values\n        ('tertiary',1),\n        ('unclassified',2),\n        ('residential',3),\n        ('living_street',4),\n        ('service',5)\n       ) as v (highway,prio)\n        on v.highway=l.highway\n       where p.highway='turning_circle'\n       order by p.way,v.prio\n      ) a [...]
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "turning-circle-fill",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "turning-circle-fill"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,aerialway from planet_osm_line where aerialway is not null) as aerialways",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "aerialways",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "aerialways"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select way,coalesce(('highway_' || (case when highway is not null then highway else null end)), ('railway_' || (case when (railway='rail' and service in ('spur','siding','yard'))  then 'INT-spur-siding-yard' when railway in ('rail','tram','light_rail','funicular','narrow_gauge') then railway else null end))) as feature,tunnel\n       from planet_osm_roads\n       where highway is not null\n          or (railway is not null and railway!='preserved' and (service is [...]
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "roads-low-zoom",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "roads-low-zoom"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,name from planet_osm_line where waterway='canal' and bridge in ('yes','true','1','aqueduct') order by z_order) as waterway_bridges",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "waterway-bridges",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "waterway-bridges"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,coalesce(('highway_' || highway), ('railway_' ||(case when railway='preserved' and service in ('spur','siding','yard') then 'INT-preserved-ssy'::text when (railway='rail' and service in ('spur','siding','yard'))  then 'INT-spur-siding-yard' when railway in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'abandoned', 'construction', 'miniature', 'turntable') then railway e [...]
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "bridges",
+      "class": "bridges-fill bridges-casing access directions",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "bridges",
+      "properties": {
+        "group-by": "layernotnull"
+      }
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,railway,bridge from planet_osm_line where railway='tram' and (tunnel is null or tunnel != 'yes')) as trams",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "trams",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "trams"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way from planet_osm_line where highway='bus_guideway' and (tunnel is null or tunnel != 'yes')) as guideways",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "guideways",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "guideways"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,admin_level\n       from planet_osm_roads\n       where \"boundary\"='administrative'\n         and admin_level in ('0','1','2','3','4')\n       ) as admin_01234",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "admin-01234",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "admin-01234"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,admin_level\n       from planet_osm_roads\n       where \"boundary\"='administrative'\n         and admin_level in ('5','6','7','8')\n       ) as admin_5678",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "admin-5678",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "admin-5678"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,admin_level\n       from planet_osm_roads\n       where \"boundary\"='administrative'\n         and admin_level in ('9', '10')\n       ) as admin_other",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "admin-other",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "admin-other"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way from planet_osm_line where \"power\"='minor_line') as power_minorline",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "power-minorline",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "power-minorline"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way from planet_osm_line where \"power\"='line') as power_line",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "power-line",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "power-line"
+    },
+    {
+      "geometry": "point",
+      "extent": [
+        -179.58997888396897,
+        -85.051,
+        179.38330358817018,
+        82.48332318035943
+      ],
+      "id": "nepopulated",
+      "class": "",
+      "Datasource": {
+        "file": "data/ne_10m_populated_places/ne_10m_populated_places_fixed.shp",
+        "type": "shape",
+        "encoding": "windows-1252"
+      },
+      "srs-name": "WGS84",
+      "srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs",
+      "advanced": {
+        "encoding": "windows-1252"
+      },
+      "name": "nepopulated"
+    },
+    {
+      "geometry": "point",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,place,name,ref\n       from planet_osm_point\n       where place in ('country','state')\n      ) as placenames_large",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "placenames-large",
+      "class": "country state",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "placenames-large"
+    },
+    {
+      "geometry": "point",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,place,name,ref\n       from planet_osm_point\n       where place in ('city','town') and capital='yes'\n      ) as placenames_capital",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "placenames-capital",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "placenames-capital"
+    },
+    {
+      "geometry": "point",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,place,name\n      from planet_osm_point\n      where place in ('city','town')\n        and (capital is null or capital != 'yes')\n      ) as placenames_medium",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "placenames-medium",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "placenames-medium"
+    },
+    {
+      "geometry": "point",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,place,name\n      from planet_osm_point\n      where place in ('suburb','village','hamlet','neighbourhood','locality','isolated_dwelling','farm')\n      ) as placenames_small",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "placenames-small",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "placenames-small"
+    },
+    {
+      "geometry": "point",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select way,name,railway,aerialway,disused\n      from planet_osm_point\n      where railway in ('station','halt','tram_stop','subway_entrance')\n         or aerialway='station'\n      ) as stations",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "stations",
+      "class": "stations",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "stations"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select way,name,railway,aerialway,disused\n      from planet_osm_polygon\n      where railway in ('station','halt','tram_stop')\n         or aerialway='station'\n      ) as stations_poly",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "stations-poly",
+      "class": "stations",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "stations-poly"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select way,name,way_area\n      from planet_osm_polygon\n      where \"natural\"='glacier' and building is null\n      order by way_area desc\n      ) as glaciers_text",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "glaciers-text",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "glaciers-text"
+    },
+    {
+      "geometry": "point",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select *\n      from planet_osm_point\n      where aeroway in ('aerodrome','helipad')\n         or barrier in ('bollard','gate','lift_gate','block')\n         or highway in ('mini_roundabout','gate')\n         or man_made in ('lighthouse','power_wind','windmill','mast')\n         or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n         or \"natural\" in ('peak','volcano','spring','tree','cave_entrance')\n         or railway='level_cross [...]
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "amenity-symbols",
+      "class": "symbols",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "amenity-symbols"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select *\n      from planet_osm_polygon\n      where aeroway in ('aerodrome','helipad')\n         or barrier in ('bollard','gate','lift_gate','block')\n         or highway in ('mini_roundabout','gate')\n         or man_made in ('lighthouse','power_wind','windmill','mast')\n         or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n         or \"natural\" in ('peak','volcano','spring','tree')\n         or railway='level_crossing'\n      )  [...]
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "amenity-symbols-poly",
+      "class": "symbols",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "amenity-symbols-poly"
+    },
+    {
+      "geometry": "point",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,amenity,shop,tourism,highway,man_made,access,religion,waterway,lock,historic,leisure\n      from planet_osm_point\n      where amenity is not null\n         or shop is not null\n         or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n         or highway in ('bus_stop','traffic_signals','ford')\n         or man_made in ('mast','water_ [...]
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "amenity-points",
+      "class": "points",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "amenity-points"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,amenity,shop,tourism,highway,man_made,access,religion,waterway,lock,historic,leisure\n      from planet_osm_polygon\n      where amenity is not null\n         or shop is not null\n         or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n         or highway in ('bus_stop','traffic_signals')\n         or man_made in ('mast','water_tower [...]
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "amenity-points-poly",
+      "class": "points",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "amenity-points-poly"
+    },
+    {
+      "geometry": "point",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way from planet_osm_point where power='tower') as power_towers",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "power-towers",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "power-towers"
+    },
+    {
+      "geometry": "point",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way from planet_osm_point where power='pole') as power_poles",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "power-poles",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "power-poles"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select way,highway,ref,char_length(ref) as length\n       from planet_osm_roads\n       where highway in ('motorway','trunk','primary','secondary')\n         and ref is not null\n         and char_length(ref) between 1 and 8\n      ) as roads_text_ref_low_zoom",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "roads-text-ref-low-zoom",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "roads-text-ref-low-zoom"
+    },
+    {
+      "geometry": "point",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "     (select way,ref,name\n      from planet_osm_point\n      where highway='motorway_junction'\n     ) as highway_junctions",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "highway-junctions",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "highway-junctions"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select way,coalesce(highway,aeroway) as highway,ref,char_length(ref) as length,\n       case when bridge in ('yes','true','1') then 'yes'::text else 'no'::text end as bridge\n       from planet_osm_line\n       where (highway is not null or aeroway is not null)\n         and ref is not null\n         and char_length(ref) between 1 and 8\n      ) as roads_text_ref",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "roads-text-ref",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "roads-text-ref"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select way, highway, name\n       from planet_osm_polygon\n       where highway='pedestrian'\n         and name is not null\n      ) as roads_area_text_name",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "roads-area-text-name",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "roads-area-text-name"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select way, highway, name\n       from planet_osm_line\n       where highway in ('motorway','motorway_link','trunk','trunk_link','primary','primary_link','secondary','secondary_link','tertiary','tertiary_link','residential','unclassified','road','service','pedestrian','raceway','living_street', 'construction') \n         and name is not null\n      ) as roads_text_name",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "roads-text-name",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "roads-text-name"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select way, highway, name\n       from planet_osm_line\n       where highway in ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps') \n         and name is not null\n      ) as paths_text_name",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "paths-text-name",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "paths-text-name"
+    },
+    {
+      "geometry": "point",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select way,amenity,shop,access,leisure,landuse,man_made,\"natural\",place,tourism,ele,name,ref,military,aeroway,waterway,historic,NULL as way_area\n       from planet_osm_point\n       where amenity is not null\n          or shop in ('supermarket','bakery','clothes','fashion','convenience','doityourself','hairdresser','department_store','butcher','car','car_repair','bicycle','florist')\n          or leisure is not null\n          or landuse is not null\n          [...]
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "text",
+      "class": "text",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "text"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,aeroway,shop,access,amenity,leisure,landuse,man_made,\"natural\",place,tourism,NULL as ele,name,ref,military,waterway,historic,way_area\n       from planet_osm_polygon\n       where amenity is not null\n          or shop in ('supermarket','bakery','clothes','fashion','convenience','doityourself','hairdresser','department_store', 'butcher','car','car_repair','bicycle')\n          or leisure is not null\n          or landuse is not null\n          or tourism i [...]
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "text-poly",
+      "class": "text",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "text-poly"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select name, way, way_area from planet_osm_polygon where building is not null  and building not in ('no','station','supermarket')) as building_text",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "building-text",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "building-text"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way from planet_osm_line where \"addr:interpolation\" is not null) as interpolation",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "interpolation",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "interpolation"
+    },
+    {
+      "geometry": "point",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select way,\"addr:housenumber\" from planet_osm_polygon where \"addr:housenumber\" is not null and building is not null\n       union\n       select way,\"addr:housenumber\" from planet_osm_point where \"addr:housenumber\" is not null\n      ) as housenumbers",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "housenumbers",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "housenumbers"
+    },
+    {
+      "geometry": "point",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,\"addr:housename\" from planet_osm_polygon where \"addr:housename\" is not null and building is not null\n       union\n       select way,\"addr:housename\" from planet_osm_point where \"addr:housename\" is not null\n      ) as housenames",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "housenames",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "housenames"
+    },
+    {
+      "geometry": "linestring",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "      (select way,waterway,lock,name,tunnel\n      from planet_osm_line\n      where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n       order by z_order\n      ) as water_lines_text",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "water-lines-text",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "water-lines-text"
+    },
+    {
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427098,
+        179.99999692067183,
+        84.96651228427099
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way, name, admin_level from planet_osm_polygon where \"boundary\" = 'administrative' and admin_level in ('0','1','2','3','4','5','6','7','8','9','10')) as admin_text",
+        "key_field": "",
+        "geometry_field": "way",
+        "extent_cache": "custom",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "dbname": "gis"
+      },
+      "id": "admin-text",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "admin-text",
+      "geometry": "linestring"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,way_area,name,boundary from planet_osm_polygon where boundary='national_park' and building is null) as national_park_boundaries",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "national-park-boundaries",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "national-park-boundaries"
+    },
+    {
+      "geometry": "polygon",
+      "extent": [
+        -179.99999692067183,
+        -84.96651228427099,
+        179.99999692067183,
+        84.96651228427098
+      ],
+      "Datasource": {
+        "type": "postgis",
+        "table": "(select way,name,tourism from planet_osm_polygon where tourism='theme_park') as theme_park",
+        "extent": "-20037508,-19929239,20037508,19929239",
+        "key_field": "",
+        "geometry_field": "way",
+        "dbname": "gis"
+      },
+      "id": "theme-park",
+      "class": "",
+      "srs-name": "900913",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "advanced": {},
+      "name": "theme-park"
+    }
+  ],
+  "scale": 1,
+  "metatile": 2,
+  "name": "OpenStreetMap Carto",
+  "description": "A faithful reimplementation of the standard OpenStreetMap style"
+}
diff --git a/roads.mss b/roads.mss
new file mode 100644
index 0000000..a841e93
--- /dev/null
+++ b/roads.mss
@@ -0,0 +1,2449 @@
+/* For the main linear features, such as roads and railways. */
+
+ at motorway-fill: #89a4cb;
+ at trunk-fill: #94d494;
+ at trunk-fill-alternative: #97d397;
+ at primary-fill: #dd9f9f;
+ at secondary-fill: #f9d6aa;
+ at tertiary-fill: #f8f8ba;
+ at residential-fill: #ffffff;
+ at service-fill: #ffffff;
+ at living-street-fill: #ccc;
+ at pedestrian-fill: #ededed;
+ at road-fill: #ddd;
+ at path-fill: black;
+ at footway-fill: salmon;
+ at steps-fill: @footway-fill;
+ at cycleway-fill: blue;
+ at bridleway-fill: green;
+ at track-fill: #996600;
+ at track-grade1-fill: #b37700;
+ at track-grade2-fill: #a87000;
+ at aeroway-fill: #bbc;
+ at runway-fill: @aeroway-fill;
+ at taxiway-fill: @aeroway-fill;
+ at helipad-fill: @aeroway-fill;
+
+ at default-casing: white;
+ at motorway-casing: #7788a1;
+ at trunk-casing: #7eae7e;
+ at primary-casing: #c57b7e;
+ at secondary-casing: #cca16a;
+ at tertiary-casing: #c6c68a;
+ at residential-casing: #bbb;
+ at service-casing: #999;
+ at living-street-casing: @default-casing;
+ at living-street-tunnel-casing: #bbb;
+ at pedestrian-casing: grey;
+ at path-casing: @default-casing;
+ at footway-casing: @default-casing;
+ at steps-casing: @default-casing;
+ at cycleway-casing: @default-casing;
+ at bridleway-casing: @default-casing;
+ at track-casing: @default-casing;
+
+ at residential-construction: #aaa;
+ at service-construction: #aaa;
+
+ at permissive-marking: #cf9;
+ at destination-marking: #c2e0ff;
+ at private-marking: #efa9a9;
+
+ at tunnel-casing: grey;
+ at bridge-casing: black;
+
+ at motorway-tunnel-fill: lighten(@motorway-fill, 25%);
+ at trunk-tunnel-fill: lighten(@trunk-fill, 10%);
+ at primary-tunnel-fill: lighten(@primary-fill, 10%);
+ at secondary-tunnel-fill: lighten(@secondary-fill, 5%);
+ at tertiary-tunnel-fill: lighten(@tertiary-fill, 5%);
+ at residential-tunnel-fill: lighten(@residential-fill, 10%);
+ at living-street-tunnel-fill: lighten(@living-street-fill, 10%);
+
+ at motorway-width-z12:              3;
+ at motorway-link-width-z12:         1.5;
+ at trunk-width-z12:                 3.5;
+ at primary-width-z12:               3.5;
+ at secondary-width-z12:             3;
+
+ at motorway-width-z13:              6.5;
+ at motorway-link-width-z13:         4.5;
+ at trunk-width-z13:                 8.5;
+ at primary-width-z13:               8.5;
+ at secondary-width-z13:             9.5;
+ at tertiary-width-z13:              6;
+ at residential-width-z13:           3;
+
+ at tertiary-width-z14:              7.5;
+ at residential-width-z14:           4.5;
+
+ at motorway-width-z15:             10.3;
+ at motorway-link-width-z15:         7.8;
+ at trunk-width-z15:                12.8;
+ at primary-width-z15:              12.8;
+ at secondary-width-z15:            12.8;
+ at tertiary-width-z15:             11.2;
+ at tertiary-link-width-z15:        11;
+ at residential-width-z15:           8.3;
+
+ at residential-width-z16:          11.2;
+
+ at motorway-width-z17:             13.5; // shouldn't be narrower than trunk!
+ at motorway-link-width-z17:        11.5;
+ at trunk-width-z17:                18;
+ at primary-width-z17:              18;
+ at secondary-width-z17:            18;
+ at tertiary-width-z17:             15.5;
+ at tertiary-link-width-z17:        16;
+ at residential-width-z17:          15.5;
+
+ at casing-width-z12:                0.5;
+ at casing-width-z13:                0.75;
+ at residential-casing-width-z13:    0.5;
+ at casing-width-z14:                0.75;
+ at casing-width-z15:                0.9;
+ at tertiary-link-casing-width-z15:  0.8;
+ at casing-width-z16:                0.9;
+ at casing-width-z17:                1.25;
+ at tertiary-link-casing-width-z17:  1.5;
+
+ at bridge-casing-width-z12:         0.5;
+ at bridge-casing-width-z13:         0.5;
+ at bridge-casing-width-z14:         0.5;
+ at bridge-casing-width-z15:         0.75;
+ at bridge-casing-width-z16:         0.75;
+ at bridge-casing-width-z17:         0.75;
+
+.roads-casing, .bridges-casing, .tunnels-casing {
+  ::casing_links {
+    [feature = 'highway_raceway'] {
+      [zoom >= 12] {
+        line-color: pink;
+        line-width: 1.2;
+        line-join: round;
+        line-cap: round;
+      }
+      [zoom >= 13] { line-width: 4; }
+      [zoom >= 15] { line-width: 7; }
+    }
+
+    [feature = 'highway_motorway_link'] {
+      [zoom >= 12] {
+        line-color: @motorway-casing;
+        line-width: @motorway-link-width-z12;
+        [zoom >= 13] { line-width: @motorway-link-width-z13; }
+        [zoom >= 15] { line-width: @motorway-link-width-z15; }
+        [zoom >= 17] { line-width: @motorway-link-width-z17; }
+        .roads-casing {
+          line-join: round;
+        }
+        .tunnels-casing {
+          line-dasharray: 4,2;
+        }
+        .bridges-casing {
+          line-join: round;
+          [zoom >= 13] { line-color: @bridge-casing; }
+        }
+      }
+    }
+
+    [feature = 'highway_trunk_link'] {
+      [zoom >= 12] {
+        line-width: @trunk-width-z12;
+        [zoom >= 13] { line-width: @trunk-width-z13; }
+        [zoom >= 15] { line-width: @trunk-width-z15; }
+        [zoom >= 17] { line-width: @trunk-width-z17; }
+        line-color: @trunk-casing;
+        .roads-casing {
+          line-join: round;
+          line-cap: round;
+        }
+        .tunnels-casing {
+          line-dasharray: 4,2;
+        }
+        .bridges-casing {
+          line-join: round;
+          [zoom >= 13] { line-color: @bridge-casing; }
+        }
+      }
+    }
+
+    [feature = 'highway_primary_link'] {
+      [zoom >= 12] {
+        line-color: @primary-casing;
+        line-width: @primary-width-z12;
+        [zoom >= 13] { line-width: @primary-width-z13; }
+        [zoom >= 15] { line-width: @primary-width-z15; }
+        [zoom >= 17] { line-width: @primary-width-z17; }
+        .roads-casing {
+          line-join: round;
+          line-cap: round;
+        }
+        .tunnels-casing {
+          line-dasharray: 4,2;
+        }
+        .bridges-casing {
+          line-join: round;
+          [zoom >= 13] { line-color: @bridge-casing; }
+        }
+      }
+    }
+
+    [feature = 'highway_secondary_link'] {
+      [zoom >= 12] {
+        line-color: @secondary-casing;
+        line-width: @secondary-width-z12;
+        [zoom >= 13] { line-width: @secondary-width-z13; }
+        [zoom >= 15] { line-width: @secondary-width-z15; }
+        [zoom >= 17] { line-width: @secondary-width-z17; }
+        .roads-casing {
+          line-cap: round;
+          line-join: round;
+        }
+        .tunnels-casing {
+          line-dasharray: 4,2;
+        }
+        .bridges-casing {
+          [zoom >= 13] {
+            line-color: @bridge-casing;
+            line-join: round;
+          }
+        }
+      }
+    }
+
+    [feature = 'highway_tertiary_link'] {
+      [zoom >= 13] {
+        line-color: @tertiary-casing;
+        line-width: @tertiary-width-z13;
+        [zoom >= 14] { line-width: @tertiary-width-z14; }
+        [zoom >= 15] { line-width: @tertiary-link-width-z15; }
+        [zoom >= 17] { line-width: @tertiary-link-width-z17; }
+        .roads-casing {
+          line-cap: round;
+          line-join: round;
+        }
+        .tunnels-casing {
+          line-dasharray: 4,2;
+        }
+        .bridges-casing {
+          [zoom >= 14] {
+            line-color: @bridge-casing;
+            line-join: round;
+          }
+        }
+      }
+    }
+  }
+
+  ::casing {
+    [zoom >= 12] {
+      [feature = 'highway_motorway'] {
+        line-width: @motorway-width-z12;
+        [zoom >= 13] { line-width: @motorway-width-z13; }
+        [zoom >= 15] { line-width: @motorway-width-z15; }
+        [zoom >= 17] { line-width: @motorway-width-z17; }
+        line-color: @motorway-casing;
+        .roads-casing {
+          line-join: round;
+          line-cap: round;
+        }
+        .tunnels-casing {
+          line-dasharray: 4,2;
+        }
+        .bridges-casing {
+          line-join: round;
+          [zoom >= 13] { line-color: @bridge-casing; }
+        }
+      }
+    }
+
+    [feature = 'highway_trunk'] {
+      [zoom >= 12] {
+        line-color: @trunk-casing;
+        line-width: @trunk-width-z12;
+        [zoom >= 13] { line-width: @trunk-width-z13; }
+        [zoom >= 15] { line-width: @trunk-width-z15; }
+        [zoom >= 17] { line-width: @trunk-width-z17; }
+        .roads-casing {
+          line-join: round;
+          line-cap: round;
+        }
+        .tunnels-casing {
+          line-dasharray: 4,2;
+        }
+        .bridges-casing {
+          line-join: round;
+          [zoom >= 13] { line-color: @bridge-casing; }
+        }
+      }
+    }
+
+    [feature = 'highway_primary'] {
+      [zoom >= 12] {
+        line-color: @primary-casing;
+        line-width: @primary-width-z12;
+        [zoom >= 13] { line-width: @primary-width-z13; }
+        [zoom >= 15] { line-width: @primary-width-z15; }
+        [zoom >= 17] { line-width: @primary-width-z17; }
+        .roads-casing {
+          line-join: round;
+        }
+        .tunnels-casing {
+          line-dasharray: 4,2;
+        }
+        .bridges-casing {
+          line-join: round;
+          [zoom >= 13] { line-color: @bridge-casing; }
+        }
+      }
+    }
+
+    [feature = 'highway_secondary'] {
+      [zoom >= 12] {
+        line-color: @secondary-casing;
+        line-width: @secondary-width-z12;
+        [zoom >= 13] { line-width: @secondary-width-z13; }
+        [zoom >= 15] { line-width: @secondary-width-z15; }
+        [zoom >= 17] { line-width: @secondary-width-z17; }
+        .roads-casing {
+          line-join: round;
+          line-cap: round;
+        }
+        .tunnels-casing {
+          line-dasharray: 4,2;
+        }
+        .bridges-casing {
+          [zoom >= 13] {
+            line-color: @bridge-casing;
+            line-join: round;
+          }
+        }
+      }
+    }
+
+    [feature = 'highway_tertiary'] {
+      [zoom >= 13] {
+        line-color: @tertiary-casing;
+        line-width: @tertiary-width-z13;
+        [zoom >= 14] { line-width: @tertiary-width-z14; }
+        [zoom >= 15] { line-width: @tertiary-width-z15; }
+        [zoom >= 17] { line-width: @tertiary-width-z17; }
+        .roads-casing {
+          line-join: round;
+          line-cap: round;
+        }
+        .tunnels-casing {
+          line-dasharray: 4,2;
+        }
+        .bridges-casing {
+          [zoom >= 14] {
+            line-color: @bridge-casing;
+            line-join: round;
+          }
+        }
+      }
+    }
+
+    [feature = 'highway_residential'],
+    [feature = 'highway_unclassified'],
+    [feature = 'highway_road'] {
+      [zoom >= 13] {
+        line-color: @residential-casing;
+        line-width: @residential-casing-width-z13;
+        [zoom >= 14] { line-width: @residential-width-z14; }
+        [zoom >= 15] { line-width: @residential-width-z15; }
+        [zoom >= 16] { line-width: @residential-width-z16; }
+        [zoom >= 17] { line-width: @residential-width-z17; }
+        .roads-casing {
+          line-join: round;
+          line-cap: round;
+        }
+        .tunnels-casing {
+          line-dasharray: 4,2;
+        }
+        .bridges-casing {
+          [zoom >= 14] {
+            line-color: @bridge-casing;
+            line-join: round;
+          }
+        }
+      }
+    }
+
+    [feature = 'highway_service'] {
+      [zoom >= 14][service = 'INT-normal'],
+      [zoom >= 16][service = 'INT-minor'] {
+        line-color: @service-casing;
+        [service = 'INT-normal'] {
+          .roads-casing, .tunnels-casing {
+            line-width: 2.5;
+            [zoom >= 16] { line-width: 7; }
+          }
+          .bridges-casing {
+            line-width: 3;
+            [zoom >= 16] { line-width: 8; }
+          }
+        }
+        [service = 'INT-minor'] {
+          line-width: 4;
+        }
+        line-join: round;
+        line-cap: round;
+        .tunnels-casing { line-dasharray: 4,2; }
+        .bridges-casing {
+          line-color: @bridge-casing;
+          line-join: round;
+          line-cap: butt;
+        }
+      }
+    }
+
+    [feature = 'highway_pedestrian'] {
+      [zoom >= 13] {
+        line-join: round;
+        .roads-casing, .tunnels-casing {
+          line-width: 2;
+          line-color: @pedestrian-casing;
+          line-cap: round;
+          [zoom >= 14] { line-width: 3.6; }
+          [zoom >= 15] { line-width: 6.5; }
+          [zoom >= 16] { line-width: 9; }
+          .tunnels-casing {
+            line-dasharray: 4,2;
+          }
+        }
+        .bridges-casing {
+          line-width: 2.2;
+          line-color: @bridge-casing;
+          [zoom >= 14] { line-width: 3.8; }
+          [zoom >= 15] { line-width: 7; }
+          [zoom >= 16] { line-width: 9.5; }
+        }
+      }
+    }
+
+    [feature = 'highway_living_street'] {
+      [zoom >= 13] {
+        line-width: 2.5;
+        line-color: @living-street-casing;
+        [zoom >= 14] { line-width: 4; }
+        [zoom >= 15] { line-width: 6; }
+        [zoom >= 16] { line-width: 9; }
+        [zoom >= 17] { line-width: 14.5; }
+        .roads-casing {
+          line-cap: round;
+          line-join: round;
+        }
+        .tunnels-casing {
+          line-color: @living-street-tunnel-casing;
+          line-dasharray: 4,2;
+        }
+        .bridges-casing {
+          [zoom >= 14] {
+            line-color: @bridge-casing;
+            [zoom >= 15] { line-width: 6.2; }
+            [zoom >= 16] { line-width: 8.9; }
+            [zoom >= 17] { line-width: 15; }
+          }
+        }
+      }
+    }
+
+    [feature = 'highway_steps'] {
+      .bridges-casing {
+        [zoom >= 14] {
+          line-width: 6.5;
+          [zoom >= 15] { line-width: 9.5; }
+          line-color: @bridge-casing;
+          line-join: round;
+        }
+      }
+    }
+
+    [feature = 'highway_bridleway'],
+    [feature = 'highway_path'][horse = 'designated'] {
+      .bridges-casing {
+        [zoom >= 14] {
+          line-width: 5.5;
+          line-color: @bridge-casing;
+          line-join: round;
+        }
+      }
+    }
+
+    [feature = 'highway_footway'],
+    [feature = 'highway_path'][foot = 'designated'] {
+      .bridges-casing {
+        [zoom >= 14] {
+          line-width: 6;
+          line-color: @bridge-casing;
+          line-join: round;
+        }
+      }
+    }
+
+    [feature = 'highway_cycleway'],
+    [feature = 'highway_path'][bicycle = 'designated'] {
+      .bridges-casing {
+        [zoom >= 14] {
+          line-width: 5.5;
+          line-color: @bridge-casing;
+          line-join: round;
+        }
+      }
+    }
+
+    [feature = 'highway_path'] {
+      .bridges-casing {
+        [zoom >= 14] {
+          line-width: 4;
+          line-color: @bridge-casing;
+          line-join: round;
+        }
+      }
+    }
+
+    [feature = 'highway_track'] {
+      .bridges-casing {
+        [zoom >= 14] {
+          line-width: 4.5;
+          line-color: @bridge-casing;
+          line-join: round;
+          [tracktype = 'grade1'] {
+            line-width: 5;
+          }
+        }
+      }
+    }
+
+    [feature = 'railway_subway'] {
+      .bridges-casing {
+        [zoom >= 14] {
+          line-width: 5.5;
+          line-color: black;
+          line-join: round;
+        }
+      }
+    }
+
+    [feature = 'railway_light_rail'],
+    [feature = 'railway_narrow_gauge'] {
+      .bridges-casing {
+        [zoom >= 14] {
+          line-width: 5.5;
+          line-color: #555;
+          line-join: round;
+        }
+      }
+    }
+
+    [feature = 'railway_rail'],
+    [feature = 'railway_preserved'],
+    [feature = 'railway_monorail'][zoom >= 14] {
+      .bridges-casing {
+        [zoom >= 13] {
+          line-width: 6.5;
+          line-color: black;
+          line-join: round;
+        }
+      }
+    }
+
+    [feature = 'railway_INT-spur-siding-yard'] {
+      .bridges-casing {
+        [zoom >= 13] {
+          line-width: 5.7;
+          line-color: black;
+          line-join: round;
+        }
+      }
+    }
+
+    [feature = 'railway_disused'],
+    [feature = 'railway_abandoned'],
+    [feature = 'railway_construction'],
+    [feature = 'railway_funicular'][zoom >= 14],
+    [feature = 'railway_miniature'][zoom >= 15],
+    [feature = 'railway_INT-preserved-ssy'][zoom >= 14] {
+      .bridges-casing {
+        [zoom >= 13] {
+          line-width: 6;
+          line-color: black;
+          line-join: round;
+        }
+      }
+    }
+
+    [feature = 'aeroway_runway'] {
+      .bridges-casing {
+        [zoom >= 14] {
+          line-width: 19;
+          line-color: black;
+          line-join: round;
+        }
+      }
+    }
+
+    [feature = 'aeroway_taxiway'] {
+      .bridges-casing {
+        [zoom >= 14] {
+          line-width: 5;
+          line-color: black;
+          line-join: round;
+          [zoom >= 15] { line-width: 7; }
+        }
+      } 
+    }
+  }
+
+  ::bridges_background {
+    [feature = 'highway_bridleway'],
+    [feature = 'highway_path'][horse = 'designated'] {
+      .bridges-casing {
+        [zoom >= 14] {
+          line-width: 4;
+          line-color: @bridleway-casing;
+          line-join: round;
+          line-cap: round;
+        }
+      }
+    }
+
+    [feature = 'highway_footway'],
+    [feature = 'highway_path'][foot = 'designated'] {
+      .bridges-casing {
+        [zoom >= 14] {
+          line-width: 4.5;
+          line-color: @footway-casing;
+          line-join: round;
+          line-cap: round;
+        }
+      }
+    }
+
+    [feature = 'highway_cycleway'],
+    [feature = 'highway_path'][bicycle = 'designated'] {
+      .bridges-casing {
+        [zoom >= 14] {
+          line-width: 4;
+          line-color: @cycleway-casing;
+          line-join: round;
+          line-cap: round;
+        }
+      }
+    }
+
+    [feature = 'highway_steps'] {
+      .bridges-casing {
+        [zoom >= 14] {
+          line-width: 5;
+          [zoom >= 15] { line-width: 8; }
+          line-color: @steps-casing;
+          line-join: round;
+        }
+      }
+    }
+
+    [feature = 'highway_path'] {
+      .bridges-casing {
+        [zoom >= 14] {
+          line-width: 2.5;
+          line-color: @path-casing;
+          line-join: round;
+          line-cap: round;
+        }
+      }
+    }
+
+    [feature = 'highway_track'] {
+      .bridges-casing {
+        [zoom >= 14] {
+          line-width: 3;
+          line-color: @track-casing;
+          line-join: round;
+          line-cap: round;
+          [tracktype = 'grade1'] { line-width: 3.5; }
+        }
+      }
+    }
+
+    [feature = 'railway_rail'][zoom >= 13],
+    [feature = 'railway_preserved'][zoom >= 14],
+    [feature = 'railway_monorail'][zoom >= 14] {
+      .bridges-casing {
+        line-width: 5;
+        line-color: white;
+        line-join: round;
+      }
+    }
+
+    [feature = 'railway_INT-spur-siding-yard'] {
+      .bridges-casing {
+        [zoom >= 13] {
+          line-width: 4;
+          line-color: white;
+          line-join: round;
+          line-cap: round;
+        }
+      }
+    }
+
+    [feature = 'railway_disused'],
+    [feature = 'railway_abandoned'],
+    [feature = 'railway_construction'],
+    [feature = 'railway_funicular'][zoom >= 14],
+    [feature = 'railway_miniature'][zoom >= 15],
+    [feature = 'railway_INT-preserved-ssy'][zoom >= 14] {
+      .bridges-casing {
+        [zoom >= 13] {
+          line-width: 4.5;
+          line-color: white;
+          line-join: round;
+          line-cap: round;
+        }
+      }
+    }
+
+    [feature = 'railway_subway'] {
+      .bridges-casing {
+        [zoom >= 14] {
+          line-width: 4;
+          line-color: white;
+        }
+      }
+    }
+
+    [feature = 'railway_light_rail'],
+    [feature = 'railway_narrow_gauge'] {
+      .bridges-casing {
+        [zoom >= 14] {
+          line-width: 4;
+          line-color: white;
+        }
+      }
+    }
+  }
+}
+
+.roads-fill,.bridges-fill,.tunnels-fill {
+  ::fill_links {
+    [feature = 'highway_motorway_link'] {
+      [zoom >= 12] {
+        line-width: @motorway-link-width-z12 - 2 * @casing-width-z12;
+        [zoom >= 13] { line-width: @motorway-link-width-z13 - 2 * @casing-width-z13; }
+        [zoom >= 15] { line-width: @motorway-link-width-z15 - 2 * @casing-width-z15; }
+        [zoom >= 17] { line-width: @motorway-link-width-z17 - 2 * @casing-width-z17; }
+        .roads-fill, .bridges-fill {
+          line-color: @motorway-fill;
+        }
+        .tunnels-fill {
+          line-color: @motorway-tunnel-fill;
+        }
+        .bridges-fill {
+          line-width: @motorway-link-width-z12 - 2 * @bridge-casing-width-z12;
+          [zoom >= 13] { line-width: @motorway-link-width-z13 - 2 * @bridge-casing-width-z13; }
+          [zoom >= 15] { line-width: @motorway-link-width-z15 - 2 * @bridge-casing-width-z15; }
+          [zoom >= 17] { line-width: @motorway-link-width-z17 - 2 * @bridge-casing-width-z17; }
+        }
+        line-cap: round;
+        line-join: round;
+      }
+    }
+
+    [feature = 'highway_trunk_link'] {
+      [zoom >= 12] {
+        line-width: @trunk-width-z12 - 2 * @casing-width-z12;
+        [zoom >= 13] { line-width: @trunk-width-z13 - 2 * @casing-width-z13; }
+        [zoom >= 15] { line-width: @trunk-width-z15 - 2 * @casing-width-z15; }
+        [zoom >= 17] { line-width: @trunk-width-z17 - 2 * @casing-width-z17; }
+        .roads-fill, .bridges-fill {
+          line-color: @trunk-fill;
+        }
+        .tunnels-fill {
+          line-color: @trunk-tunnel-fill;
+        }
+        .bridges-fill {
+          line-width: @trunk-width-z12 - 2 * @bridge-casing-width-z12;
+          [zoom >= 13] { line-width: @trunk-width-z13 - 2 * @bridge-casing-width-z13; }
+          [zoom >= 15] { line-width: @trunk-width-z15 - 2 * @bridge-casing-width-z15; }
+          [zoom >= 17] { line-width: @trunk-width-z17 - 2 * @bridge-casing-width-z17; }
+        }
+        line-cap: round;
+        line-join: round;
+      }
+    }
+
+    [feature = 'highway_primary_link'] {
+      [zoom >= 12] {
+        line-width: @primary-width-z12 - 2 * @casing-width-z12;
+        [zoom >= 13] { line-width: @primary-width-z13 - 2 * @casing-width-z13; }
+        [zoom >= 15] { line-width: @primary-width-z15 - 2 * @casing-width-z15; }
+        [zoom >= 17] { line-width: @primary-width-z17 - 2 * @casing-width-z17; }
+        .roads-fill, .bridges-fill {
+          line-color: @primary-fill;
+        }
+        .tunnels-fill {
+          line-color: @primary-tunnel-fill;
+        }
+        .bridges-fill {
+          line-width: @primary-width-z12 - 2 * @bridge-casing-width-z12;
+          [zoom >= 13] { line-width: @primary-width-z13 - 2 * @bridge-casing-width-z13; }
+          [zoom >= 15] { line-width: @primary-width-z15 - 2 * @bridge-casing-width-z15; }
+          [zoom >= 17] { line-width: @primary-width-z17 - 2 * @bridge-casing-width-z17; }
+        }
+        line-cap: round;
+        line-join: round;
+      }
+    }
+
+    [feature = 'highway_secondary_link'] {
+      [zoom >= 12] {
+        line-width: @secondary-width-z12 - 2 * @casing-width-z12;
+        [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @casing-width-z13; }
+        [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @casing-width-z15; }
+        [zoom >= 17] { line-width: @secondary-width-z17 - 2 * @casing-width-z17; }
+        .roads-fill, .bridges-fill {
+          line-color: @secondary-fill;
+        }
+        .tunnels-fill {
+          line-color: @secondary-tunnel-fill;
+        }
+        .bridges-fill {
+          line-width: @secondary-width-z12 - 2 * @bridge-casing-width-z12;
+          [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @bridge-casing-width-z13; }
+          [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @bridge-casing-width-z15; }
+          [zoom >= 17] { line-width: @secondary-width-z17 - 2 * @bridge-casing-width-z17; }
+        }
+        line-cap: round;
+        line-join: round;
+      }
+    }
+
+    [feature = 'highway_tertiary_link'] {
+      [zoom >= 13] {
+        line-width: @tertiary-width-z13 - 2 * @casing-width-z13;
+        [zoom >= 14] { line-width: @tertiary-width-z14 - 2 * @casing-width-z14; }
+        [zoom >= 15] { line-width: @tertiary-link-width-z15 - 2 * @tertiary-link-casing-width-z15; }
+        [zoom >= 17] { line-width: @tertiary-link-width-z17 - 2 * @tertiary-link-casing-width-z17; }
+        .roads-fill, .bridges-fill {
+          line-color: @tertiary-fill;
+        }
+        .tunnels-fill {
+          line-color: @tertiary-tunnel-fill;
+        }
+        .bridges-fill {
+          line-width: @tertiary-width-z13 - 2 * @bridge-casing-width-z13;
+          [zoom >= 14] { line-width: @tertiary-width-z14 - 2 * @bridge-casing-width-z14; }
+          [zoom >= 15] { line-width: @tertiary-link-width-z15 - 2 * @bridge-casing-width-z15; }
+          [zoom >= 17] { line-width: @tertiary-link-width-z17 - 2 * @bridge-casing-width-z17; }
+        }
+        line-cap: round;
+        line-join: round;
+      }
+    }
+  }
+
+  ::fill {
+
+    /*
+     * The construction rules for small roads are strange, since if construction is null its assumed that
+     * it's a more major road. The line-width = 0 could be removed by playing with the query to set a construction
+     * string for non-small roads.
+     *
+     * Also note that these rules are quite sensitive to re-ordering, since the instances end up swapping round
+     * (and then the dashes appear below the fills). See
+     * https://github.com/gravitystorm/openstreetmap-carto/issues/23
+     * https://github.com/mapbox/carto/issues/235
+     * https://github.com/mapbox/carto/issues/237
+     */
+    [feature = 'highway_proposed'],
+    [feature = 'highway_construction'] {
+      [zoom >= 12] {
+        line-width: 2;
+        line-color: #9cc;
+
+        [construction = 'motorway'],
+        [construction = 'motorway_link'] {
+          line-color: @motorway-fill;
+        }
+        [construction = 'trunk'],
+        [construction = 'trunk_link'] {
+          line-color: @trunk-fill;
+        }
+        [construction = 'primary'],
+        [construction = 'primary_link'] {
+          line-color: @primary-fill;
+        }
+        [construction = 'secondary'],
+        [construction = 'secondary_link'] {
+          line-color: @secondary-fill;
+        }
+        [construction = 'tertiary'],
+        [construction = 'tertiary_link'] {
+          line-color: @tertiary-fill;
+          [zoom < 13] {
+            line-width: 0;
+            b/line-width: 0;
+          }
+        }
+        [construction = 'residential'],
+        [construction = 'unclassified'],
+        [construction = 'living_street'] {
+          line-color: @residential-construction;
+          [zoom < 13] {
+            line-width: 0;
+            b/line-width: 0;
+          }
+        }
+        [construction = 'service'] {
+          line-color: @service-construction;
+          [zoom < 14] {
+            line-width: 0;
+            b/line-width: 0;
+          }
+        }
+        b/line-width: 2;
+        b/line-dasharray: 4,2;
+        b/line-color: white;
+        [zoom >= 13] {
+          line-width: 4;
+          b/line-width: 3.5;
+          b/line-dasharray: 6,4;
+        }
+        [zoom >= 16] {
+          line-width: 8;
+          b/line-width: 7;
+          b/line-dasharray: 8,6;
+        }
+        [construction = 'cycleway'] {
+          [zoom < 14] {
+            line-width: 0;
+            b/line-width: 0;
+          }
+          line-color: white;
+          line-width: 3;
+          line-opacity: 0.4;
+          b/line-width: 1.2;
+          b/line-color: #69f;
+          b/line-dasharray: 2,6;
+        }
+      }
+    }
+
+    [feature = 'highway_motorway'] {
+      [zoom >= 12] {
+        line-width: @motorway-width-z12 - 2 * @casing-width-z12;
+        [zoom >= 13] { line-width: @motorway-width-z13 - 2 * @casing-width-z13; }
+        [zoom >= 15] { line-width: @motorway-width-z15 - 2 * @casing-width-z15; }
+        [zoom >= 17] { line-width: @motorway-width-z17 - 2 * @casing-width-z17; }
+        .roads-fill, .bridges-fill {
+          line-color: @motorway-fill;
+        }
+        .tunnels-fill {
+          line-color: @motorway-tunnel-fill;
+        }
+        .bridges-fill {
+          line-width: @motorway-width-z12 - 2 * @bridge-casing-width-z12;
+          [zoom >= 13] { line-width: @motorway-width-z13 - 2 * @bridge-casing-width-z13; }
+          [zoom >= 15] { line-width: @motorway-width-z15 - 2 * @bridge-casing-width-z15; }
+          [zoom >= 17] { line-width: @motorway-width-z17 - 2 * @bridge-casing-width-z17; }
+        }
+        line-cap: round;
+        line-join: round;
+      }
+    }
+
+    [feature = 'highway_trunk'] {
+      [zoom >= 12] {
+        line-width: @trunk-width-z12 - 2 * @casing-width-z12;
+        [zoom >= 13] { line-width: @trunk-width-z13 - 2 * @casing-width-z13; }
+        [zoom >= 15] { line-width: @trunk-width-z15 - 2 * @casing-width-z15; }
+        [zoom >= 17] { line-width: @trunk-width-z17 - 2 * @casing-width-z17; }
+        .roads-fill, .bridges-fill {
+          line-color: @trunk-fill;
+        }
+        .tunnels-fill {
+          line-color: @trunk-tunnel-fill;
+        }
+        .bridges-fill {
+          line-width: @trunk-width-z12 - 2 * @bridge-casing-width-z12;
+          [zoom >= 13] { line-width: @trunk-width-z13 - 2 * @bridge-casing-width-z13; }
+          [zoom >= 15] { line-width: @trunk-width-z15 - 2 * @bridge-casing-width-z15; }
+          [zoom >= 17] { line-width: @trunk-width-z17 - 2 * @bridge-casing-width-z17; }
+        }
+        line-cap: round;
+        line-join: round;
+      }
+    }
+
+    [feature = 'highway_primary'] {
+      [zoom >= 12] {
+        line-width: @primary-width-z12 - 2 * @casing-width-z12;
+        [zoom >= 13] { line-width: @primary-width-z13 - 2 * @casing-width-z13; }
+        [zoom >= 15] { line-width: @primary-width-z15 - 2 * @casing-width-z15; }
+        [zoom >= 17] { line-width: @primary-width-z17 - 2 * @casing-width-z17; }
+        .roads-fill, .bridges-fill {
+          line-color: @primary-fill;
+        }
+        .tunnels-fill {
+          line-color: @primary-tunnel-fill;
+        }
+        .bridges-fill {
+          line-width: @primary-width-z12 - 2 * @bridge-casing-width-z12;
+          [zoom >= 13] { line-width: @primary-width-z13 - 2 * @bridge-casing-width-z13; }
+          [zoom >= 15] { line-width: @primary-width-z15 - 2 * @bridge-casing-width-z15; }
+          [zoom >= 17] { line-width: @primary-width-z17 - 2 * @bridge-casing-width-z17; }
+        }
+        line-cap: round;
+        line-join: round;
+      }
+    }
+
+    [feature = 'highway_secondary'] {
+      [zoom >= 12] {
+        line-width: @secondary-width-z12 - 2 * @casing-width-z12;
+        [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @casing-width-z13; }
+        [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @casing-width-z15; }
+        [zoom >= 17] { line-width: @secondary-width-z17 - 2 * @casing-width-z17; }
+        .roads-fill, .bridges-fill {
+          line-color: @secondary-fill;
+        }
+        .tunnels-fill {
+          line-color: @secondary-tunnel-fill;
+        }
+        .bridges-fill {
+          line-width: @secondary-width-z12 - 2 * @bridge-casing-width-z12;
+          [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @bridge-casing-width-z13; }
+          [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @bridge-casing-width-z15; }
+          [zoom >= 17] { line-width: @secondary-width-z17 - 2 * @bridge-casing-width-z17; }
+        }
+        line-cap: round;
+        line-join: round;
+      }
+    }
+
+    [feature = 'highway_tertiary'] {
+      [zoom >= 13] {
+        line-width: @tertiary-width-z13 - 2 * @casing-width-z13;
+        [zoom >= 14] { line-width: @tertiary-width-z14 - 2 * @casing-width-z14; }
+        [zoom >= 15] { line-width: @tertiary-width-z15 - 2 * @casing-width-z15; }
+        [zoom >= 17] { line-width: @tertiary-width-z17 - 2 * @casing-width-z17; }
+        .roads-fill, .bridges-fill {
+          line-color: @tertiary-fill;
+        }
+        .tunnels-fill {
+          line-color: @tertiary-tunnel-fill;
+        }
+        .bridges-fill {
+          line-width: @tertiary-width-z13 - 2 * @bridge-casing-width-z13;
+          [zoom >= 14] { line-width: @tertiary-width-z14 - 2 * @bridge-casing-width-z14; }
+          [zoom >= 15] { line-width: @tertiary-width-z15 - 2 * @bridge-casing-width-z15; }
+          [zoom >= 17] { line-width: @tertiary-width-z17 - 2 * @bridge-casing-width-z17; }
+        }
+        line-cap: round;
+        line-join: round;
+      }
+    }
+
+    [feature = 'highway_residential'],
+    [feature = 'highway_unclassified'] {
+      [zoom >= 13] {
+        line-width: @residential-width-z13 - 2 * @casing-width-z13;
+        [zoom >= 14] { line-width: @residential-width-z14 - 2 * @casing-width-z14; }
+        [zoom >= 15] { line-width: @residential-width-z15 - 2 * @casing-width-z15; }
+        [zoom >= 16] { line-width: @residential-width-z16 - 2 * @casing-width-z16; }
+        [zoom >= 17] { line-width: @residential-width-z17 - 2 * @casing-width-z17; }
+        .roads-fill, .bridges-fill {
+          line-color: @residential-fill;
+        }
+        .tunnels-fill {
+          line-color: @residential-tunnel-fill;
+        }
+        .bridges-fill {
+          line-width: @residential-width-z13 - 2 * @bridge-casing-width-z13;
+          [zoom >= 14] { line-width: @residential-width-z14 - 2 * @bridge-casing-width-z14; }
+          [zoom >= 15] { line-width: @residential-width-z15 - 2 * @bridge-casing-width-z15; }
+          [zoom >= 16] { line-width: @residential-width-z16 - 2 * @bridge-casing-width-z16; }
+          [zoom >= 17] { line-width: @residential-width-z17 - 2 * @bridge-casing-width-z17; }
+        }
+        line-cap: round;
+        line-join: round;
+      }
+    }
+
+    [feature = 'highway_tertiary'][zoom >= 10][zoom < 13],
+    [feature = 'highway_residential'][zoom >= 10][zoom < 13],
+    [feature = 'highway_unclassified'][zoom >= 10][zoom < 13],
+    [feature = 'highway_road'][zoom >= 10][zoom < 13],
+    [feature = 'highway_living_street'][zoom >= 12][zoom < 13] {
+      line-width: 1;
+      line-color: @residential-casing;
+    }
+
+    [feature = 'highway_road'] {
+      [zoom >= 13] {
+        .roads-fill, .bridges-fill {
+          line-color: @road-fill;
+        }
+        .tunnels-fill {
+          line-color: @residential-tunnel-fill;
+        }
+        .roads-fill {
+          line-width: 2;
+          [zoom >= 14] { line-width: 3; }
+          [zoom >= 15] { line-width: 6.5; }
+          [zoom >= 16] { line-width: 9.4; }
+          [zoom >= 17] { line-width: 13; }
+        }
+        .bridges-fill {
+          line-width: 3.5;
+          [zoom >= 14] { line-width: 7.5; }
+          [zoom >= 15] { line-width: 9.5; }
+          [zoom >= 17] { line-width: 14; }
+        }
+        .tunnels-fill {
+          line-width: 2;
+          [zoom >= 14] { line-width: 3.5; }
+          [zoom >= 15] { line-width: 9.5; }
+          [zoom >= 17] { line-width: 14; }
+        }
+        line-cap: round;
+        line-join: round;
+      }
+    }
+
+    [feature = 'highway_living_street'] {
+      [zoom >= 13] {
+        line-width: 1.5;
+        line-color: @living-street-fill;
+        line-join: round;
+        line-cap: round;
+        [zoom >= 14] { line-width: 3; }
+        [zoom >= 15] { line-width: 4.7; }
+        [zoom >= 16] { line-width: 7.4; }
+        [zoom >= 17] { line-width: 13; }
+      }
+      .tunnels-fill {
+        line-color: @living-street-tunnel-fill;
+      }
+    }
+
+    [feature = 'highway_service'] {
+      [zoom >= 13][service = 'INT-normal'] {
+        line-width: 1;
+        line-color: @residential-casing;
+      }
+      [zoom >= 14][service = 'INT-normal'],
+      [zoom >= 16][service = 'INT-minor'] {
+        line-color: @service-fill;
+        [service = 'INT-normal'] {
+          line-width: 2;
+          [zoom >= 16] { line-width: 6; }
+        }
+        [service = 'INT-minor'] {
+          line-width: 3;
+        }
+        line-join: round;
+        line-cap: round;
+      }
+    }
+
+    [feature = 'highway_pedestrian'] {
+      [zoom >= 13] {
+        line-color: @pedestrian-fill;
+        line-width: 1.5;
+        [zoom >= 14] { line-width: 3; }
+        [zoom >= 15] { line-width: 5.5; }
+        [zoom >= 16] { line-width: 8; }
+        line-join: round;
+        line-cap: round;
+      }
+    }
+
+    [feature = 'highway_platform'] {
+      [zoom >= 16] {
+        line-join: round;
+        line-width: 6;
+        line-color: grey;
+        line-cap: round;
+        b/line-width: 4;
+        b/line-color: #bbbbbb;
+        b/line-cap: round;
+        b/line-join: round;
+      }
+    }
+
+    [feature = 'highway_steps'] {
+      [zoom >= 13][zoom < 15] {
+        .roads-fill, .tunnels-fill {
+          line-width: 6;
+          line-color: @steps-casing;
+          line-opacity: 0.4;
+        }
+        b/line-width: 2;
+        b/line-color: @steps-fill;
+        b/line-dasharray: 1,3;
+        b/line-cap: round;
+        b/line-join: round;
+      }
+    }
+
+    [feature = 'highway_steps'] {
+      [zoom >= 15] {
+        line-width: 5.0;
+        line-color: @steps-fill;
+        line-dasharray: 2,1;
+      }
+    }
+
+    [feature = 'highway_bridleway'],
+    [feature = 'highway_path'][horse = 'designated'] {
+      [zoom >= 13] {
+        .tunnels-fill {
+          tunnelcasing/line-width: 5;
+          tunnelcasing/line-color: @tunnel-casing;
+          tunnelcasing/line-dasharray: 4,2;
+        }
+        .roads-fill, .tunnels-fill {
+          background/line-width: 3;
+          background/line-color: @bridleway-casing;
+          background/line-cap: round;
+          background/line-join: round;
+          .roads-fill { background/line-opacity: 0.4; }
+        }
+        line/line-color: @bridleway-fill;
+        line/line-dasharray: 4,2;
+        .roads-fill {
+          line/line-width: 1.2;
+        }
+        .bridges-fill {
+          [zoom >= 13] { line/line-width: 1.2; }
+          [zoom >= 14] { line/line-width: 1.5; }
+        }
+        .tunnels-fill {
+          line/line-width: 2;
+          line/line-opacity: 0.5;
+          line/line-join: round;
+          line/line-cap: round;
+        }
+      }
+    }
+
+    [feature = 'highway_footway'],
+    [feature = 'highway_path'][foot = 'designated'] {
+      [zoom >= 13] {
+        .tunnels-fill {
+          tunnelcasing/line-width: 5.5;
+          tunnelcasing/line-color: @tunnel-casing;
+          tunnelcasing/line-dasharray: 4,2;
+        }
+        .roads-fill, .tunnels-fill {
+          background/line-color: @footway-casing;
+          background/line-cap: round;
+          background/line-join: round;
+          .roads-fill { background/line-width: 4; }
+          .tunnels-fill { background/line-width: 3.5; }
+          .roads-fill { background/line-opacity: 0.4; }
+        }
+        line/line-color: @footway-fill;
+        line/line-dasharray: 1,3;
+        line/line-join: round;
+        line/line-cap: round;
+        .roads-fill {
+          line/line-width: 1.5;
+        }
+        .bridges-fill {
+          [zoom >= 13] { line/line-width: 1.5; }
+          [zoom >= 14] { line/line-width: 2; }
+        }
+        .tunnels-fill {
+          line/line-width: 2.5;
+          line/line-opacity: 0.5;
+        }
+      }
+    }
+
+    [feature = 'highway_cycleway'],
+    [feature = 'highway_path'][bicycle = 'designated'] {
+      [zoom >= 13] {
+        .tunnels-fill {
+          tunnelcasing/line-width: 5.5;
+          tunnelcasing/line-color: @tunnel-casing;
+          tunnelcasing/line-dasharray: 4,2;
+        }
+        .roads-fill, .tunnels-fill {
+          background/line-color: @cycleway-casing;
+          background/line-cap: round;
+          background/line-join: round;
+          background/line-width: 3;
+          .roads-fill { background/line-opacity: 0.4; }
+        }
+        line/line-color: @cycleway-fill;
+        line/line-dasharray: 1,3;
+        line/line-join: round;
+        line/line-cap: round;
+        .roads-fill {
+          line/line-width: 1.2;
+        }
+        .bridges-fill {
+          [zoom >= 13] { line/line-width: 1.2; }
+          [zoom >= 14] { line/line-width: 1.5; }
+        }
+        .tunnels-fill {
+          line/line-width: 2;
+          line/line-opacity: 0.5;
+        }
+      }
+    }
+
+    /*
+    * The above defininitions should override this when needed
+    * given the specitivity precedence.
+    */
+    [feature = 'highway_path'] {
+      [zoom >= 13] {
+        .tunnels-fill {
+          tunnelcasing/line-width: 5.5;
+          tunnelcasing/line-color: @tunnel-casing;
+          tunnelcasing/line-dasharray: 4,2;
+        }
+        .roads-fill, .tunnels-fill {
+          background/line-color: @path-casing;
+          background/line-cap: round;
+          background/line-join: round;
+          background/line-width: 3;
+          .roads-fill { background/line-opacity: 0.4; }
+        }
+        line/line-width: 0.5;
+        line/line-color: @path-fill;
+        line/line-dasharray: 6,3;
+        line/line-join: round;
+        line/line-cap: round;
+        .tunnels-fill {
+          line/line-width: 2;
+          line/line-opacity: 0.5;
+        }
+      }
+    }
+
+    [feature = 'highway_track'] {
+      [zoom >= 13] {
+        .tunnels-fill[zoom >= 14] {
+          tunnelcasing/line-width: 4.5;
+          tunnelcasing/line-color: @tunnel-casing;
+          tunnelcasing/line-dasharray: 4,2;
+        }
+
+        .roads-fill, .tunnels-fill {
+          [zoom >= 13]                   { background/line-width: 2.5; }
+          [zoom >= 14]                   { background/line-width: 3; }
+          .roads-fill                    { background/line-opacity: 0.4; }
+          background/line-color: @track-casing;
+          background/line-join: round;
+          background/line-cap: round;
+        }
+
+        line/line-color: @track-fill;
+        line/line-dasharray: 3,4;
+        line/line-cap: round;
+        line/line-join: round;
+        [zoom >= 13] { line/line-width: 1.2; }
+        [zoom >= 14] { line/line-width: 1.5; }
+        .roads-fill, .bridges-fill   { line/line-opacity: 0.8; }
+        .tunnels-fill[zoom >= 14]    { line/line-opacity: 0.5; }
+
+        [zoom >= 14] {
+          [tracktype = 'grade1'] {
+            .roads-fill, .tunnels-fill   { background/line-width: 3.5; }
+            line/line-width: 2;
+            line/line-color: @track-grade1-fill;
+            line/line-dasharray: 100,0; /* i.e. none, see https://github.com/mapbox/carto/issues/214 */
+            .roads-fill, .bridges-fill   { line/line-opacity: 0.7; }
+          }
+          [tracktype = 'grade2'] {
+            line/line-color: @track-grade2-fill;
+            line/line-dasharray: 9,4;
+          }
+          [tracktype = 'grade4'] {
+            line/line-width: 2;
+            line/line-dasharray: 4,7,1,5;
+          }
+          [tracktype = 'grade5'] {
+            line/line-width: 2;
+            line/line-dasharray: 1,5;
+          }
+        }
+      }
+    }
+
+    [feature = 'railway_rail'],
+    [feature = 'railway_INT-spur-siding-yard'] {
+      [zoom >= 13] {
+        .roads-fill, .bridges-fill {
+          dark/line-color: #999999;
+          [feature = 'railway_rail']                               { dark/line-width: 3; }
+          [feature = 'railway_INT-spur-siding-yard']               { dark/line-width: 2; }
+          [feature = 'railway_rail']                               { dark/line-join: round; }
+          [feature = 'railway_INT-spur-siding-yard'] .bridges-fill { dark/line-join: round; }
+          light/line-color: white;
+          [feature = 'railway_rail']                               { light/line-width: 1; }
+          [feature = 'railway_INT-spur-siding-yard']               { light/line-width: 0.8; }
+          [feature = 'railway_rail']                               { light/line-dasharray: 8,12; }
+          [feature = 'railway_INT-spur-siding-yard']               { light/line-dasharray: 0,8,11,1; }
+          light/line-join: round;
+          [feature = 'railway_rail'][zoom >= 14]                   { light/line-dasharray: 0,11,8,1; }
+        }
+        .tunnels-fill {
+          a/line-width: 3;
+          b/line-width: 3;
+          c/line-width: 3;
+          d/line-width: 3;
+          e/line-width: 3;
+          f/line-width: 3;
+          g/line-width: 3;
+          a/line-color: #ffffff;
+          b/line-color: #fdfdfd;
+          c/line-color: #ececec;
+          d/line-color: #cacaca;
+          e/line-color: #afafaf;
+          f/line-color: #a1a1a1;
+          g/line-color: #9b9b9b;
+          a/line-dasharray: 1,9;
+          b/line-dasharray: 0,1,1,8;
+          c/line-dasharray: 0,2,1,7;
+          d/line-dasharray: 0,3,1,6;
+          e/line-dasharray: 0,4,1,5;
+          f/line-dasharray: 0,5,1,4;
+          g/line-dasharray: 0,6,1,3;
+          a/line-join: round;
+          b/line-join: round;
+          c/line-join: round;
+          d/line-join: round;
+          e/line-join: round;
+          f/line-join: round;
+          g/line-join: round;
+          [feature = 'railway_INT-spur-siding-yard'] {
+            a/line-width: 2;
+            b/line-width: 2;
+            c/line-width: 2;
+            d/line-width: 2;
+            e/line-width: 2;
+            f/line-width: 2;
+            g/line-width: 2;
+          }
+        }
+      }
+    }
+
+    [feature = 'railway_narrow_gauge'] {
+      [zoom >= 13] {
+        line/line-width: 2;
+        line/line-color: #666;
+        .tunnels-fill {
+          tunnelcasing/line-width: 5;
+          tunnelcasing/line-dasharray: 5,3;
+          tunnelcasing/line-color: #666;
+          background/line-color: #fff;
+          background/line-width: 4;
+          line/line-color: #aaa;
+          line/line-width: 1.5;
+        }
+      }
+    }
+
+    [feature = 'railway_funicular'] {
+      [zoom >= 13] {
+        line/line-width: 2;
+        line/line-color: #666;
+        .tunnels-fill {
+          tunnelcasing/line-width: 5;
+          tunnelcasing/line-dasharray: 5,3;
+          tunnelcasing/line-color: #666;
+          background/line-color: #fff;
+          background/line-width: 4;
+          line/line-color: #aaa;
+          line/line-width: 1.5;
+        }
+      }
+    }
+
+    [feature = 'railway_miniature'] {
+      [zoom >= 15] {
+        line/line-width: 1.2;
+        line/line-color: #999;
+        dashes/line-width: 3;
+        dashes/line-color: #999;
+        dashes/line-dasharray: 1,10;
+      }
+    }
+
+    [feature = 'railway_tram'] {
+      .tunnels-fill {
+        [zoom >= 13] {
+          line-width: 1;
+          line-dasharray: 5,3;
+          line-color: #444;
+          [zoom >= 15] { line-width: 2; }
+        }
+      }
+    }
+
+    [feature = 'railway_light_rail'] {
+      [zoom >= 13] {
+        line-width: 2;
+        line-color: #666;
+        .tunnels-fill {
+          line-dasharray: 5,3;
+        }
+      }
+    }
+
+    [feature = 'railway_subway'] {
+      [zoom >= 12] {
+        line-width: 2;
+        line-color: #999;
+        .tunnels-fill {
+          line-dasharray: 5,3;
+        }
+      }
+      .bridges-fill {
+        [zoom >= 14] {
+          line-width: 2;
+          line-color: #999;
+        }
+      }
+    }
+
+    [feature = 'railway_preserved'] {
+      [zoom >= 12] {
+        dark/line-width: 1.5;
+        dark/line-color: #aaa;
+        dark/line-join: round;
+        [zoom >= 13] {
+          dark/line-width: 3;
+          dark/line-color: #999999;
+          light/line-width: 1;
+          light/line-color: white;
+          light/line-dasharray: 0,1,8,1;
+          light/line-join: round;
+        }
+      }
+    }
+
+    [feature = 'railway_INT-preserved-ssy'] {
+      [zoom >= 12] {
+        dark/line-width: 1;
+        dark/line-color: #aaa;
+        dark/line-join: round;
+        [zoom >= 13] {
+          dark/line-width: 2;
+          dark/line-color: #999999;
+          light/line-width: 0.8;
+          light/line-color: white;
+          light/line-dasharray: 0,1,8,1;
+          light/line-join: round;
+        }
+      }
+    }
+
+    [feature = 'railway_monorail'] {
+      [zoom >= 14] {
+        background/line-width: 4;
+        background/line-color: #fff;
+        background/line-opacity: 0.4;
+        background/line-cap: round;
+        background/line-join: round;
+        line/line-width: 3;
+        line/line-color: #777;
+        line/line-dasharray: 2,3;
+        line/line-cap: round;
+        line/line-join: round;
+      }
+    }
+
+    [feature = 'railway_disused'],
+    [feature = 'railway_abandoned'],
+    [feature = 'railway_construction'] {
+      [zoom >= 13] {
+        line-color: grey;
+        line-width: 2;
+        line-dasharray: 2,4;
+        line-join: round;
+      }
+    }
+
+    [feature = 'railway_platform'] {
+      [zoom >= 16] {
+        line-join: round;
+        line-width: 6;
+        line-color: grey;
+        line-cap: round;
+        b/line-width: 4;
+        b/line-color: #bbbbbb;
+        b/line-cap: round;
+        b/line-join: round;
+      }
+    }
+
+    [feature = 'railway_turntable'] {
+      [zoom >= 16] {
+        line-width: 1.5;
+        line-color: #999;
+      }
+    }
+
+    [feature = 'aeroway_runway'] {
+      [zoom >= 11][zoom < 14] {
+        line-width: 2;
+        line-color: @runway-fill;
+        [zoom >= 12] { line-width: 4; }
+        [zoom >= 13] { line-width: 7; }
+      }
+      [zoom >= 14] {
+        line-width: 18;
+        line-color: @runway-fill;
+      }
+    }
+
+    [feature = 'aeroway_taxiway'] {
+      [zoom >= 11][zoom < 14] {
+        line-width: 1;
+        line-color: @taxiway-fill;
+      }
+      [zoom >= 14] {
+        line-width: 4;
+        line-color: @taxiway-fill;
+        [zoom >= 15] { line-width: 6; }
+      }
+    }
+  }
+}
+
+#turning-circle-casing {
+  [int_tc_type = 'tertiary'][zoom >= 15] {
+    marker-width: (@tertiary-width-z15 - 2 * @casing-width-z15) * 1.8 + 2 * @casing-width-z15;
+    marker-height: (@tertiary-width-z15 - 2 * @casing-width-z15) * 1.8 + 2 * @casing-width-z15;
+    marker-allow-overlap: true;
+    marker-ignore-placement: true;
+    marker-line-width: 0;
+    marker-fill: @tertiary-casing;
+    [zoom >= 17] {
+      marker-width: (@tertiary-width-z17 - 2 * @casing-width-z17) * 1.8 + 2 * @casing-width-z17;
+      marker-height: (@tertiary-width-z17 - 2 * @casing-width-z17) * 1.8 + 2 * @casing-width-z17;
+    }
+  }
+
+  [int_tc_type = 'residential'],
+  [int_tc_type = 'unclassified'] {
+    [zoom >= 15] {
+      marker-width: (@residential-width-z15 - 2 * @casing-width-z15) * 1.8 + 2 * @casing-width-z15;
+      marker-height: (@residential-width-z15 - 2 * @casing-width-z15) * 1.8 + 2 * @casing-width-z15;
+      marker-allow-overlap: true;
+      marker-ignore-placement: true;
+      marker-line-width: 0;
+      marker-fill: @residential-casing;
+      [zoom >= 16] {
+        marker-width: (@residential-width-z16 - 2 * @casing-width-z16) * 1.8 + 2 * @casing-width-z16;
+        marker-height: (@residential-width-z16 - 2 * @casing-width-z16) * 1.8 + 2 * @casing-width-z16;
+      }
+      [zoom >= 17] {
+        marker-width: (@residential-width-z17 - 2 * @casing-width-z17) * 1.8 + 2 * @casing-width-z17;
+        marker-height: (@residential-width-z17 - 2 * @casing-width-z17) * 1.8 + 2 * @casing-width-z17;
+      }
+    }
+  }
+
+  [int_tc_type = 'living_street'][zoom >= 15] {
+    marker-width: 14;
+    marker-height: 14;
+    marker-allow-overlap: true;
+    marker-ignore-placement: true;
+    marker-line-width: 0;
+    marker-fill: @living-street-casing;
+    [zoom >= 16] {
+      marker-width: 18;
+      marker-height: 18;
+    }
+    [zoom >= 17] {
+      marker-width: 24;
+      marker-height: 24;
+    }
+  }
+
+  [int_tc_type = 'service'][zoom >= 16] {
+    marker-width: 14;
+    marker-height: 14;
+    marker-allow-overlap: true;
+    marker-ignore-placement: true;
+    marker-line-width: 0;
+    marker-fill: @service-casing;
+    [zoom >= 17] {
+      marker-width: 16;
+      marker-height: 16;
+    }
+  }
+}
+
+#turning-circle-fill {
+  [int_tc_type = 'tertiary'][zoom >= 15] {
+    marker-width: (@tertiary-width-z15 - 2 * @casing-width-z15) * 1.8;
+    marker-height: (@tertiary-width-z15 - 2 * @casing-width-z15) * 1.8;
+    marker-allow-overlap: true;
+    marker-ignore-placement: true;
+    marker-line-width: 0;
+    marker-fill: @tertiary-fill;
+    [zoom >= 17] {
+      marker-width: (@tertiary-width-z17 - 2 * @casing-width-z17) * 1.8;
+      marker-width: (@tertiary-width-z17 - 2 * @casing-width-z17) * 1.8;
+    }
+  }
+
+  [int_tc_type = 'residential'],
+  [int_tc_type = 'unclassified'] {
+    [zoom >= 15] {
+      marker-width: (@residential-width-z15 - 2 * @casing-width-z15) * 1.8;
+      marker-height: (@residential-width-z15 - 2 * @casing-width-z15) * 1.8;
+      marker-allow-overlap: true;
+      marker-ignore-placement: true;
+      marker-line-width: 0;
+      marker-fill: @residential-fill;
+      [zoom >= 16] {
+        marker-width: (@residential-width-z16 - 2 * @casing-width-z16) * 1.8;
+        marker-height: (@residential-width-z16 - 2 * @casing-width-z16) * 1.8;
+      }
+      [zoom >= 17] {
+        marker-width: (@residential-width-z17 - 2 * @casing-width-z17) * 1.8;
+        marker-height: (@residential-width-z17 - 2 * @casing-width-z17) * 1.8;
+      }
+    }
+  }
+
+  [int_tc_type = 'living_street'][zoom >= 15] {
+    marker-width: 12;
+    marker-height: 12;
+    marker-allow-overlap: true;
+    marker-ignore-placement: true;
+    marker-line-width: 0;
+    marker-fill: @living-street-fill;
+    [zoom >= 16] {
+      marker-width: 16;
+      marker-height: 16;
+    }
+    [zoom >= 17] {
+      marker-width: 22;
+      marker-height: 22;
+    }
+  }
+
+  [int_tc_type = 'service'][zoom >= 16] {
+    marker-width: 12;
+    marker-height: 12;
+    marker-allow-overlap: true;
+    marker-ignore-placement: true;
+    marker-line-width: 0;
+    marker-fill: @service-fill;
+    [zoom >= 17] {
+      marker-width: 14;
+      marker-height: 14;
+    }
+  }
+}
+
+#highway-area-casing {
+  [feature = 'highway_residential'],
+  [feature = 'highway_unclassified'] {
+    [zoom >= 14] {
+      line-color: #999;
+      line-width: 1;
+    }
+  }
+
+  [feature = 'highway_pedestrian'],
+  [feature = 'highway_service'],
+  [feature = 'highway_footway'],
+  [feature = 'highway_path'] {
+    [zoom >= 14] {
+      line-color: grey;
+      line-width: 1;
+    }
+  }
+
+  [feature = 'highway_track'][zoom >= 14] {
+    line-color: @track-fill;
+    line-width: 2;
+  }
+
+  [feature = 'highway_platform'],
+  [feature = 'railway_platform'] {
+    [zoom >= 16] {
+      line-color: grey;
+      line-width: 2;
+      line-cap: round;
+      line-join: round;
+    }
+  }
+}
+
+#highway-area-fill {
+  [feature = 'highway_living_street'][zoom >= 14] {
+    polygon-fill: #ccc;
+  }
+
+  [feature = 'highway_residential'],
+  [feature = 'highway_unclassified'],
+  [feature = 'highway_service'] {
+    [zoom >= 14] {
+      polygon-fill: #fff;
+    }
+  }
+
+  [feature = 'highway_pedestrian'],
+  [feature = 'highway_footway'],
+  [feature = 'highway_path'] {
+    [zoom >= 14] {
+      polygon-fill: #ededed;
+    }
+  }
+
+  [feature = 'highway_track'][zoom >= 14] {
+    polygon-fill: #dfcc66;
+  }
+
+  [feature = 'highway_platform'],
+  [feature = 'railway_platform'] {
+    [zoom >= 16] {
+      polygon-fill: #bbbbbb;
+      polygon-gamma: 0.65;
+    }
+  }
+
+  [feature = 'aeroway_runway'][zoom >= 11] {
+    polygon-fill: @runway-fill;
+  }
+
+  [feature = 'aeroway_taxiway'][zoom >= 13] {
+    polygon-fill: @taxiway-fill;
+  }
+
+  [feature = 'aeroway_helipad'][zoom >= 16] {
+    polygon-fill: @helipad-fill;
+  }
+}
+
+#highway-junctions {
+  [zoom >= 11] {
+    ref/text-name: "[ref]";
+    ref/text-size: 10;
+    ref/text-fill: #6666ff;
+    ref/text-min-distance: 2;
+    ref/text-face-name: @oblique-fonts;
+    ref/text-halo-radius: 1.5;
+    ref/text-wrap-width: 12;
+    [zoom >= 12] {
+      name/text-name: "[name]";
+      name/text-size: 9;
+      name/text-fill: #6666ff;
+      name/text-dy: -9;
+      name/text-face-name: @oblique-fonts;
+      name/text-halo-radius: 1;
+      name/text-wrap-character: ";";
+      name/text-wrap-width: 2;
+      name/text-min-distance: 2;
+    }
+    [zoom >= 15] {
+      ref/text-size: 12;
+      name/text-size: 11;
+      name/text-dy: -10;
+    }
+  }
+}
+
+.access::fill {
+  [access = 'permissive'] {
+    [feature = 'highway_unclassified'],
+    [feature = 'highway_residential'],
+    [feature = 'highway_footway'] {
+      [zoom >= 15] {
+        access/line-width: 6;
+        access/line-color: @permissive-marking;
+        access/line-dasharray: 6,8;
+        access/line-cap: round;
+        access/line-join: round;
+        access/line-opacity: 0.5;
+      }
+    }
+    [feature = 'highway_service'][service = 'INT-normal'][zoom >= 15],
+    [feature = 'highway_service'][zoom >= 16] {
+      access/line-width: 3;
+      access/line-color: @permissive-marking;
+      access/line-dasharray: 6,8;
+      access/line-cap: round;
+      access/line-join: round;
+      access/line-opacity: 0.5;
+      [zoom >= 16] { access/line-width: 6; }
+    }
+  }
+  [access = 'destination'] {
+    [feature = 'highway_secondary'],
+    [feature = 'highway_tertiary'],
+    [feature = 'highway_unclassified'],
+    [feature = 'highway_residential'],
+    [feature = 'highway_road'],
+    [feature = 'highway_living_street'] {
+      [zoom >= 15] {
+        access/line-width: 6;
+        access/line-color: @destination-marking;
+        access/line-dasharray: 6,8;
+        access/line-cap: round;
+        access/line-join: round;
+        access/line-opacity: 0.5;
+      }
+    }
+    [feature = 'highway_service'][service = 'INT-normal'][zoom >= 15],
+    [feature = 'highway_service'][zoom >= 16] {
+      access/line-width: 3;
+      access/line-color: @destination-marking;
+      access/line-dasharray: 6,8;
+      access/line-cap: round;
+      access/line-join: round;
+      access/line-opacity: 0.5;
+      [zoom >= 16] { access/line-width: 6; }
+    }
+  }
+  [access = 'no'] {
+    [feature = 'highway_motorway'],
+    [feature = 'highway_motorway_link'],
+    [feature = 'highway_trunk'],
+    [feature = 'highway_trunk_link'],
+    [feature = 'highway_primary'],
+    [feature = 'highway_primary_link'],
+    [feature = 'highway_secondary'],
+    [feature = 'highway_secondary_link'],
+    [feature = 'highway_tertiary'],
+    [feature = 'highway_tertiary_link'],
+    [feature = 'highway_unclassified'],
+    [feature = 'highway_residential'],
+    [feature = 'highway_road'],
+    [feature = 'highway_living_street'],
+    [feature = 'highway_track'],
+    [feature = 'highway_path'],
+    [feature = 'highway_footway'],
+    [feature = 'highway_cycleway'],
+    [feature = 'highway_bridleway'] {
+      [zoom >= 15] {
+        access/line-width: 6;
+        access/line-color: @private-marking;
+        access/line-dasharray: 6,8;
+        access/line-opacity: 0.5;
+        access/line-join: round;
+        access/line-cap: round;
+      }
+    }
+    [feature = 'highway_service'][service = 'INT-normal'][zoom >= 15],
+    [feature = 'highway_service'][zoom >= 16] {
+      access/line-width: 3;
+      access/line-color: @private-marking;
+      access/line-dasharray: 6,8;
+      access/line-opacity: 0.5;
+      access/line-join: round;
+      access/line-cap: round;
+      [zoom >= 16] { access/line-width: 6; }
+    }
+  }
+}
+
+#roads-low-zoom {
+  [feature = 'highway_motorway'],
+  [feature = 'highway_motorway_link'] {
+    [zoom >= 5][zoom < 12] {
+      line-width: 0.5;
+      line-color: @motorway-fill;
+      [zoom >= 7] { line-width: 1; }
+      [zoom >= 9] { line-width: 1.4; }
+      [zoom >= 10] { line-width: 2; }
+      [zoom >= 11] { line-width: 2.5; }
+    }
+  }
+
+  [feature = 'highway_trunk'],
+  [feature = 'highway_trunk_link'] {
+    [zoom >= 5][zoom < 12] {
+      line-width: 0.4;
+      line-color: @trunk-fill;
+      [zoom >= 7] {
+        line-width: 1;
+        line-color: @trunk-fill-alternative;
+      }
+      [zoom >= 9] { line-width: 2; }
+      [zoom >= 11] { line-width: 2.5; }
+    }
+  }
+
+  [feature = 'highway_primary'],
+  [feature = 'highway_primary_link'] {
+    [zoom >= 7][zoom < 12] {
+      line-width: 0.5;
+      line-color: @primary-fill;
+      [zoom >= 9] { line-width: 1.2; }
+      [zoom >= 10] { line-width: 2; }
+      [zoom >= 11] { line-width: 2.5; }
+    }
+  }
+
+  [feature = 'highway_secondary'],
+  [feature = 'highway_secondary_link'] {
+    [zoom >= 9][zoom < 12] {
+      line-width: 1;
+      line-color: @secondary-fill;
+      [zoom >= 11] { line-width: 2; }
+    }
+  }
+
+  [feature = 'railway_rail'] {
+    [zoom >= 6][zoom < 13] {
+      line-width: 0.6;
+      line-color: #aaa;
+      [zoom >= 9] { line-width: 1; }
+      [zoom >= 10] { line-width: 2; }
+      .tunnels-casing {
+        line-dasharray: 5,2;
+      }
+    }
+  }
+
+  [feature = 'railway_INT-spur-siding-yard'] {
+    [zoom >= 11] {
+      line-width: 1;
+      line-color: #aaa;
+      line-join: round;
+    }
+  }
+
+  [feature = 'railway_tram'],
+  [feature = 'railway_light_rail'],
+  [feature = 'railway_funicular'],
+  [feature = 'railway_narrow_gauge'] {
+    [zoom >= 8][zoom < 13] {
+      line-width: 1;
+      line-color: #ccc;
+      [zoom >= 10] { line-color: #aaa }
+    }
+  }
+}
+
+#trams {
+  [railway = 'tram'][zoom >= 13] {
+    line-color: #444;
+    line-width: 1;
+    [zoom >= 15] {
+      line-width: 2;
+      [bridge = 'yes'] {
+        line-width: 5;
+        line-color: black;
+        b/line-width: 4;
+        b/line-color: white;
+        c/line-width: 2;
+        c/line-color: #444;
+      }
+    }
+  }
+}
+
+#guideways {
+  [zoom >= 13] {
+    line-width: 3;
+    line-color: #6666ff;
+    line-join: round;
+    b/line-width: 1;
+    b/line-color: white;
+    b/line-dasharray: 8,12;
+    b/line-join: round;
+  }
+  [zoom >= 14] {
+    b/line-dasharray: 0,11,8,1;
+  }
+}
+
+#roads-text-ref-low-zoom {
+  [highway = 'motorway'][length < 9] {
+    [zoom >= 10][zoom < 13] {
+      shield-name: "[ref]";
+      shield-size: 10;
+      shield-fill: #fff;
+      shield-placement: line;
+      shield-file: url("symbols/mot_shield[length].png");
+      shield-spacing: 750;
+      shield-min-distance: 30;
+      shield-face-name: @bold-fonts;
+      [length = 7] { shield-file: url('symbols/mot_shield6.png'); }
+      [length = 8] { shield-file: url('symbols/mot_shield7.png'); }
+    }
+  }
+
+  [highway = 'trunk'][zoom >= 11][zoom < 13] {
+    shield-name: "[ref]";
+    shield-size: 10;
+    shield-fill: #fff;
+    shield-placement: line;
+    shield-file: url("symbols/tru_shield[length].png");
+    shield-spacing: 750;
+    shield-min-distance: 30;
+    shield-face-name: @bold-fonts;
+  }
+
+  [highway = 'primary'][zoom >= 11][zoom < 13] {
+    shield-name: "[ref]";
+    shield-size: 10;
+    shield-fill: #fff;
+    shield-placement: line;
+    shield-file: url("symbols/pri_shield[length].png");
+    shield-spacing: 750;
+    shield-min-distance: 30;
+    shield-face-name: @bold-fonts;
+  }
+
+  [highway = 'secondary'][zoom >= 12][zoom < 13] {
+    shield-name: "[ref]";
+    shield-size: 10;
+    shield-fill: #fff;
+    shield-placement: line;
+    shield-file: url("symbols/sec_shield[length].png");
+    shield-spacing: 750;
+    shield-min-distance: 30;
+    shield-face-name: @bold-fonts;
+  }
+}
+
+#roads-text-ref {
+  [highway = 'motorway'][length < 9] {
+    [zoom >= 13] {
+      shield-name: "[ref]";
+      shield-size: 10;
+      shield-fill: #fff;
+      shield-placement: line;
+      shield-file: url("symbols/mot_shield[length].png");
+      shield-spacing: 750;
+      shield-min-distance: 30;
+      shield-face-name: @bold-fonts;
+      shield-avoid-edges: true;
+      [length = 7] { shield-file: url('symbols/mot_shield6.png'); }
+      [length = 8] { shield-file: url('symbols/mot_shield7.png'); }
+    }
+  }
+
+  [highway = 'trunk'][zoom >= 13] {
+    shield-name: "[ref]";
+    shield-size: 10;
+    shield-fill: #fff;
+    shield-placement: line;
+    shield-file: url("symbols/tru_shield[length].png");
+    shield-spacing: 750;
+    shield-min-distance: 30;
+    shield-face-name: @bold-fonts;
+    shield-avoid-edges: true;
+  }
+
+  [highway = 'primary'][zoom >= 13] {
+    shield-name: "[ref]";
+    shield-size: 10;
+    shield-fill: #fff;
+    shield-placement: line;
+    shield-file: url("symbols/pri_shield[length].png");
+    shield-spacing: 750;
+    shield-min-distance: 30;
+    shield-face-name: @bold-fonts;
+    shield-avoid-edges: true;
+  }
+
+  [highway = 'secondary'][bridge = 'no'][zoom >= 13] {
+    shield-name: "[ref]";
+    shield-size: 10;
+    shield-fill: #fff;
+    shield-placement: line;
+    shield-file: url("symbols/sec_shield[length].png");
+    shield-spacing: 750;
+    shield-min-distance: 30;
+    shield-face-name: @bold-fonts;
+    shield-avoid-edges: true;
+  }
+
+  [highway = 'tertiary'][bridge = 'no'][zoom >= 13] {
+    shield-name: "[ref]";
+    shield-size: 10;
+    shield-fill: #fff;
+    shield-placement: line;
+    shield-file: url("symbols/ter_shield[length].png");
+    shield-spacing: 750;
+    shield-min-distance: 30;
+    shield-face-name: @bold-fonts;
+    shield-avoid-edges: true;
+  }
+
+  [highway = 'unclassified'],
+  [highway = 'residential'] {
+    [zoom >= 15][bridge = 'no'] {
+      text-name: "[ref]";
+      text-size: 10;
+      text-fill: #000;
+      text-face-name: @bold-fonts;
+      text-min-distance: 18;
+      text-halo-radius: 1;
+      text-spacing: 750;
+      text-clip: false;
+    }
+  }
+
+  [highway = 'runway'],
+  [highway = 'taxiway'] {
+    [zoom >= 15][bridge = 'no'] {
+      text-name: "[ref]";
+      text-size: 10;
+      text-fill: #333;
+      text-spacing: 750;
+      text-clip: false;
+      text-placement: line;
+      text-min-distance: 18;
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+    }
+  }
+}
+
+#roads-text-name {
+  [highway = 'motorway'],
+  [highway = 'motorway_link'],
+  [highway = 'trunk'],
+  [highway = 'trunk_link'],
+  [highway = 'primary'],
+  [highway = 'primary_link'] {
+    [zoom >= 13] {
+      text-name: "[name]";
+      text-size: 8;
+      text-fill: black;
+      text-spacing: 300;
+      text-clip: false;
+      text-placement: line;
+      text-face-name: @book-fonts;
+      text-halo-radius: 0;
+    }
+    [zoom >= 14] {
+      text-size: 9;
+    }
+    [zoom >= 15] {
+      text-size: 10;
+    }
+  }
+  [highway = 'secondary'],
+  [highway = 'secondary_link'] {
+    [zoom >= 13] {
+      text-name: "[name]";
+      text-size: 8;
+      text-fill: black;
+      text-spacing: 300;
+      text-clip: false;
+      text-placement: line;
+      text-face-name: @book-fonts;
+      text-halo-radius: 0;
+    }
+    [zoom >= 14] {
+      text-size: 9;
+    }
+    [zoom >= 15] {
+      text-size: 10;
+    }
+  }
+  [highway = 'tertiary'],
+  [highway = 'tertiary_link'] {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: #000;
+      text-spacing: 300;
+      text-clip: false;
+      text-placement: line;
+      text-face-name: @book-fonts;
+      text-halo-radius: 0;
+    }
+    [zoom >= 17] {
+      text-size: 11;
+    }
+  }
+  [highway = 'proposed'],
+  [highway = 'construction'] {
+    [zoom >= 13] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: #000;
+      text-spacing: 300;
+      text-clip: false;
+      text-placement: line;
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+    }
+    [zoom >= 16] {
+      text-size: 11;
+    }
+  }
+  [highway = 'residential'],
+  [highway = 'unclassified'],
+  [highway = 'road'] {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 8;
+      text-spacing: 300;
+      text-clip: false;
+      text-placement: line;
+      text-halo-radius: 1;
+      text-face-name: @book-fonts;
+    }
+    [zoom >= 16] {
+      text-size: 9;
+    }
+    [zoom >= 17] {
+      text-size: 11;
+      text-spacing: 400;
+    }
+  }
+
+  [highway = 'raceway'],
+  [highway = 'service'] {
+    [zoom >= 16] {
+      text-name: "[name]";
+      text-size: 9;
+      text-spacing: 300;
+      text-clip: false;
+      text-placement: line;
+      text-face-name: @book-fonts;
+    }
+    [zoom >= 17] {
+      text-size: 11;
+    }
+  }
+
+  [highway = 'living_street'],
+  [highway = 'pedestrian'] {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 8;
+      text-spacing: 300;
+      text-clip: false;
+      text-placement: line;
+      text-face-name: @book-fonts;
+    }
+    [zoom >= 16] {
+      text-size: 9;
+    }
+    [zoom >= 17] {
+      text-size: 11;
+    }
+  }
+}
+
+#roads-area-text-name {
+  [highway = 'pedestrian'] {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 8;
+      text-face-name: @book-fonts;
+      text-placement: interior;
+      text-wrap-width: 30;
+    }
+    [zoom >= 16] {
+      text-size: 9;
+    }
+    [zoom >= 17] {
+      text-size: 11;
+    }
+  }
+}
+
+#paths-text-name {
+  [highway = 'track'] {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-size: 8;
+      text-spacing: 300;
+      text-clip: false;
+      text-placement: line;
+      text-face-name: @book-fonts;
+    }
+    [zoom >= 16] {
+      text-size: 9;
+    }
+    [zoom >= 17] {
+      text-size: 11;
+    }
+  }
+
+  [highway = 'footway'],
+  [highway = 'cycleway'],
+  [highway = 'path'],
+  [highway = 'steps'] {
+    [zoom >= 16] {
+      text-name: "[name]";
+      text-fill: #222;
+      text-size: 9;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.8);
+      text-spacing: 200;
+      text-clip: false;
+      text-placement: line;
+      text-face-name: @book-fonts;
+      text-dy: 7;
+    }
+    [zoom >= 17] {
+      text-size: 11;
+      text-dy: 9;
+    }
+  }
+}
+
+.directions::directions {
+  [zoom >= 16] {
+    [oneway = 'yes'] {
+      dira/line-width: 1;
+      dira/line-dasharray: 0,12,10,152;
+      dira/line-color: #6c70d5;
+      dira/line-join: bevel;
+      dira/line-clip: false;
+      dirb/line-width: 2;
+      dirb/line-dasharray: 0,12,9,153;
+      dirb/line-color: #6c70d5;
+      dirb/line-join: bevel;
+      dirb/line-clip: false;
+      dirc/line-width: 3;
+      dirc/line-dasharray: 0,18,2,154;
+      dirc/line-color: #6c70d5;
+      dirc/line-join: bevel;
+      dirc/line-clip: false;
+      dird/line-width: 4;
+      dird/line-dasharray: 0,18,1,155;
+      dird/line-color: #6c70d5;
+      dird/line-join: bevel;
+      dird/line-clip: false;
+    }
+    [oneway = '-1'] {
+      dira/line-width: 1;
+      dira/line-dasharray: 0,12,10,152;
+      dira/line-color: #6c70d5;
+      dira/line-join: bevel;
+      dira/line-clip: false;
+      dirb/line-width: 2;
+      dirb/line-dasharray: 0,13,9,152;
+      dirb/line-color: #6c70d5;
+      dirb/line-join: bevel;
+      dirb/line-clip: false;
+      dirc/line-width: 3;
+      dirc/line-dasharray: 0,14,2,158;
+      dirc/line-color: #6c70d5;
+      dirc/line-join: bevel;
+      dirc/line-clip: false;
+      dird/line-width: 4;
+      dird/line-dasharray: 0,15,1,158;
+      dird/line-color: #6c70d5;
+      dird/line-join: bevel;
+      dird/line-clip: false;
+    }
+  }
+}
diff --git a/shapefiles.mss b/shapefiles.mss
new file mode 100644
index 0000000..1e8bfa0
--- /dev/null
+++ b/shapefiles.mss
@@ -0,0 +1,37 @@
+#necountries {
+  [zoom >= 1][zoom < 4] {
+    line-width: 0.5;
+    line-color: grey;
+  }
+}
+
+#nepopulated {
+  [zoom >= 3][zoom < 5] {
+    [SCALERANK = 0],
+    [SCALERANK = 1] {
+      text-name: "[NAME]";
+      text-size: 8;
+      text-fill: grey;
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+    }
+  }
+}
+
+#world {
+  [zoom >= 0][zoom < 10] {
+    polygon-fill: @land-color;
+  }
+}
+
+#coast-poly {
+  [zoom >= 10] {
+    polygon-fill: @land-color;
+  }
+}
+
+#builtup {
+  [zoom >= 8][zoom < 10] {
+    polygon-fill: #ddd;
+  }
+}
diff --git a/stations.mss b/stations.mss
new file mode 100644
index 0000000..c414a46
--- /dev/null
+++ b/stations.mss
@@ -0,0 +1,54 @@
+.stations {
+  [railway = 'subway_entrance'][zoom >= 18] {
+    point-file: url('symbols/walking.n.12.png');
+    point-placement: interior;
+  }
+
+  [railway = 'station'][zoom >= 12] {
+    point-file: url('symbols/halt.png');
+    point-placement: interior;
+    [zoom >= 13] {
+      point-file: url('symbols/station_small.png');
+    }
+    [zoom >= 14] {
+      text-name: "[name]";
+      text-face-name: @bold-fonts;
+      text-size: 9;
+      text-fill: #66f;
+      text-dy: -8;
+      text-halo-radius: 1;
+      text-wrap-width: 0;
+      text-placement: interior;
+    }
+    [zoom >= 15] {
+      point-file: url('symbols/station.png');
+      text-size: 11;
+      text-dy: -10;
+    }
+  }
+
+  [railway = 'halt'],
+  [railway = 'tram_stop'],
+  [aerialway = 'station']::aerialway {
+    [zoom >= 13] {
+      point-file: url('symbols/halt.png');
+    }
+    [zoom >= 15] {
+      point-file: url('symbols/station_small.png');
+    }
+    [zoom >= 14] {
+      text-name: "[name]";
+      text-face-name: @book-fonts;
+      text-size: 8;
+      text-fill: #66f;
+      text-dy: -8;
+      text-halo-radius: 1;
+      text-wrap-width: 0;
+      text-placement: interior;
+      [zoom >= 15] {
+        text-size: 10;
+        text-dy: -10;
+      }
+    }
+  }
+}
diff --git a/style.mss b/style.mss
new file mode 100644
index 0000000..bb9224a
--- /dev/null
+++ b/style.mss
@@ -0,0 +1,12 @@
+Map {
+  background-color: @water-color;
+}
+
+ at book-fonts:    "DejaVu Sans Book", "Arundina Sans Regular", "Padauk Regular", "Khmer OS Metal Chrieng Regular", "Droid Sans Fallback Regular", "unifont Medium";
+ at bold-fonts:    "DejaVu Sans Bold", "Arundina Sans Bold", "Padauk Bold", 
+                "DejaVu Sans Book", "Arundina Sans Regular", "Padauk Regular", "Khmer OS Metal Chrieng Regular", "Droid Sans Fallback Regular", "unifont Medium";
+ at oblique-fonts: "DejaVu Sans Oblique", "Arundina Sans Italic", 
+                "DejaVu Sans Book", "Arundina Sans Regular", "Padauk Regular", "Khmer OS Metal Chrieng Regular", "Droid Sans Fallback Regular", "unifont Medium";
+
+ at water-color: #b5d0d0;
+ at land-color: #f2efe9;
diff --git a/symbols/aerodrome.p.16.png b/symbols/aerodrome.p.16.png
new file mode 100644
index 0000000..8f13cd7
Binary files /dev/null and b/symbols/aerodrome.p.16.png differ
diff --git a/symbols/aerodrome.png b/symbols/aerodrome.png
new file mode 100644
index 0000000..740229f
Binary files /dev/null and b/symbols/aerodrome.png differ
diff --git a/symbols/aiga_parking1.png b/symbols/aiga_parking1.png
new file mode 100644
index 0000000..641a3c9
Binary files /dev/null and b/symbols/aiga_parking1.png differ
diff --git a/symbols/allotments.png b/symbols/allotments.png
new file mode 100644
index 0000000..d5e2779
Binary files /dev/null and b/symbols/allotments.png differ
diff --git a/symbols/alpinehut.p.16.png b/symbols/alpinehut.p.16.png
new file mode 100644
index 0000000..84b0977
Binary files /dev/null and b/symbols/alpinehut.p.16.png differ
diff --git a/symbols/amenity_court.p.20.png b/symbols/amenity_court.p.20.png
new file mode 100644
index 0000000..eed9852
Binary files /dev/null and b/symbols/amenity_court.p.20.png differ
diff --git a/symbols/amenity_prison.p.20.png b/symbols/amenity_prison.p.20.png
new file mode 100644
index 0000000..05425fb
Binary files /dev/null and b/symbols/amenity_prison.p.20.png differ
diff --git a/symbols/arrow.png b/symbols/arrow.png
new file mode 100644
index 0000000..ffbb1df
Binary files /dev/null and b/symbols/arrow.png differ
diff --git a/symbols/arrow_back.png b/symbols/arrow_back.png
new file mode 100644
index 0000000..309ca5d
Binary files /dev/null and b/symbols/arrow_back.png differ
diff --git a/symbols/atm.png b/symbols/atm.png
new file mode 100644
index 0000000..9a1dd5d
Binary files /dev/null and b/symbols/atm.png differ
diff --git a/symbols/atm2.p.16.png b/symbols/atm2.p.16.png
new file mode 100644
index 0000000..62caf20
Binary files /dev/null and b/symbols/atm2.p.16.png differ
diff --git a/symbols/bandb.p.20.png b/symbols/bandb.p.20.png
new file mode 100644
index 0000000..eb7ebb9
Binary files /dev/null and b/symbols/bandb.p.20.png differ
diff --git a/symbols/bank2.p.16.png b/symbols/bank2.p.16.png
new file mode 100644
index 0000000..a7d30e8
Binary files /dev/null and b/symbols/bank2.p.16.png differ
diff --git a/symbols/bar.p.20.png b/symbols/bar.p.20.png
new file mode 100644
index 0000000..9b0e48b
Binary files /dev/null and b/symbols/bar.p.20.png differ
diff --git a/symbols/beach.png b/symbols/beach.png
new file mode 100644
index 0000000..ff9e307
Binary files /dev/null and b/symbols/beach.png differ
diff --git a/symbols/biergarten.p.16.png b/symbols/biergarten.p.16.png
new file mode 100644
index 0000000..241a4de
Binary files /dev/null and b/symbols/biergarten.p.16.png differ
diff --git a/symbols/bollard.png b/symbols/bollard.png
new file mode 100644
index 0000000..1ea4118
Binary files /dev/null and b/symbols/bollard.png differ
diff --git a/symbols/buddhist.png b/symbols/buddhist.png
new file mode 100644
index 0000000..9b0cc59
Binary files /dev/null and b/symbols/buddhist.png differ
diff --git a/symbols/bus_station.n.16.png b/symbols/bus_station.n.16.png
new file mode 100644
index 0000000..5224dd1
Binary files /dev/null and b/symbols/bus_station.n.16.png differ
diff --git a/symbols/bus_stop.p.12.png b/symbols/bus_stop.p.12.png
new file mode 100644
index 0000000..f290dcb
Binary files /dev/null and b/symbols/bus_stop.p.12.png differ
diff --git a/symbols/bus_stop.png b/symbols/bus_stop.png
new file mode 100644
index 0000000..e75f6fb
Binary files /dev/null and b/symbols/bus_stop.png differ
diff --git a/symbols/bus_stop_small.png b/symbols/bus_stop_small.png
new file mode 100644
index 0000000..6d8b655
Binary files /dev/null and b/symbols/bus_stop_small.png differ
diff --git a/symbols/cable_car.png b/symbols/cable_car.png
new file mode 100644
index 0000000..b160f0c
Binary files /dev/null and b/symbols/cable_car.png differ
diff --git a/symbols/cafe.p.16.png b/symbols/cafe.p.16.png
new file mode 100644
index 0000000..836f8a5
Binary files /dev/null and b/symbols/cafe.p.16.png differ
diff --git a/symbols/camping.n.16.png b/symbols/camping.n.16.png
new file mode 100644
index 0000000..b769125
Binary files /dev/null and b/symbols/camping.n.16.png differ
diff --git a/symbols/car_share.p.16.png b/symbols/car_share.p.16.png
new file mode 100644
index 0000000..1dcc537
Binary files /dev/null and b/symbols/car_share.p.16.png differ
diff --git a/symbols/caravan_park.p.24.png b/symbols/caravan_park.p.24.png
new file mode 100644
index 0000000..751f520
Binary files /dev/null and b/symbols/caravan_park.p.24.png differ
diff --git a/symbols/cemetery_jewish.18.png b/symbols/cemetery_jewish.18.png
new file mode 100644
index 0000000..316cdd8
Binary files /dev/null and b/symbols/cemetery_jewish.18.png differ
diff --git a/symbols/chair_lift.png b/symbols/chair_lift.png
new file mode 100644
index 0000000..ba0f474
Binary files /dev/null and b/symbols/chair_lift.png differ
diff --git a/symbols/chalet.p.16.png b/symbols/chalet.p.16.png
new file mode 100644
index 0000000..db5eb31
Binary files /dev/null and b/symbols/chalet.p.16.png differ
diff --git a/symbols/christian3.p.14.png b/symbols/christian3.p.14.png
new file mode 100644
index 0000000..c420f7f
Binary files /dev/null and b/symbols/christian3.p.14.png differ
diff --git a/symbols/cinema.p.24.png b/symbols/cinema.p.24.png
new file mode 100644
index 0000000..1a31e65
Binary files /dev/null and b/symbols/cinema.p.24.png differ
diff --git a/symbols/cliff.png b/symbols/cliff.png
new file mode 100644
index 0000000..0fc0528
Binary files /dev/null and b/symbols/cliff.png differ
diff --git a/symbols/cliff2.png b/symbols/cliff2.png
new file mode 100644
index 0000000..790c7ff
Binary files /dev/null and b/symbols/cliff2.png differ
diff --git a/symbols/communications.p.20.png b/symbols/communications.p.20.png
new file mode 100644
index 0000000..1000421
Binary files /dev/null and b/symbols/communications.p.20.png differ
diff --git a/symbols/danger.png b/symbols/danger.png
new file mode 100644
index 0000000..2f7b943
Binary files /dev/null and b/symbols/danger.png differ
diff --git a/symbols/department_store.p.16.png b/symbols/department_store.p.16.png
new file mode 100644
index 0000000..c42b9a2
Binary files /dev/null and b/symbols/department_store.p.16.png differ
diff --git a/symbols/embassy.png b/symbols/embassy.png
new file mode 100644
index 0000000..909e8dc
Binary files /dev/null and b/symbols/embassy.png differ
diff --git a/symbols/fast_food.png b/symbols/fast_food.png
new file mode 100644
index 0000000..99875e9
Binary files /dev/null and b/symbols/fast_food.png differ
diff --git a/symbols/firestation.p.16.png b/symbols/firestation.p.16.png
new file mode 100644
index 0000000..cf24559
Binary files /dev/null and b/symbols/firestation.p.16.png differ
diff --git a/symbols/florist.p.16.png b/symbols/florist.p.16.png
new file mode 100644
index 0000000..3ed55a5
Binary files /dev/null and b/symbols/florist.p.16.png differ
diff --git a/symbols/food_bar.p.16.png b/symbols/food_bar.p.16.png
new file mode 100644
index 0000000..da043fb
Binary files /dev/null and b/symbols/food_bar.p.16.png differ
diff --git a/symbols/food_drinkingtap.p.20.png b/symbols/food_drinkingtap.p.20.png
new file mode 100644
index 0000000..0a4c25a
Binary files /dev/null and b/symbols/food_drinkingtap.p.20.png differ
diff --git a/symbols/forest.png b/symbols/forest.png
new file mode 100644
index 0000000..d6d50c9
Binary files /dev/null and b/symbols/forest.png differ
diff --git a/symbols/fuel.p.16.png b/symbols/fuel.p.16.png
new file mode 100644
index 0000000..7bab32a
Binary files /dev/null and b/symbols/fuel.p.16.png differ
diff --git a/symbols/gate.png b/symbols/gate.png
new file mode 100644
index 0000000..5c5f3b6
Binary files /dev/null and b/symbols/gate.png differ
diff --git a/symbols/gate2.png b/symbols/gate2.png
new file mode 100644
index 0000000..b33e556
Binary files /dev/null and b/symbols/gate2.png differ
diff --git a/symbols/glacier.png b/symbols/glacier.png
new file mode 100644
index 0000000..0572751
Binary files /dev/null and b/symbols/glacier.png differ
diff --git a/symbols/glacier2.png b/symbols/glacier2.png
new file mode 100644
index 0000000..90b1844
Binary files /dev/null and b/symbols/glacier2.png differ
diff --git a/symbols/grave_yard.png b/symbols/grave_yard.png
new file mode 100644
index 0000000..7499533
Binary files /dev/null and b/symbols/grave_yard.png differ
diff --git a/symbols/grave_yard_generic.png b/symbols/grave_yard_generic.png
new file mode 100644
index 0000000..9f91602
Binary files /dev/null and b/symbols/grave_yard_generic.png differ
diff --git a/symbols/guest_house.p.16.png b/symbols/guest_house.p.16.png
new file mode 100644
index 0000000..c730b69
Binary files /dev/null and b/symbols/guest_house.p.16.png differ
diff --git a/symbols/halt.png b/symbols/halt.png
new file mode 100644
index 0000000..4085226
Binary files /dev/null and b/symbols/halt.png differ
diff --git a/symbols/helipad.p.16.png b/symbols/helipad.p.16.png
new file mode 100644
index 0000000..619513c
Binary files /dev/null and b/symbols/helipad.p.16.png differ
diff --git a/symbols/hindu.png b/symbols/hindu.png
new file mode 100644
index 0000000..c31a93d
Binary files /dev/null and b/symbols/hindu.png differ
diff --git a/symbols/hospital.p.16.png b/symbols/hospital.p.16.png
new file mode 100644
index 0000000..dd4febf
Binary files /dev/null and b/symbols/hospital.p.16.png differ
diff --git a/symbols/hospital.png b/symbols/hospital.png
new file mode 100644
index 0000000..74a249c
Binary files /dev/null and b/symbols/hospital.png differ
diff --git a/symbols/hostel.p.20.png b/symbols/hostel.p.20.png
new file mode 100644
index 0000000..be58f6d
Binary files /dev/null and b/symbols/hostel.p.20.png differ
diff --git a/symbols/hotel2.p.20.png b/symbols/hotel2.p.20.png
new file mode 100644
index 0000000..a441134
Binary files /dev/null and b/symbols/hotel2.p.20.png differ
diff --git a/symbols/information.p.16.png b/symbols/information.p.16.png
new file mode 100644
index 0000000..65d03db
Binary files /dev/null and b/symbols/information.p.16.png differ
diff --git a/symbols/islamic3.p.16.png b/symbols/islamic3.p.16.png
new file mode 100644
index 0000000..8746c31
Binary files /dev/null and b/symbols/islamic3.p.16.png differ
diff --git a/symbols/jewish3.p.16.png b/symbols/jewish3.p.16.png
new file mode 100644
index 0000000..0a11447
Binary files /dev/null and b/symbols/jewish3.p.16.png differ
diff --git a/symbols/landfill.png b/symbols/landfill.png
new file mode 100644
index 0000000..d08255f
Binary files /dev/null and b/symbols/landfill.png differ
diff --git a/symbols/level_crossing.png b/symbols/level_crossing.png
new file mode 100644
index 0000000..5002f6d
Binary files /dev/null and b/symbols/level_crossing.png differ
diff --git a/symbols/level_crossing2.png b/symbols/level_crossing2.png
new file mode 100644
index 0000000..eac7189
Binary files /dev/null and b/symbols/level_crossing2.png differ
diff --git a/symbols/library.p.20.png b/symbols/library.p.20.png
new file mode 100644
index 0000000..b38c4d1
Binary files /dev/null and b/symbols/library.p.20.png differ
diff --git a/symbols/liftgate.png b/symbols/liftgate.png
new file mode 100644
index 0000000..fd50fe5
Binary files /dev/null and b/symbols/liftgate.png differ
diff --git a/symbols/lighthouse.p.20.png b/symbols/lighthouse.p.20.png
new file mode 100644
index 0000000..f2e268f
Binary files /dev/null and b/symbols/lighthouse.p.20.png differ
diff --git a/symbols/lock_gate.png b/symbols/lock_gate.png
new file mode 100644
index 0000000..4fb277e
Binary files /dev/null and b/symbols/lock_gate.png differ
diff --git a/symbols/london-tube-24.png b/symbols/london-tube-24.png
new file mode 100644
index 0000000..04c1795
Binary files /dev/null and b/symbols/london-tube-24.png differ
diff --git a/symbols/marsh.png b/symbols/marsh.png
new file mode 100644
index 0000000..4ff801e
Binary files /dev/null and b/symbols/marsh.png differ
diff --git a/symbols/memorial.png b/symbols/memorial.png
new file mode 100644
index 0000000..9423e10
Binary files /dev/null and b/symbols/memorial.png differ
diff --git a/symbols/military_red_hatch.png b/symbols/military_red_hatch.png
new file mode 100644
index 0000000..f9dbeb6
Binary files /dev/null and b/symbols/military_red_hatch.png differ
diff --git a/symbols/mini_round.png b/symbols/mini_round.png
new file mode 100644
index 0000000..b9a7d2d
Binary files /dev/null and b/symbols/mini_round.png differ
diff --git a/symbols/mosque.png b/symbols/mosque.png
new file mode 100644
index 0000000..71b55fa
Binary files /dev/null and b/symbols/mosque.png differ
diff --git a/symbols/mot_shield1.png b/symbols/mot_shield1.png
new file mode 100644
index 0000000..ce509ff
Binary files /dev/null and b/symbols/mot_shield1.png differ
diff --git a/symbols/mot_shield2.png b/symbols/mot_shield2.png
new file mode 100644
index 0000000..c9e1965
Binary files /dev/null and b/symbols/mot_shield2.png differ
diff --git a/symbols/mot_shield3.png b/symbols/mot_shield3.png
new file mode 100644
index 0000000..9b27a6b
Binary files /dev/null and b/symbols/mot_shield3.png differ
diff --git a/symbols/mot_shield4.png b/symbols/mot_shield4.png
new file mode 100644
index 0000000..0c7ba69
Binary files /dev/null and b/symbols/mot_shield4.png differ
diff --git a/symbols/mot_shield5.png b/symbols/mot_shield5.png
new file mode 100644
index 0000000..2d0c1dd
Binary files /dev/null and b/symbols/mot_shield5.png differ
diff --git a/symbols/mot_shield6.png b/symbols/mot_shield6.png
new file mode 100644
index 0000000..0a97a3d
Binary files /dev/null and b/symbols/mot_shield6.png differ
diff --git a/symbols/mot_shield7.png b/symbols/mot_shield7.png
new file mode 100644
index 0000000..35a3dfc
Binary files /dev/null and b/symbols/mot_shield7.png differ
diff --git a/symbols/mot_shield8.png b/symbols/mot_shield8.png
new file mode 100644
index 0000000..8f0653d
Binary files /dev/null and b/symbols/mot_shield8.png differ
diff --git a/symbols/motel.p.20.png b/symbols/motel.p.20.png
new file mode 100644
index 0000000..56a96e5
Binary files /dev/null and b/symbols/motel.p.20.png differ
diff --git a/symbols/motorway_shield1.png b/symbols/motorway_shield1.png
new file mode 100644
index 0000000..40111a6
Binary files /dev/null and b/symbols/motorway_shield1.png differ
diff --git a/symbols/motorway_shield2.png b/symbols/motorway_shield2.png
new file mode 100644
index 0000000..331c522
Binary files /dev/null and b/symbols/motorway_shield2.png differ
diff --git a/symbols/motorway_shield3.png b/symbols/motorway_shield3.png
new file mode 100644
index 0000000..0e4f5fd
Binary files /dev/null and b/symbols/motorway_shield3.png differ
diff --git a/symbols/motorway_shield4.png b/symbols/motorway_shield4.png
new file mode 100644
index 0000000..56d7ab8
Binary files /dev/null and b/symbols/motorway_shield4.png differ
diff --git a/symbols/motorway_shield5.png b/symbols/motorway_shield5.png
new file mode 100644
index 0000000..2cc5d35
Binary files /dev/null and b/symbols/motorway_shield5.png differ
diff --git a/symbols/motorway_shield6.png b/symbols/motorway_shield6.png
new file mode 100644
index 0000000..3ece3f0
Binary files /dev/null and b/symbols/motorway_shield6.png differ
diff --git a/symbols/mud.png b/symbols/mud.png
new file mode 100644
index 0000000..fe031f6
Binary files /dev/null and b/symbols/mud.png differ
diff --git a/symbols/museum.p.16.png b/symbols/museum.p.16.png
new file mode 100644
index 0000000..c58d306
Binary files /dev/null and b/symbols/museum.p.16.png differ
diff --git a/symbols/nature_reserve.png b/symbols/nature_reserve.png
new file mode 100644
index 0000000..da01ec8
Binary files /dev/null and b/symbols/nature_reserve.png differ
diff --git a/symbols/nature_reserve2.png b/symbols/nature_reserve2.png
new file mode 100644
index 0000000..c804a8e
Binary files /dev/null and b/symbols/nature_reserve2.png differ
diff --git a/symbols/nature_reserve2T.png b/symbols/nature_reserve2T.png
new file mode 100644
index 0000000..7dd9728
Binary files /dev/null and b/symbols/nature_reserve2T.png differ
diff --git a/symbols/nature_reserve5.png b/symbols/nature_reserve5.png
new file mode 100644
index 0000000..db28f5e
Binary files /dev/null and b/symbols/nature_reserve5.png differ
diff --git a/symbols/nature_reserve6.png b/symbols/nature_reserve6.png
new file mode 100644
index 0000000..6768b56
Binary files /dev/null and b/symbols/nature_reserve6.png differ
diff --git a/symbols/nature_reserveT.png b/symbols/nature_reserveT.png
new file mode 100644
index 0000000..4da4863
Binary files /dev/null and b/symbols/nature_reserveT.png differ
diff --git a/symbols/orchard.png b/symbols/orchard.png
new file mode 100644
index 0000000..a889a9e
Binary files /dev/null and b/symbols/orchard.png differ
diff --git a/symbols/parking.p.16.png b/symbols/parking.p.16.png
new file mode 100644
index 0000000..5860900
Binary files /dev/null and b/symbols/parking.p.16.png differ
diff --git a/symbols/parking.png b/symbols/parking.png
new file mode 100644
index 0000000..9e3ad06
Binary files /dev/null and b/symbols/parking.png differ
diff --git a/symbols/parking_private.p.16.png b/symbols/parking_private.p.16.png
new file mode 100644
index 0000000..756ff7c
Binary files /dev/null and b/symbols/parking_private.p.16.png differ
diff --git a/symbols/peak.png b/symbols/peak.png
new file mode 100644
index 0000000..161cf50
Binary files /dev/null and b/symbols/peak.png differ
diff --git a/symbols/pharmacy.p.16.png b/symbols/pharmacy.p.16.png
new file mode 100644
index 0000000..fb1c56c
Binary files /dev/null and b/symbols/pharmacy.p.16.png differ
diff --git a/symbols/picnic.p.16.png b/symbols/picnic.p.16.png
new file mode 100644
index 0000000..0eff097
Binary files /dev/null and b/symbols/picnic.p.16.png differ
diff --git a/symbols/pint.png b/symbols/pint.png
new file mode 100644
index 0000000..d426eea
Binary files /dev/null and b/symbols/pint.png differ
diff --git a/symbols/place_of_worship.png b/symbols/place_of_worship.png
new file mode 100644
index 0000000..95494f5
Binary files /dev/null and b/symbols/place_of_worship.png differ
diff --git a/symbols/place_of_worship3.p.16.png b/symbols/place_of_worship3.p.16.png
new file mode 100644
index 0000000..d75bbf4
Binary files /dev/null and b/symbols/place_of_worship3.p.16.png differ
diff --git a/symbols/place_of_worship3.png b/symbols/place_of_worship3.png
new file mode 100644
index 0000000..fb01d05
Binary files /dev/null and b/symbols/place_of_worship3.png differ
diff --git a/symbols/playground.p.20.png b/symbols/playground.p.20.png
new file mode 100644
index 0000000..42db81d
Binary files /dev/null and b/symbols/playground.p.20.png differ
diff --git a/symbols/poi_cave.p.16.png b/symbols/poi_cave.p.16.png
new file mode 100644
index 0000000..aafddbb
Binary files /dev/null and b/symbols/poi_cave.p.16.png differ
diff --git a/symbols/police.p.16.png b/symbols/police.p.16.png
new file mode 100644
index 0000000..2dd87aa
Binary files /dev/null and b/symbols/police.p.16.png differ
diff --git a/symbols/post_box.p.16.png b/symbols/post_box.p.16.png
new file mode 100644
index 0000000..3119cc1
Binary files /dev/null and b/symbols/post_box.p.16.png differ
diff --git a/symbols/post_box.png b/symbols/post_box.png
new file mode 100644
index 0000000..8731497
Binary files /dev/null and b/symbols/post_box.png differ
diff --git a/symbols/post_office.p.16.png b/symbols/post_office.p.16.png
new file mode 100644
index 0000000..743255e
Binary files /dev/null and b/symbols/post_office.p.16.png differ
diff --git a/symbols/post_office.png b/symbols/post_office.png
new file mode 100644
index 0000000..42d9054
Binary files /dev/null and b/symbols/post_office.png differ
diff --git a/symbols/postoffice.png b/symbols/postoffice.png
new file mode 100644
index 0000000..d0434aa
Binary files /dev/null and b/symbols/postoffice.png differ
diff --git a/symbols/power_line.png b/symbols/power_line.png
new file mode 100644
index 0000000..ce94c8a
Binary files /dev/null and b/symbols/power_line.png differ
diff --git a/symbols/power_pole.png b/symbols/power_pole.png
new file mode 100644
index 0000000..ef18a39
Binary files /dev/null and b/symbols/power_pole.png differ
diff --git a/symbols/power_tower.png b/symbols/power_tower.png
new file mode 100644
index 0000000..2c963ad
Binary files /dev/null and b/symbols/power_tower.png differ
diff --git a/symbols/power_tower_3x3.png b/symbols/power_tower_3x3.png
new file mode 100644
index 0000000..4b1784e
Binary files /dev/null and b/symbols/power_tower_3x3.png differ
diff --git a/symbols/power_tower_5x5.png b/symbols/power_tower_5x5.png
new file mode 100644
index 0000000..b3a6a2b
Binary files /dev/null and b/symbols/power_tower_5x5.png differ
diff --git a/symbols/power_wind.png b/symbols/power_wind.png
new file mode 100644
index 0000000..29aeb7a
Binary files /dev/null and b/symbols/power_wind.png differ
diff --git a/symbols/pri_shield1.png b/symbols/pri_shield1.png
new file mode 100644
index 0000000..1234b38
Binary files /dev/null and b/symbols/pri_shield1.png differ
diff --git a/symbols/pri_shield2.png b/symbols/pri_shield2.png
new file mode 100644
index 0000000..880ab4a
Binary files /dev/null and b/symbols/pri_shield2.png differ
diff --git a/symbols/pri_shield3.png b/symbols/pri_shield3.png
new file mode 100644
index 0000000..a97846a
Binary files /dev/null and b/symbols/pri_shield3.png differ
diff --git a/symbols/pri_shield4.png b/symbols/pri_shield4.png
new file mode 100644
index 0000000..ee0361c
Binary files /dev/null and b/symbols/pri_shield4.png differ
diff --git a/symbols/pri_shield5.png b/symbols/pri_shield5.png
new file mode 100644
index 0000000..f68bc7d
Binary files /dev/null and b/symbols/pri_shield5.png differ
diff --git a/symbols/pri_shield6.png b/symbols/pri_shield6.png
new file mode 100644
index 0000000..32ac05c
Binary files /dev/null and b/symbols/pri_shield6.png differ
diff --git a/symbols/pri_shield7.png b/symbols/pri_shield7.png
new file mode 100644
index 0000000..7e4e2f1
Binary files /dev/null and b/symbols/pri_shield7.png differ
diff --git a/symbols/pri_shield8.png b/symbols/pri_shield8.png
new file mode 100644
index 0000000..73fcb3b
Binary files /dev/null and b/symbols/pri_shield8.png differ
diff --git a/symbols/primary_shield1.png b/symbols/primary_shield1.png
new file mode 100644
index 0000000..f7491b6
Binary files /dev/null and b/symbols/primary_shield1.png differ
diff --git a/symbols/primary_shield2.png b/symbols/primary_shield2.png
new file mode 100644
index 0000000..520f8f4
Binary files /dev/null and b/symbols/primary_shield2.png differ
diff --git a/symbols/primary_shield3.png b/symbols/primary_shield3.png
new file mode 100644
index 0000000..d4dd8e3
Binary files /dev/null and b/symbols/primary_shield3.png differ
diff --git a/symbols/primary_shield4.png b/symbols/primary_shield4.png
new file mode 100644
index 0000000..378e737
Binary files /dev/null and b/symbols/primary_shield4.png differ
diff --git a/symbols/primary_shield5.png b/symbols/primary_shield5.png
new file mode 100644
index 0000000..dc59c40
Binary files /dev/null and b/symbols/primary_shield5.png differ
diff --git a/symbols/primary_shield6.png b/symbols/primary_shield6.png
new file mode 100644
index 0000000..606fc12
Binary files /dev/null and b/symbols/primary_shield6.png differ
diff --git a/symbols/primary_shield7.png b/symbols/primary_shield7.png
new file mode 100644
index 0000000..9282fc0
Binary files /dev/null and b/symbols/primary_shield7.png differ
diff --git a/symbols/primary_shield8.png b/symbols/primary_shield8.png
new file mode 100644
index 0000000..3ccc5d1
Binary files /dev/null and b/symbols/primary_shield8.png differ
diff --git a/symbols/pub.p.16.png b/symbols/pub.p.16.png
new file mode 100644
index 0000000..b452a7e
Binary files /dev/null and b/symbols/pub.p.16.png differ
diff --git a/symbols/pub.png b/symbols/pub.png
new file mode 100644
index 0000000..3ac26f3
Binary files /dev/null and b/symbols/pub.png differ
diff --git a/symbols/quarry.png b/symbols/quarry.png
new file mode 100644
index 0000000..ab5088e
Binary files /dev/null and b/symbols/quarry.png differ
diff --git a/symbols/quarry2.png b/symbols/quarry2.png
new file mode 100644
index 0000000..38dcfac
Binary files /dev/null and b/symbols/quarry2.png differ
diff --git a/symbols/recycle.png b/symbols/recycle.png
new file mode 100644
index 0000000..4cf43a1
Binary files /dev/null and b/symbols/recycle.png differ
diff --git a/symbols/recycling.p.16.png b/symbols/recycling.p.16.png
new file mode 100644
index 0000000..59eb331
Binary files /dev/null and b/symbols/recycling.p.16.png differ
diff --git a/symbols/recycling.png b/symbols/recycling.png
new file mode 100644
index 0000000..5381898
Binary files /dev/null and b/symbols/recycling.png differ
diff --git a/symbols/rental_bicycle.p.20.png b/symbols/rental_bicycle.p.20.png
new file mode 100644
index 0000000..4bb10e0
Binary files /dev/null and b/symbols/rental_bicycle.p.20.png differ
diff --git a/symbols/restaurant.p.16.png b/symbols/restaurant.p.16.png
new file mode 100644
index 0000000..5c41008
Binary files /dev/null and b/symbols/restaurant.p.16.png differ
diff --git a/symbols/school.png b/symbols/school.png
new file mode 100644
index 0000000..4c919bf
Binary files /dev/null and b/symbols/school.png differ
diff --git a/symbols/scrub.png b/symbols/scrub.png
new file mode 100644
index 0000000..7668027
Binary files /dev/null and b/symbols/scrub.png differ
diff --git a/symbols/sec_shield1.png b/symbols/sec_shield1.png
new file mode 100644
index 0000000..3b22e6c
Binary files /dev/null and b/symbols/sec_shield1.png differ
diff --git a/symbols/sec_shield2.png b/symbols/sec_shield2.png
new file mode 100644
index 0000000..3a19224
Binary files /dev/null and b/symbols/sec_shield2.png differ
diff --git a/symbols/sec_shield3.png b/symbols/sec_shield3.png
new file mode 100644
index 0000000..c7d72d7
Binary files /dev/null and b/symbols/sec_shield3.png differ
diff --git a/symbols/sec_shield4.png b/symbols/sec_shield4.png
new file mode 100644
index 0000000..656817a
Binary files /dev/null and b/symbols/sec_shield4.png differ
diff --git a/symbols/sec_shield5.png b/symbols/sec_shield5.png
new file mode 100644
index 0000000..2918b07
Binary files /dev/null and b/symbols/sec_shield5.png differ
diff --git a/symbols/sec_shield6.png b/symbols/sec_shield6.png
new file mode 100644
index 0000000..4e1552b
Binary files /dev/null and b/symbols/sec_shield6.png differ
diff --git a/symbols/sec_shield7.png b/symbols/sec_shield7.png
new file mode 100644
index 0000000..04035ca
Binary files /dev/null and b/symbols/sec_shield7.png differ
diff --git a/symbols/sec_shield8.png b/symbols/sec_shield8.png
new file mode 100644
index 0000000..2c91468
Binary files /dev/null and b/symbols/sec_shield8.png differ
diff --git a/symbols/secondary_shield1.png b/symbols/secondary_shield1.png
new file mode 100644
index 0000000..7f463cc
Binary files /dev/null and b/symbols/secondary_shield1.png differ
diff --git a/symbols/secondary_shield2.png b/symbols/secondary_shield2.png
new file mode 100644
index 0000000..fe7ebd6
Binary files /dev/null and b/symbols/secondary_shield2.png differ
diff --git a/symbols/secondary_shield3.png b/symbols/secondary_shield3.png
new file mode 100644
index 0000000..f6c995a
Binary files /dev/null and b/symbols/secondary_shield3.png differ
diff --git a/symbols/secondary_shield4.png b/symbols/secondary_shield4.png
new file mode 100644
index 0000000..dd91317
Binary files /dev/null and b/symbols/secondary_shield4.png differ
diff --git a/symbols/secondary_shield5.png b/symbols/secondary_shield5.png
new file mode 100644
index 0000000..a9aa38f
Binary files /dev/null and b/symbols/secondary_shield5.png differ
diff --git a/symbols/secondary_shield6.png b/symbols/secondary_shield6.png
new file mode 100644
index 0000000..e3dcb46
Binary files /dev/null and b/symbols/secondary_shield6.png differ
diff --git a/symbols/secondary_shield7.png b/symbols/secondary_shield7.png
new file mode 100644
index 0000000..a90b587
Binary files /dev/null and b/symbols/secondary_shield7.png differ
diff --git a/symbols/secondary_shield8.png b/symbols/secondary_shield8.png
new file mode 100644
index 0000000..71feabf
Binary files /dev/null and b/symbols/secondary_shield8.png differ
diff --git a/symbols/shelter2.p.16.png b/symbols/shelter2.p.16.png
new file mode 100644
index 0000000..09ea530
Binary files /dev/null and b/symbols/shelter2.p.16.png differ
diff --git a/symbols/shinto.png b/symbols/shinto.png
new file mode 100644
index 0000000..6ac47f8
Binary files /dev/null and b/symbols/shinto.png differ
diff --git a/symbols/shop_bakery.p.16.png b/symbols/shop_bakery.p.16.png
new file mode 100644
index 0000000..89de12e
Binary files /dev/null and b/symbols/shop_bakery.p.16.png differ
diff --git a/symbols/shop_butcher.png b/symbols/shop_butcher.png
new file mode 100644
index 0000000..e31ca9d
Binary files /dev/null and b/symbols/shop_butcher.png differ
diff --git a/symbols/shop_clothes.p.16.png b/symbols/shop_clothes.p.16.png
new file mode 100644
index 0000000..b028a1c
Binary files /dev/null and b/symbols/shop_clothes.p.16.png differ
diff --git a/symbols/shop_convenience.p.16.png b/symbols/shop_convenience.p.16.png
new file mode 100644
index 0000000..2fc7584
Binary files /dev/null and b/symbols/shop_convenience.p.16.png differ
diff --git a/symbols/shop_diy.p.16.png b/symbols/shop_diy.p.16.png
new file mode 100644
index 0000000..b1954ab
Binary files /dev/null and b/symbols/shop_diy.p.16.png differ
diff --git a/symbols/shop_hairdresser.p.16.png b/symbols/shop_hairdresser.p.16.png
new file mode 100644
index 0000000..aa783f2
Binary files /dev/null and b/symbols/shop_hairdresser.p.16.png differ
diff --git a/symbols/shop_supermarket.p.16.png b/symbols/shop_supermarket.p.16.png
new file mode 100644
index 0000000..3b4338a
Binary files /dev/null and b/symbols/shop_supermarket.p.16.png differ
diff --git a/symbols/shopping_bicycle.p.16.png b/symbols/shopping_bicycle.p.16.png
new file mode 100644
index 0000000..d0b3680
Binary files /dev/null and b/symbols/shopping_bicycle.p.16.png differ
diff --git a/symbols/shopping_car.p.16.png b/symbols/shopping_car.p.16.png
new file mode 100644
index 0000000..e34715b
Binary files /dev/null and b/symbols/shopping_car.p.16.png differ
diff --git a/symbols/shopping_car_repair.p.16.png b/symbols/shopping_car_repair.p.16.png
new file mode 100644
index 0000000..9c38777
Binary files /dev/null and b/symbols/shopping_car_repair.p.16.png differ
diff --git a/symbols/sikh.png b/symbols/sikh.png
new file mode 100644
index 0000000..a3ade80
Binary files /dev/null and b/symbols/sikh.png differ
diff --git a/symbols/sikh3.p.16.png b/symbols/sikh3.p.16.png
new file mode 100644
index 0000000..9e8906e
Binary files /dev/null and b/symbols/sikh3.p.16.png differ
diff --git a/symbols/sosphone.png b/symbols/sosphone.png
new file mode 100644
index 0000000..0e5d0a2
Binary files /dev/null and b/symbols/sosphone.png differ
diff --git a/symbols/spring.png b/symbols/spring.png
new file mode 100644
index 0000000..c2dceb4
Binary files /dev/null and b/symbols/spring.png differ
diff --git a/symbols/station.png b/symbols/station.png
new file mode 100644
index 0000000..686ec10
Binary files /dev/null and b/symbols/station.png differ
diff --git a/symbols/station_disused.png b/symbols/station_disused.png
new file mode 100644
index 0000000..73be6f1
Binary files /dev/null and b/symbols/station_disused.png differ
diff --git a/symbols/station_small.png b/symbols/station_small.png
new file mode 100644
index 0000000..d8e75f5
Binary files /dev/null and b/symbols/station_small.png differ
diff --git a/symbols/synagogue.png b/symbols/synagogue.png
new file mode 100644
index 0000000..66ec7f1
Binary files /dev/null and b/symbols/synagogue.png differ
diff --git a/symbols/taoist.png b/symbols/taoist.png
new file mode 100644
index 0000000..39070d0
Binary files /dev/null and b/symbols/taoist.png differ
diff --git a/symbols/telephone.p.16.png b/symbols/telephone.p.16.png
new file mode 100644
index 0000000..29378e4
Binary files /dev/null and b/symbols/telephone.p.16.png differ
diff --git a/symbols/ter_shield1.png b/symbols/ter_shield1.png
new file mode 100644
index 0000000..9fad535
Binary files /dev/null and b/symbols/ter_shield1.png differ
diff --git a/symbols/ter_shield2.png b/symbols/ter_shield2.png
new file mode 100644
index 0000000..3092a89
Binary files /dev/null and b/symbols/ter_shield2.png differ
diff --git a/symbols/ter_shield3.png b/symbols/ter_shield3.png
new file mode 100644
index 0000000..0d42f6c
Binary files /dev/null and b/symbols/ter_shield3.png differ
diff --git a/symbols/ter_shield4.png b/symbols/ter_shield4.png
new file mode 100644
index 0000000..c30bb9a
Binary files /dev/null and b/symbols/ter_shield4.png differ
diff --git a/symbols/ter_shield5.png b/symbols/ter_shield5.png
new file mode 100644
index 0000000..5bfbf4e
Binary files /dev/null and b/symbols/ter_shield5.png differ
diff --git a/symbols/ter_shield6.png b/symbols/ter_shield6.png
new file mode 100644
index 0000000..4561fb1
Binary files /dev/null and b/symbols/ter_shield6.png differ
diff --git a/symbols/ter_shield7.png b/symbols/ter_shield7.png
new file mode 100644
index 0000000..80b4a16
Binary files /dev/null and b/symbols/ter_shield7.png differ
diff --git a/symbols/ter_shield8.png b/symbols/ter_shield8.png
new file mode 100644
index 0000000..a1eed49
Binary files /dev/null and b/symbols/ter_shield8.png differ
diff --git a/symbols/tertiary_shield1.png b/symbols/tertiary_shield1.png
new file mode 100644
index 0000000..0ba9015
Binary files /dev/null and b/symbols/tertiary_shield1.png differ
diff --git a/symbols/tertiary_shield2.png b/symbols/tertiary_shield2.png
new file mode 100644
index 0000000..4952fe7
Binary files /dev/null and b/symbols/tertiary_shield2.png differ
diff --git a/symbols/tertiary_shield3.png b/symbols/tertiary_shield3.png
new file mode 100644
index 0000000..4e7233c
Binary files /dev/null and b/symbols/tertiary_shield3.png differ
diff --git a/symbols/tertiary_shield4.png b/symbols/tertiary_shield4.png
new file mode 100644
index 0000000..b5ddee2
Binary files /dev/null and b/symbols/tertiary_shield4.png differ
diff --git a/symbols/tertiary_shield5.png b/symbols/tertiary_shield5.png
new file mode 100644
index 0000000..1c16176
Binary files /dev/null and b/symbols/tertiary_shield5.png differ
diff --git a/symbols/tertiary_shield6.png b/symbols/tertiary_shield6.png
new file mode 100644
index 0000000..87b8dad
Binary files /dev/null and b/symbols/tertiary_shield6.png differ
diff --git a/symbols/tertiary_shield7.png b/symbols/tertiary_shield7.png
new file mode 100644
index 0000000..8f3c4c5
Binary files /dev/null and b/symbols/tertiary_shield7.png differ
diff --git a/symbols/tertiary_shield8.png b/symbols/tertiary_shield8.png
new file mode 100644
index 0000000..ace8d21
Binary files /dev/null and b/symbols/tertiary_shield8.png differ
diff --git a/symbols/theatre.p.20.png b/symbols/theatre.p.20.png
new file mode 100644
index 0000000..36b918c
Binary files /dev/null and b/symbols/theatre.p.20.png differ
diff --git a/symbols/toilets.p.20.png b/symbols/toilets.p.20.png
new file mode 100644
index 0000000..80cf3af
Binary files /dev/null and b/symbols/toilets.p.20.png differ
diff --git a/symbols/tourist_archaeological2.glow.24.png b/symbols/tourist_archaeological2.glow.24.png
new file mode 100644
index 0000000..90c61c3
Binary files /dev/null and b/symbols/tourist_archaeological2.glow.24.png differ
diff --git a/symbols/tourist_memorial.p.20.png b/symbols/tourist_memorial.p.20.png
new file mode 100644
index 0000000..7fa8361
Binary files /dev/null and b/symbols/tourist_memorial.p.20.png differ
diff --git a/symbols/tower.png b/symbols/tower.png
new file mode 100644
index 0000000..304727a
Binary files /dev/null and b/symbols/tower.png differ
diff --git a/symbols/tower_water.p.20.png b/symbols/tower_water.p.20.png
new file mode 100644
index 0000000..5ca7801
Binary files /dev/null and b/symbols/tower_water.p.20.png differ
diff --git a/symbols/traffic_light.png b/symbols/traffic_light.png
new file mode 100644
index 0000000..1c2b3ca
Binary files /dev/null and b/symbols/traffic_light.png differ
diff --git a/symbols/transport_ford.p.16.png b/symbols/transport_ford.p.16.png
new file mode 100644
index 0000000..dc1bfc2
Binary files /dev/null and b/symbols/transport_ford.p.16.png differ
diff --git a/symbols/transport_slipway.p.20.png b/symbols/transport_slipway.p.20.png
new file mode 100644
index 0000000..45892de
Binary files /dev/null and b/symbols/transport_slipway.p.20.png differ
diff --git a/symbols/tree.png b/symbols/tree.png
new file mode 100644
index 0000000..7575bd6
Binary files /dev/null and b/symbols/tree.png differ
diff --git a/symbols/tree2.png b/symbols/tree2.png
new file mode 100644
index 0000000..f0e3e1f
Binary files /dev/null and b/symbols/tree2.png differ
diff --git a/symbols/tru_shield1.png b/symbols/tru_shield1.png
new file mode 100644
index 0000000..bbdd6fc
Binary files /dev/null and b/symbols/tru_shield1.png differ
diff --git a/symbols/tru_shield2.png b/symbols/tru_shield2.png
new file mode 100644
index 0000000..e33d296
Binary files /dev/null and b/symbols/tru_shield2.png differ
diff --git a/symbols/tru_shield3.png b/symbols/tru_shield3.png
new file mode 100644
index 0000000..1a47f9a
Binary files /dev/null and b/symbols/tru_shield3.png differ
diff --git a/symbols/tru_shield4.png b/symbols/tru_shield4.png
new file mode 100644
index 0000000..443c3f3
Binary files /dev/null and b/symbols/tru_shield4.png differ
diff --git a/symbols/tru_shield5.png b/symbols/tru_shield5.png
new file mode 100644
index 0000000..f53720b
Binary files /dev/null and b/symbols/tru_shield5.png differ
diff --git a/symbols/tru_shield6.png b/symbols/tru_shield6.png
new file mode 100644
index 0000000..092d0d9
Binary files /dev/null and b/symbols/tru_shield6.png differ
diff --git a/symbols/tru_shield7.png b/symbols/tru_shield7.png
new file mode 100644
index 0000000..49e9e03
Binary files /dev/null and b/symbols/tru_shield7.png differ
diff --git a/symbols/tru_shield8.png b/symbols/tru_shield8.png
new file mode 100644
index 0000000..587324a
Binary files /dev/null and b/symbols/tru_shield8.png differ
diff --git a/symbols/trunk_shield1.png b/symbols/trunk_shield1.png
new file mode 100644
index 0000000..bb849c2
Binary files /dev/null and b/symbols/trunk_shield1.png differ
diff --git a/symbols/trunk_shield2.png b/symbols/trunk_shield2.png
new file mode 100644
index 0000000..eb81d80
Binary files /dev/null and b/symbols/trunk_shield2.png differ
diff --git a/symbols/trunk_shield3.png b/symbols/trunk_shield3.png
new file mode 100644
index 0000000..4e6e976
Binary files /dev/null and b/symbols/trunk_shield3.png differ
diff --git a/symbols/trunk_shield4.png b/symbols/trunk_shield4.png
new file mode 100644
index 0000000..733d5d0
Binary files /dev/null and b/symbols/trunk_shield4.png differ
diff --git a/symbols/trunk_shield5.png b/symbols/trunk_shield5.png
new file mode 100644
index 0000000..d6700e7
Binary files /dev/null and b/symbols/trunk_shield5.png differ
diff --git a/symbols/trunk_shield6.png b/symbols/trunk_shield6.png
new file mode 100644
index 0000000..053784e
Binary files /dev/null and b/symbols/trunk_shield6.png differ
diff --git a/symbols/trunk_shield7.png b/symbols/trunk_shield7.png
new file mode 100644
index 0000000..3d8a555
Binary files /dev/null and b/symbols/trunk_shield7.png differ
diff --git a/symbols/trunk_shield8.png b/symbols/trunk_shield8.png
new file mode 100644
index 0000000..3d8f1b1
Binary files /dev/null and b/symbols/trunk_shield8.png differ
diff --git a/symbols/view_point.p.16.png b/symbols/view_point.p.16.png
new file mode 100644
index 0000000..b18660c
Binary files /dev/null and b/symbols/view_point.p.16.png differ
diff --git a/symbols/vineyard.png b/symbols/vineyard.png
new file mode 100644
index 0000000..6498e3f
Binary files /dev/null and b/symbols/vineyard.png differ
diff --git a/symbols/volcano.png b/symbols/volcano.png
new file mode 100644
index 0000000..a713ca3
Binary files /dev/null and b/symbols/volcano.png differ
diff --git a/symbols/walking.n.12.png b/symbols/walking.n.12.png
new file mode 100644
index 0000000..0902983
Binary files /dev/null and b/symbols/walking.n.12.png differ
diff --git a/symbols/windmill.png b/symbols/windmill.png
new file mode 100644
index 0000000..17229f3
Binary files /dev/null and b/symbols/windmill.png differ
diff --git a/symbols/zoo.png b/symbols/zoo.png
new file mode 100644
index 0000000..ef7e65b
Binary files /dev/null and b/symbols/zoo.png differ
diff --git a/water-features.mss b/water-features.mss
new file mode 100644
index 0000000..0672373
--- /dev/null
+++ b/water-features.mss
@@ -0,0 +1,72 @@
+#dam {
+  [zoom >= 13] {
+    line-width: 2;
+    line-color: #444;
+    line-join: round;
+    line-cap: round;
+  }
+  [zoom >= 15] {
+    text-name: "[name]";
+    text-halo-radius: 1;
+    text-fill: #222;
+    text-size: 8;
+    text-face-name: @book-fonts;
+  }
+}
+
+#marinas-area {
+  [zoom >= 14] {
+    a/line-width: 1;
+    a/line-offset: -0.5;
+    a/line-color: blue;
+    a/line-opacity: 0.1;
+    a/line-join: round;
+    a/line-cap: round;
+    b/line-width: 3;
+    b/line-offset: -1.5;
+    b/line-color: blue;
+    b/line-opacity: 0.1;
+    b/line-join: round;
+    b/line-cap: round;
+    [zoom >= 17] {
+      a/line-width: 2;
+      a/line-offset: -1;
+      b/line-width: 6;
+      b/line-offset: -3;
+    }
+  }
+}
+
+#piers-area {
+  [zoom >= 12] {
+    polygon-fill: @land-color;
+  }
+}
+
+#piers {
+  [man_made = 'breakwater'],
+  [man_made = 'groyne'] {
+    [zoom >= 12] {
+      line-width: 1;
+      line-color: #aaa;
+    }
+    [zoom >= 13] {
+      line-width: 2;
+    }
+    [zoom >= 16] {
+      line-width: 4;
+    }
+  }
+  [man_made = 'pier'][zoom >= 12] {
+    line-width: 1.5;
+    line-color: @land-color;
+    [zoom >= 13] { line-width: 3; }
+    [zoom >= 16] { line-width: 7; }
+  }
+}
+
+#locks {
+  [waterway = 'lock_gate'][zoom >= 17] {
+    point-file: url('symbols/lock_gate.png');
+  }
+}
diff --git a/water.mss b/water.mss
new file mode 100644
index 0000000..d4ddfd7
--- /dev/null
+++ b/water.mss
@@ -0,0 +1,313 @@
+ at water-text: #6699cc;
+
+#water-areas {
+  [natural = 'glacier']::natural {
+    [zoom >= 6] {
+      line-dasharray: 4,2;
+      line-width: 1.5;
+      line-color: #9cf;
+      polygon-pattern-file: url('symbols/glacier.png');
+      [zoom >= 8] {
+        polygon-pattern-file: url('symbols/glacier2.png');
+      }
+    }
+  }
+
+  [waterway = 'dock'],
+  [waterway = 'mill_pond'],
+  [waterway = 'canal'] {
+    [zoom >= 9]::waterway {
+      polygon-gamma: 0.75;
+      polygon-fill: @water-color;
+    }
+  }
+
+  [landuse = 'basin'][zoom >= 7]::landuse {
+    polygon-gamma: 0.75;
+    polygon-fill: @water-color;
+  }
+
+  [natural = 'lake']::natural,
+  [natural = 'water']::natural,
+  [landuse = 'reservoir']::landuse,
+  [waterway = 'riverbank']::waterway,
+  [landuse = 'water']::water {
+    [zoom >= 6] {
+      polygon-fill: @water-color;
+      polygon-gamma: 0.75;
+    }
+  }
+
+  [natural = 'mud'][zoom >= 13]::natural {
+    polygon-pattern-file: url('symbols/mud.png');
+  }
+}
+
+#water-areas-overlay {
+  [natural = 'marsh'],
+  [natural = 'wetland'] {
+    [zoom >= 13] {
+      polygon-pattern-file: url('symbols/marsh.png');
+    }
+  }
+}
+
+#glaciers-text {
+  [way_area >= 10000000][zoom >= 10],
+  [way_area >= 5000000][way_area < 10000000][zoom >= 11],
+  [way_area < 5000000][zoom >= 12] {
+    text-name: "[name]";
+    text-size: 10;
+    text-fill: #77f;
+    text-face-name: @oblique-fonts;
+    text-halo-radius: 1.5;
+    text-wrap-width: 20;
+  }
+}
+
+#water-lines-casing {
+  [waterway='stream'],
+  [waterway='ditch'],
+  [waterway='drain'] {
+    [zoom >= 13] {
+      line-width: 1.5;
+      line-color: white;
+      [waterway='stream'][zoom >= 15] {
+        line-width: 2.5;
+      }
+    }
+  }
+}
+
+#water-lines-low-zoom {
+  [waterway = 'river'][zoom >= 8][zoom < 12] {
+    line-color: @water-color;
+    line-width: 0.7;
+    [zoom >= 9] { line-width: 1.2; }
+    [zoom >= 10] { line-width: 1.6; }
+  }
+}
+
+#water-lines {
+  [waterway = 'weir'][zoom >= 15] {
+    line-color: #aaa;
+    line-width: 2;
+    line-join: round;
+    line-cap: round;
+  }
+
+  [waterway = 'wadi'][zoom >= 13] {
+    line-color: @water-color;
+    line-width: 1;
+    line-dasharray: 4,4;
+    line-cap: round;
+    line-join: round;
+    [zoom >= 16] { line-width: 2; }
+  }
+
+  [waterway = 'river'][zoom >= 12] {
+    line-color: @water-color;
+    line-width: 2;
+    line-cap: round;
+    line-join: round;
+    [zoom >= 13] {
+      line-width: 3;
+    }
+    [zoom >= 14] {
+      line-width: 5;
+    }
+    [zoom >= 15] {
+      line-width: 6;
+    }
+    [zoom >= 17] {
+      line-width: 10;
+    }
+    [zoom >= 18] {
+      line-width: 12;
+    }
+    [tunnel = 'yes'] {
+      [zoom >= 14] {
+        a/line-width: 6;
+        a/line-dasharray: 4,2;
+        a/line-color: @water-color;
+        b/line-width: 4;
+        b/line-color: white;
+      }
+      [zoom >= 15] {
+        a/line-width: 7;
+      }
+      [zoom >= 17] {
+        a/line-width: 11;
+        b/line-width: 7;
+      }
+      [zoom >= 18] {
+        a/line-width: 13;
+        b/line-width: 9;
+      }
+    }
+  }
+
+  [waterway = 'canal'][zoom >= 12][zoom < 14] {
+    line-color: @water-color;
+    line-width: 3;
+    line-cap: round;
+    line-join: round;
+    [zoom >= 13] {
+      line-width: 4;
+    }
+  }
+
+  [waterway = 'stream'],
+  [waterway = 'ditch'],
+  [waterway = 'drain'] {
+    [zoom >= 13][zoom < 15] {
+      line-width: 1;
+      line-color: @water-color;
+    }
+  }
+
+  [waterway = 'stream'][zoom >= 15] {
+    line-width: 2;
+    line-color: @water-color;
+    [tunnel = 'yes'] {
+      line-dasharray: 4,2;
+      line-width: 2.4;
+      a/line-width: 1.2;
+      a/line-color: #f3f7f7;
+    }
+  }
+
+  [waterway = 'drain'],
+  [waterway = 'ditch'] {
+    [zoom >= 15] {
+      line-width: 1;
+      line-color: @water-color;
+      [tunnel = 'yes'] {
+        line-width: 2;
+        line-dasharray: 4,2;
+        a/line-width: 1;
+        a/line-color: #f3f7f7;
+      }
+    }
+  }
+
+  [waterway = 'canal'][zoom >= 14] {
+    line-width: 7;
+    line-color: @water-color;
+    line-join: round;
+    line-cap: round;
+    [zoom >= 17] { line-width: 11; }
+    [tunnel = 'yes'] {
+      line-dasharray: 4,2;
+      b/line-width: 3;
+      b/line-color: white;
+      [zoom >= 17] { line-width: 7; }
+    }
+  }
+
+  [waterway = 'derelict_canal'][zoom >= 12] {
+    line-width: 1.5;
+    line-color: #b5e4d0;
+    line-dasharray: 4,4;
+    line-opacity: 0.5;
+    line-join: round;
+    line-cap: round;
+    [zoom >= 13] {
+      line-width: 2.5;
+      line-dasharray: 4,6;
+    }
+    [zoom >= 14] {
+      line-width: 4.5;
+      line-dasharray: 4,8;
+    }
+  }
+}
+
+#waterway-bridges {
+  [zoom >= 14] {
+    line-width: 7;
+    line-color: #000;
+    line-join: round;
+    b/line-width: 6;
+    b/line-color: @water-color;
+    b/line-cap: round;
+    b/line-join: round;
+    [zoom >= 17] {
+      line-width: 11;
+      b/line-width: 10;
+    }
+  }
+}
+
+#water-lines-text {
+  [waterway = 'river'][zoom >= 13] {
+    text-name: "[name]";
+    text-face-name: @oblique-fonts;
+    text-placement: line;
+    text-fill: @water-text;
+    text-spacing: 400;
+    text-size: 10;
+    text-halo-radius: 1;
+    [zoom >= 14] { text-size: 12; }
+    [tunnel = 'yes'] { text-min-distance: 200; }
+  }
+
+  [waterway = 'canal'][zoom >= 13][zoom < 14] {
+    text-name: "[name]";
+    text-face-name: @oblique-fonts;
+    text-halo-radius: 1;
+    text-size: 10;
+    text-placement: line;
+    text-fill: @water-text;
+  }
+
+  [waterway = 'stream'][zoom >= 15] {
+    text-name: "[name]";
+    text-size: 10;
+    text-face-name: @oblique-fonts;
+    text-fill: @water-text;
+    text-halo-radius: 1;
+    text-spacing: 600;
+    text-placement: line;
+    text-dy: 8;
+  }
+
+  [waterway = 'drain'],
+  [waterway = 'ditch'] {
+    [zoom >= 15] {
+      text-name: "[name]";
+      text-face-name: @oblique-fonts;
+      text-size: 10;
+      text-fill: @water-text;
+      text-spacing: 600;
+      text-placement: line;
+      text-halo-radius: 1;
+    }
+  }
+
+  [waterway = 'canal'][zoom >= 14] {
+    text-name: "[name]";
+    text-size: 10;
+    text-fill: @water-text;
+    text-placement: line;
+    text-face-name: @oblique-fonts;
+    text-halo-radius: 1;
+    [lock = 'yes'][zoom >= 17] {
+      text-placement: point;
+      text-wrap-width: 20;
+    }
+  }
+
+  [waterway = 'derelict_canal'][zoom >= 13] {
+    text-name: "[name]";
+    text-size: 10;
+    text-fill: #80d1ae;
+    text-face-name: @oblique-fonts;
+    text-placement: line;
+    text-spacing: 600;
+    text-halo-radius: 1;
+    [zoom >= 14] {
+      text-size: 12;
+    }
+  }
+}

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/openstreetmap-carto.git



More information about the Pkg-grass-devel mailing list