diff --git a/lanes.json b/lanes.json
index aa07d49..ce91d41 100644
--- a/lanes.json
+++ b/lanes.json
@@ -52,9 +52,9 @@
             "    {% if parking_left_type == 'diagonal' %}parking_left_dash_diag,",
             "{% endif %}{% endif %}{% endif %}",
             "{% if cyclelane_left %}cyclelane_left,{% endif %}",
-            "{% if lanes == 1 %}lane1{% else %}",
-            "  {% for i in 1..lanes - 1 %}lane{{ i }},mark{{ i }},{% endfor %}",
-            "  lane{{ lanes }}",
+            "{% if lanes == 1 %}lane1,sign1,{% else %}",
+            "  {% for i in 1..lanes - 1 %}lane{{ i }},mark{{ i }},sign{{ i }},{% endfor %}",
+            "  lane{{ lanes }},sign{{ lanes }}",
             "{% endif %}",
             "{% if cyclelane_right %},cyclelane_right{% endif %}",
             "{% if parking_right.width %},parking_right",
@@ -284,6 +284,258 @@
             "offset": "{{ lanes_width / -2 + 18 }}m",
             "dashArray": "{% if lanes - forward_lanes != 11 and backward_lanes != 11 %}2,8{% else %}5,5{% endif %}",
             "color": "white"
+        },
+        "style:sign1": {
+            "_": "{% set lane_forward = backward_lanes < 1 %}",
+            "width": "0",
+            "pattern0": "dash",
+            "pattern0-repeat": "30m",
+            "pattern0-pixelSize": "4m",
+            "pattern0-offset": "15.0m",
+            "pattern0-path-color": "white",
+            "pattern0-path-width": "0.3m",
+            "pattern0-lineOffset": "{{ lanes_width / -2 + 1.5 }}m",
+            "pattern1": "arrowHead",
+            "pattern1-repeat": "30m",
+            "pattern1-offset": "{{ lane_forward ? '17.0m' : '13.0m' }}",
+            "pattern1-polygon": "false",
+            "pattern1-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
+            "pattern1-pixelSize": "1.0m",
+            "pattern1-path-color": "white",
+            "pattern1-path-width": "0.3m",
+            "pattern1-path-fillOpacity": "0",
+            "pattern1-lineOffset": "{{ lanes_width / -2 + 1.5 }}m"
+        },
+        "style:sign2": {
+            "_": "{% set lane_forward = backward_lanes < 2 %}",
+            "width": "0",
+            "pattern0": "dash",
+            "pattern0-repeat": "30m",
+            "pattern0-pixelSize": "4m",
+            "pattern0-offset": "15.0m",
+            "pattern0-path-color": "white",
+            "pattern0-path-width": "0.3m",
+            "pattern0-lineOffset": "{{ lanes_width / -2 + 4.5 }}m",
+            "pattern1": "arrowHead",
+            "pattern1-repeat": "30m",
+            "pattern1-offset": "{{ lane_forward ? '17.0m' : '13.0m' }}",
+            "pattern1-polygon": "false",
+            "pattern1-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
+            "pattern1-pixelSize": "1.0m",
+            "pattern1-path-color": "white",
+            "pattern1-path-width": "0.3m",
+            "pattern1-path-fillOpacity": "0",
+            "pattern1-lineOffset": "{{ lanes_width / -2 + 4.5 }}m"
+        },
+        "style:sign3": {
+            "_": "{% set lane_forward = backward_lanes < 3 %}",
+            "width": "0",
+            "pattern0": "dash",
+            "pattern0-repeat": "30m",
+            "pattern0-pixelSize": "4m",
+            "pattern0-offset": "15.0m",
+            "pattern0-path-color": "white",
+            "pattern0-path-width": "0.3m",
+            "pattern0-lineOffset": "{{ lanes_width / -2 + 7.5 }}m",
+            "pattern1": "arrowHead",
+            "pattern1-repeat": "30m",
+            "pattern1-offset": "{{ lane_forward ? '17.0m' : '13.0m' }}",
+            "pattern1-polygon": "false",
+            "pattern1-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
+            "pattern1-pixelSize": "1.0m",
+            "pattern1-path-color": "white",
+            "pattern1-path-width": "0.3m",
+            "pattern1-path-fillOpacity": "0",
+            "pattern1-lineOffset": "{{ lanes_width / -2 + 7.5 }}m"
+        },
+        "style:sign4": {
+            "_": "{% set lane_forward = backward_lanes < 4 %}",
+            "width": "0",
+            "pattern0": "dash",
+            "pattern0-repeat": "30m",
+            "pattern0-pixelSize": "4m",
+            "pattern0-offset": "15.0m",
+            "pattern0-path-color": "white",
+            "pattern0-path-width": "0.3m",
+            "pattern0-lineOffset": "{{ lanes_width / -2 + 10.5 }}m",
+            "pattern1": "arrowHead",
+            "pattern1-repeat": "30m",
+            "pattern1-offset": "{{ lane_forward ? '17.0m' : '13.0m' }}",
+            "pattern1-polygon": "false",
+            "pattern1-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
+            "pattern1-pixelSize": "1.0m",
+            "pattern1-path-color": "white",
+            "pattern1-path-width": "0.3m",
+            "pattern1-path-fillOpacity": "0",
+            "pattern1-lineOffset": "{{ lanes_width / -2 + 10.5 }}m"
+        },
+        "style:sign5": {
+            "_": "{% set lane_forward = backward_lanes < 5 %}",
+            "width": "0",
+            "pattern0": "dash",
+            "pattern0-repeat": "30m",
+            "pattern0-pixelSize": "4m",
+            "pattern0-offset": "15.0m",
+            "pattern0-path-color": "white",
+            "pattern0-path-width": "0.3m",
+            "pattern0-lineOffset": "{{ lanes_width / -2 + 13.5 }}m",
+            "pattern1": "arrowHead",
+            "pattern1-repeat": "30m",
+            "pattern1-offset": "{{ lane_forward ? '17.0m' : '13.0m' }}",
+            "pattern1-polygon": "false",
+            "pattern1-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
+            "pattern1-pixelSize": "1.0m",
+            "pattern1-path-color": "white",
+            "pattern1-path-width": "0.3m",
+            "pattern1-path-fillOpacity": "0",
+            "pattern1-lineOffset": "{{ lanes_width / -2 + 13.5 }}m"
+        },
+        "style:sign6": {
+            "_": "{% set lane_forward = backward_lanes < 6 %}",
+            "width": "0",
+            "pattern0": "dash",
+            "pattern0-repeat": "30m",
+            "pattern0-pixelSize": "4m",
+            "pattern0-offset": "15.0m",
+            "pattern0-path-color": "white",
+            "pattern0-path-width": "0.3m",
+            "pattern0-lineOffset": "{{ lanes_width / -2 + 16.5 }}m",
+            "pattern1": "arrowHead",
+            "pattern1-repeat": "30m",
+            "pattern1-offset": "{{ lane_forward ? '17.0m' : '13.0m' }}",
+            "pattern1-polygon": "false",
+            "pattern1-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
+            "pattern1-pixelSize": "1.0m",
+            "pattern1-path-color": "white",
+            "pattern1-path-width": "0.3m",
+            "pattern1-path-fillOpacity": "0",
+            "pattern1-lineOffset": "{{ lanes_width / -2 + 16.5 }}m"
+        },
+        "style:sign7": {
+            "_": "{% set lane_forward = backward_lanes < 7 %}",
+            "width": "0",
+            "pattern0": "dash",
+            "pattern0-repeat": "30m",
+            "pattern0-pixelSize": "4m",
+            "pattern0-offset": "15.0m",
+            "pattern0-path-color": "white",
+            "pattern0-path-width": "0.3m",
+            "pattern0-lineOffset": "{{ lanes_width / -2 + 19.5 }}m",
+            "pattern1": "arrowHead",
+            "pattern1-repeat": "30m",
+            "pattern1-offset": "{{ lane_forward ? '17.0m' : '13.0m' }}",
+            "pattern1-polygon": "false",
+            "pattern1-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
+            "pattern1-pixelSize": "1.0m",
+            "pattern1-path-color": "white",
+            "pattern1-path-width": "0.3m",
+            "pattern1-path-fillOpacity": "0",
+            "pattern1-lineOffset": "{{ lanes_width / -2 + 19.5 }}m"
+        },
+        "style:sign8": {
+            "_": "{% set lane_forward = backward_lanes < 8 %}",
+            "width": "0",
+            "pattern0": "dash",
+            "pattern0-repeat": "30m",
+            "pattern0-pixelSize": "4m",
+            "pattern0-offset": "15.0m",
+            "pattern0-path-color": "white",
+            "pattern0-path-width": "0.3m",
+            "pattern0-lineOffset": "{{ lanes_width / -2 + 22.5 }}m",
+            "pattern1": "arrowHead",
+            "pattern1-repeat": "30m",
+            "pattern1-offset": "{{ lane_forward ? '17.0m' : '13.0m' }}",
+            "pattern1-polygon": "false",
+            "pattern1-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
+            "pattern1-pixelSize": "1.0m",
+            "pattern1-path-color": "white",
+            "pattern1-path-width": "0.3m",
+            "pattern1-path-fillOpacity": "0",
+            "pattern1-lineOffset": "{{ lanes_width / -2 + 22.5 }}m"
+        },
+        "style:sign9": {
+            "_": "{% set lane_forward = backward_lanes < 9 %}",
+            "width": "0",
+            "pattern0": "dash",
+            "pattern0-repeat": "30m",
+            "pattern0-pixelSize": "4m",
+            "pattern0-offset": "15.0m",
+            "pattern0-path-color": "white",
+            "pattern0-path-width": "0.3m",
+            "pattern0-lineOffset": "{{ lanes_width / -2 + 25.5 }}m",
+            "pattern1": "arrowHead",
+            "pattern1-repeat": "30m",
+            "pattern1-offset": "{{ lane_forward ? '17.0m' : '13.0m' }}",
+            "pattern1-polygon": "false",
+            "pattern1-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
+            "pattern1-pixelSize": "1.0m",
+            "pattern1-path-color": "white",
+            "pattern1-path-width": "0.3m",
+            "pattern1-path-fillOpacity": "0",
+            "pattern1-lineOffset": "{{ lanes_width / -2 + 25.5 }}m"
+        },
+        "style:sign10": {
+            "_": "{% set lane_forward = backward_lanes < 10 %}",
+            "width": "0",
+            "pattern0": "dash",
+            "pattern0-repeat": "30m",
+            "pattern0-pixelSize": "4m",
+            "pattern0-offset": "15.0m",
+            "pattern0-path-color": "white",
+            "pattern0-path-width": "0.3m",
+            "pattern0-lineOffset": "{{ lanes_width / -2 + 28.5 }}m",
+            "pattern1": "arrowHead",
+            "pattern1-repeat": "30m",
+            "pattern1-offset": "{{ lane_forward ? '17.0m' : '13.0m' }}",
+            "pattern1-polygon": "false",
+            "pattern1-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
+            "pattern1-pixelSize": "1.0m",
+            "pattern1-path-color": "white",
+            "pattern1-path-width": "0.3m",
+            "pattern1-path-fillOpacity": "0",
+            "pattern1-lineOffset": "{{ lanes_width / -2 + 28.5 }}m"
+        },
+        "style:sign11": {
+            "_": "{% set lane_forward = backward_lanes < 11 %}",
+            "width": "0",
+            "pattern0": "dash",
+            "pattern0-repeat": "30m",
+            "pattern0-pixelSize": "4m",
+            "pattern0-offset": "15.0m",
+            "pattern0-path-color": "white",
+            "pattern0-path-width": "0.3m",
+            "pattern0-lineOffset": "{{ lanes_width / -2 + 31.5 }}m",
+            "pattern1": "arrowHead",
+            "pattern1-repeat": "30m",
+            "pattern1-offset": "{{ lane_forward ? '17.0m' : '13.0m' }}",
+            "pattern1-polygon": "false",
+            "pattern1-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
+            "pattern1-pixelSize": "1.0m",
+            "pattern1-path-color": "white",
+            "pattern1-path-width": "0.3m",
+            "pattern1-path-fillOpacity": "0",
+            "pattern1-lineOffset": "{{ lanes_width / -2 + 31.5 }}m"
+        },
+        "style:sign12": {
+            "_": "{% set lane_forward = backward_lanes < 12 %}",
+            "width": "0",
+            "pattern0": "dash",
+            "pattern0-repeat": "30m",
+            "pattern0-pixelSize": "4m",
+            "pattern0-offset": "15.0m",
+            "pattern0-path-color": "white",
+            "pattern0-path-width": "0.3m",
+            "pattern0-lineOffset": "{{ lanes_width / -2 + 34.5 }}m",
+            "pattern1": "arrowHead",
+            "pattern1-repeat": "30m",
+            "pattern1-offset": "{{ lane_forward ? '17.0m' : '13.0m' }}",
+            "pattern1-polygon": "false",
+            "pattern1-angleCorrection": "{{ lane_forward ? 0 : 180 }}",
+            "pattern1-pixelSize": "1.0m",
+            "pattern1-path-color": "white",
+            "pattern1-path-width": "0.3m",
+            "pattern1-path-fillOpacity": "0",
+            "pattern1-lineOffset": "{{ lanes_width / -2 + 34.5 }}m"
         }
     },
     "info": [