aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZarino Zappia <mail@zarino.co.uk>2019-01-08 11:52:17 +0000
committerDave Arter <davea@mysociety.org>2019-08-16 12:01:13 +0100
commitb803b4b406116701c4196974c47c21714aab0b30 (patch)
tree20a9c324f8256c7959fb01e686695b6321433cdd
parent52dfeb4d3c0883d05d01662597f1f8f5d74ba15b (diff)
[Westminster] Initial cobrand.
Include a demo fixture file that creates Westminster categories and two example users: bin/westminster/set-up-categories --commit Co-authored-by: Martin Wright <martin@mysociety.org> Co-authored-by: Matthew Somerville <matthew@mysociety.org>
-rwxr-xr-xbin/westminster/fixture356
-rw-r--r--perllib/FixMyStreet/Cobrand/Westminster.pm29
-rw-r--r--templates/email/westminster/_email_color_overrides.html21
-rw-r--r--templates/email/westminster/_email_setting_overrides.html5
-rw-r--r--templates/web/westminster/around/intro.html1
-rw-r--r--templates/web/westminster/auth/general.html92
-rw-r--r--templates/web/westminster/before_wrapper.html6
-rw-r--r--templates/web/westminster/footer_extra.html35
-rw-r--r--templates/web/westminster/header_extra.html3
-rw-r--r--templates/web/westminster/header_logo.html2
-rw-r--r--templates/web/westminster/next_steps.html0
-rw-r--r--templates/web/westminster/report/new/_category_extra_field_notice.html3
-rw-r--r--templates/web/westminster/site-name.html1
-rw-r--r--templates/web/westminster/tracking_code.html11
-rw-r--r--web/cobrands/westminster/_colours.scss38
-rw-r--r--web/cobrands/westminster/base.scss228
-rw-r--r--web/cobrands/westminster/favicon.icobin0 -> 2070 bytes
-rw-r--r--web/cobrands/westminster/images/chevron-black-right.pngbin0 -> 329 bytes
-rw-r--r--web/cobrands/westminster/images/chevron-black-right.svg1
-rw-r--r--web/cobrands/westminster/images/collection-default-bg.jpgbin0 -> 136484 bytes
-rw-r--r--web/cobrands/westminster/images/footer-facebook.pngbin0 -> 283 bytes
-rw-r--r--web/cobrands/westminster/images/footer-facebook.svg1
-rw-r--r--web/cobrands/westminster/images/footer-instagram.pngbin0 -> 492 bytes
-rw-r--r--web/cobrands/westminster/images/footer-instagram.svg1
-rw-r--r--web/cobrands/westminster/images/footer-logo.pngbin0 -> 4725 bytes
-rw-r--r--web/cobrands/westminster/images/footer-logo.svg1
-rw-r--r--web/cobrands/westminster/images/footer-twitter.pngbin0 -> 489 bytes
-rw-r--r--web/cobrands/westminster/images/footer-twitter.svg1
-rw-r--r--web/cobrands/westminster/images/search-icon.pngbin0 -> 881 bytes
-rw-r--r--web/cobrands/westminster/images/wcc_logo.pngbin0 -> 9365 bytes
-rw-r--r--web/cobrands/westminster/layout.scss148
31 files changed, 984 insertions, 0 deletions
diff --git a/bin/westminster/fixture b/bin/westminster/fixture
new file mode 100755
index 000000000..4f7a86afb
--- /dev/null
+++ b/bin/westminster/fixture
@@ -0,0 +1,356 @@
+#!/usr/bin/env perl
+
+use warnings;
+use v5.14;
+use utf8;
+
+BEGIN {
+ use File::Basename qw(dirname);
+ use File::Spec;
+ my $d = dirname(File::Spec->rel2abs($0));
+ require "$d/../../setenv.pl";
+}
+
+use FixMyStreet;
+use FixMyStreet::DB::Factories;
+use Getopt::Long::Descriptive;
+
+my ($opt, $usage) = describe_options(
+ '%c %o',
+ [ 'empty', "Empty all tables of the database first" ],
+ [ 'commit', "Actually commit changes to the database" ],
+ [ 'help', "print usage message and exit", { shortcircuit => 1 } ],
+);
+print($usage->text), exit if $opt->help;
+
+FixMyStreet::DB::Factories->setup($opt);
+
+# Westminster City Council https://mapit.mysociety.org/area/2504.html
+my $area_id = 2504;
+
+my $group_drainage = [
+ 'Drainage or Surface water',
+];
+my $group_flyposting = [
+ 'Flyposting',
+ 'Stickers',
+ 'Graffiti',
+];
+my $group_noise = [
+ 'Aircraft',
+ 'Basement construction',
+ 'Birds',
+ 'Building site',
+ 'Burglar or fire alarms',
+ 'Buskers',
+ 'Car alarm',
+ 'Crossrail or Tideway construction',
+ 'Dogs barking or animal noise',
+ 'Noise from a business',
+ 'Noise from a home',
+ 'Noise in the street',
+ 'Underground tube trains or stations',
+];
+
+# Despite appearances, this will create a new Body every time,
+# because it uses the `key_field` of `id` (see Factories.pm) to
+# find existing bodies, and we’re not providing an `id` here.
+# I guess it makes sense, because you might want a single MapIt
+# area to be covered by multiple administrative bodies.
+my $body = FixMyStreet::DB::Factory::Body->find_or_create({
+ area_id => $area_id,
+ categories => [ @$group_drainage, @$group_flyposting, @$group_noise ],
+});
+
+say "Found/created body " . $body->name . " for MapIt area ID " . $area_id;
+
+my $yes_no_list = [
+ { 'name' => 'Yes', 'key' => 'yes' },
+ { 'name' => 'No', 'key' => 'no' },
+];
+
+for my $cat (@$group_drainage) {
+ my $child_cat = FixMyStreet::DB->resultset("Contact")->find({
+ body => $body,
+ category => $cat
+ });
+ $child_cat->set_extra_fields(
+ {
+ description => 'Note: Please report dangerous issues by telephone on 0207 641 2000.',
+ hint => 'For example where there is a danger of causing serious harm to the public or significant damage to property, including a missing drain cover or immediate flooding to a property.',
+ code => 'danger',
+ required => 'false',
+ variable => 'false', # set 'true' to show data input
+ datatype => 'string',
+ },
+ {
+ description => 'What is the problem with the drain?',
+ code => 'drain_problem_type',
+ required => 'false',
+ variable => 'true',
+ datatype => 'singlevaluelist',
+ values => [
+ { 'name' => 'Burst water main', 'key' => 'burst' },
+ { 'name' => 'Blocked drain', 'key' => 'blocked' },
+ { 'name' => 'Flooding from a blocked drain', 'key' => 'flooded' },
+ { 'name' => 'Smelly drain', 'key' => 'smelly' },
+ { 'name' => 'Broken drain cover', 'key' => 'broken' },
+ { 'name' => 'Missing drain cover', 'key' => 'missing' },
+ { 'name' => 'Rats, flies or cockroaches', 'key' => 'vermin' },
+ ],
+ },
+ {
+ description => 'What type of customer are you?',
+ code => 'customer_type',
+ required => 'false',
+ variable => 'true',
+ datatype => 'singlevaluelist',
+ values => [
+ { 'name' => 'Member of the public', 'key' => 'public' },
+ { 'name' => 'Company', 'key' => 'company' },
+ { 'name' => 'Police', 'key' => 'police' },
+ { 'name' => 'Emergency services', 'key' => 'emergency' },
+ { 'name' => 'Council officer', 'key' => 'officer' },
+ { 'name' => 'Council contractor', 'key' => 'contractor' },
+ ],
+ },
+ );
+ $child_cat->update;
+}
+
+say "Created drainage category";
+
+for my $cat (@$group_flyposting) {
+ my $child_cat = FixMyStreet::DB->resultset("Contact")->find({
+ body => $body,
+ category => $cat
+ });
+ $child_cat->set_extra_metadata( group => 'Graffiti or Flyposting' );
+ $child_cat->set_extra_fields(
+ {
+ description => 'Surface type',
+ code => 'surface_type',
+ required => 'false',
+ variable => 'true', # set 'false' to hide data input
+ datatype => 'singlevaluelist',
+ values => [
+ { 'name' => 'Brick', 'key' => 'brick' },
+ { 'name' => 'Concrete', 'key' => 'concrete' },
+ { 'name' => 'Glass', 'key' => 'glass' },
+ { 'name' => 'Metal', 'key' => 'metal' },
+ { 'name' => 'Plastic', 'key' => 'plastic' },
+ { 'name' => 'Stone', 'key' => 'stone' },
+ { 'name' => 'Tarmac', 'key' => 'tarmac' },
+ { 'name' => 'Other / not known', 'key' => 'other' },
+ ],
+ },
+ {
+ description => 'Size',
+ code => 'size',
+ required => 'false',
+ variable => 'true',
+ datatype => 'singlevaluelist',
+ values => [
+ { 'name' => 'less than 1m sq', 'key' => 'small' },
+ { 'name' => '1m sq to 3m sq', 'key' => 'medium' },
+ { 'name' => '3m sq +', 'key' => 'large' },
+ ],
+ },
+ {
+ description => 'Is it offensive?',
+ code => 'offensive',
+ required => 'false',
+ variable => 'true',
+ datatype => 'singlevaluelist',
+ values => $yes_no_list,
+ },
+ );
+ $child_cat->update;
+}
+
+say "Created flyposting categories";
+
+my $happening_now = {
+ description => 'Is the noise happening now?',
+ code => 'now',
+ required => 'false',
+ variable => 'true',
+ datatype => 'singlevaluelist',
+ values => $yes_no_list,
+};
+
+for my $cat (@$group_noise) {
+ my $child_cat = FixMyStreet::DB->resultset("Contact")->find({
+ body => $body,
+ category => $cat
+ });
+ $child_cat->set_extra_metadata( group => 'Noise' );
+
+ if ( $cat eq 'Aircraft' ) {
+ $child_cat->set_extra_fields(
+ {
+ description => 'Please contact the Civil Aviation Authority, or Ministry of Defence if it’s a military aircraft.',
+ code => 'go_away',
+ required => 'false',
+ variable => 'false', # set 'true' to show data input
+ datatype => 'string',
+ },
+ );
+
+ } elsif ( $cat eq 'Basement construction') {
+ $child_cat->set_extra_fields(
+ {
+ description => 'Note: Building work is only allowed from 8am to 6pm on weekdays, and 8am to 1pm on Saturdays. Building work that is extremely noisy, such as demolition, is not allowed in residential areas at weekends. Builders need special permission from the council to work outside these times.',
+ code => 'building_permits',
+ required => 'false',
+ variable => 'false', # set 'true' to show data input
+ datatype => 'string',
+ },
+ {
+ description => 'What is the name of the person responsible?',
+ code => 'responsible',
+ required => 'false',
+ variable => 'true',
+ datatype => 'string',
+ },
+ $happening_now,
+ );
+
+ } elsif ( $cat eq 'Birds') {
+ $child_cat->set_extra_fields(
+ $happening_now,
+ );
+
+ } elsif ( $cat eq 'Building site') {
+ $child_cat->set_extra_fields(
+ {
+ description => 'What is the name of the business making the noise?',
+ code => 'responsible',
+ required => 'false',
+ variable => 'true',
+ datatype => 'string',
+ },
+ $happening_now,
+ );
+
+ } elsif ( $cat eq 'Burglar or fire alarms') {
+ $child_cat->set_extra_fields(
+ {
+ description => 'What is the name of the person or business making the noise?',
+ code => 'responsible',
+ required => 'false',
+ variable => 'true',
+ datatype => 'string',
+ },
+ $happening_now,
+ );
+
+ } elsif ( $cat eq 'Busking') {
+ $child_cat->set_extra_fields(
+ {
+ description => 'Note: Busking is not licensed in Westminster, nor is it illegal. If a busker is behaving unreasonably the Council can help.',
+ code => 'danger',
+ required => 'false',
+ variable => 'false', # set 'true' to show data input
+ datatype => 'string',
+ },
+ $happening_now,
+ );
+
+ } elsif ( $cat eq 'Car alarm') {
+ $child_cat->set_extra_fields(
+ {
+ description => 'Vehicle registration',
+ code => 'vehicle_registration',
+ required => 'false',
+ variable => 'true',
+ datatype => 'string',
+ },
+ $happening_now,
+ );
+
+ } elsif ( $cat eq 'Crossrail or Tideway construction') {
+ $child_cat->set_extra_fields(
+ {
+ description => 'Please contact Crossrail or Tideway directly.',
+ code => 'go_away',
+ required => 'false',
+ variable => 'false', # set 'true' to show data input
+ datatype => 'string',
+ },
+ );
+
+ } elsif ( $cat eq 'Dogs barking or animal noise') {
+ $child_cat->set_extra_fields(
+ {
+ description => 'Note: Animal cruelty should be reported to the RSPCA.',
+ code => 'rspca',
+ required => 'false',
+ variable => 'false', # set 'true' to show data input
+ datatype => 'string',
+ },
+ {
+ description => 'What is the name of the person or business making the noise?',
+ code => 'responsible',
+ required => 'false',
+ variable => 'true',
+ datatype => 'string',
+ },
+ $happening_now,
+ );
+
+ } elsif ( $cat eq 'Noise from a business') {
+ $child_cat->set_extra_fields(
+ {
+ description => 'What is the name of the business making the noise?',
+ code => 'responsible',
+ required => 'false',
+ variable => 'true',
+ datatype => 'string',
+ },
+ $happening_now,
+ );
+
+ } elsif ( $cat eq 'Noise from a home') {
+ $child_cat->set_extra_fields(
+ {
+ description => 'What is the name of the person responsible?',
+ code => 'responsible',
+ required => 'false',
+ variable => 'true',
+ datatype => 'string',
+ },
+ $happening_now,
+ );
+
+ } elsif ( $cat eq 'Noise in the street') {
+ $child_cat->set_extra_fields(
+ $happening_now,
+ );
+
+ } elsif ( $cat eq 'Underground tube trains or stations') {
+ $child_cat->set_extra_fields(
+ {
+ description => 'TFL are a Statutory Undertaker and you should contact them first to investigate your complaint. If they have failed to resolve your complaint please continue with this form, including your TFL reference number, and we will look into this for you further.',
+ code => 'tfl',
+ required => 'false',
+ variable => 'false', # set 'true' to show data input
+ datatype => 'string',
+ },
+ $happening_now,
+ );
+
+ }
+
+ $child_cat->update;
+}
+
+say "Created noise categories";
+
+foreach (
+ { name => 'Wizard of Oz', email_verified => 1, email => 'admin@example.org', is_superuser => 't' },
+ { name => 'Norma User', email_verified => 1, email => 'user@example.org' },
+) {
+ FixMyStreet::DB::Factory::User->find_or_create($_);
+ say "Found/created user $_->{email}";
+}
diff --git a/perllib/FixMyStreet/Cobrand/Westminster.pm b/perllib/FixMyStreet/Cobrand/Westminster.pm
new file mode 100644
index 000000000..6076b9caf
--- /dev/null
+++ b/perllib/FixMyStreet/Cobrand/Westminster.pm
@@ -0,0 +1,29 @@
+package FixMyStreet::Cobrand::Westminster;
+use base 'FixMyStreet::Cobrand::Whitelabel';
+
+use strict;
+use warnings;
+
+sub council_area_id { return 2504; }
+sub council_area { return 'Westminster'; }
+sub council_name { return 'Westminster City Council'; }
+sub council_url { return 'Westminster'; }
+
+sub disambiguate_location {
+ my $self = shift;
+ return {
+ %{ $self->SUPER::disambiguate_location() },
+ town => 'Westminster',
+ centre => '51.513444,-0.160467',
+ bounds => [ 51.483816, -0.216088, 51.539793, -0.111101 ],
+ };
+}
+
+sub enter_postcode_text {
+ my ($self) = @_;
+ return 'Enter a ' . $self->council_area . ' postcode, or street name';
+}
+
+sub send_questionnaires { 0 }
+
+1;
diff --git a/templates/email/westminster/_email_color_overrides.html b/templates/email/westminster/_email_color_overrides.html
new file mode 100644
index 000000000..362f58d53
--- /dev/null
+++ b/templates/email/westminster/_email_color_overrides.html
@@ -0,0 +1,21 @@
+[%
+
+westminster_black = '#0d0e16'
+westminster_blue = '#3065bd'
+westminster_navy = '#0b2265'
+westminster_yellow = '#fecb00'
+westminster_grey = '#f7f5f6'
+
+body_background_color = westminster_grey
+header_background_color = '#fff'
+secondary_column_background_color = '#fff'
+
+link_text_color = westminster_blue
+
+header_padding = "20px" # a full CSS padding property (eg: top/right/bottom/left)
+
+logo_width = "139" # pixel measurement, but without 'px' suffix
+logo_height = "35" # pixel measurement, but without 'px' suffix
+logo_file = "site-logo@2.png"
+
+%]
diff --git a/templates/email/westminster/_email_setting_overrides.html b/templates/email/westminster/_email_setting_overrides.html
new file mode 100644
index 000000000..9dce49a83
--- /dev/null
+++ b/templates/email/westminster/_email_setting_overrides.html
@@ -0,0 +1,5 @@
+[%
+
+header_style = "padding: $header_padding; background: $header_background_color; color: $header_text_color; border-bottom: 3px solid $westminster_yellow;"
+
+%] \ No newline at end of file
diff --git a/templates/web/westminster/around/intro.html b/templates/web/westminster/around/intro.html
new file mode 100644
index 000000000..a40891769
--- /dev/null
+++ b/templates/web/westminster/around/intro.html
@@ -0,0 +1 @@
+ <h1>Report it</h1>
diff --git a/templates/web/westminster/auth/general.html b/templates/web/westminster/auth/general.html
new file mode 100644
index 000000000..381e8ff24
--- /dev/null
+++ b/templates/web/westminster/auth/general.html
@@ -0,0 +1,92 @@
+[% INCLUDE 'header.html', bodyclass='authpage', title = loc('Sign in') %]
+
+<h1>
+ [% loc('Sign in') %]
+</h1>
+
+[% TRY %][% INCLUDE 'auth/_general_top.html' %][% CATCH file %][% END %]
+
+[% IF oauth_need_email %]
+ <p class="form-error">[% loc('We need your email address, please give it below.') %]</p>
+[% END %]
+[% IF oauth_failure %]
+ <p class="form-error">[% loc('Sorry, we could not log you in. Please fill in the form below.') %]</p>
+[% END %]
+
+<form action="/auth" method="post" name="general_auth" class="validate">
+ <fieldset>
+
+ <input type="hidden" name="r" value="[% c.req.params.r | html %]">
+
+[% IF NOT oauth_need_email AND c.cobrand.social_auth_enabled %]
+ [% IF c.cobrand.feature('oidc_login') %]
+ <div class="form-box">
+ <button name="oidc_sign_in" id="oidc_sign_in" value="oidc_sign_in" class="btn btn--block btn--social btn--oidc">
+ [% tprintf(loc('Login with %s'), c.cobrand.feature('oidc_login').display_name) %]
+ </button>
+ </div>
+ [% END %]
+ <div id="js-social-email-hide">
+[% END %]
+
+ [% loc_username_error = INCLUDE 'auth/_username_error.html' default='email' %]
+
+[% IF c.config.SMS_AUTHENTICATION %]
+ [% SET username_label = loc('Your email or mobile') %]
+[% ELSE %]
+ [% SET username_label = loc('Your email') %]
+[% END %]
+
+ <label class="n" for="username">[% username_label %]</label>
+ [% IF loc_username_error %]
+ <div class="form-error">[% loc_username_error %]</div>
+ [% END %]
+ <input type="text" class="form-control required" id="username" name="username" value="[% username | html %]" autocomplete="username"
+ autofocus>
+
+ <div id="form_sign_in">
+ [% IF oauth_need_email %]
+ [% INCLUDE form_sign_in_no %]
+ <input type="hidden" name="oauth_need_email" value="1">
+ [% ELSE %]
+ [% INCLUDE form_sign_in_yes %]
+ [% INCLUDE form_sign_in_no %]
+ [% END %]
+ </div>
+
+[% IF NOT oauth_need_email AND c.cobrand.social_auth_enabled %]
+ </div>
+[% END %]
+
+ </fieldset>
+</form>
+
+[% INCLUDE 'footer.html' %]
+
+[% BLOCK form_sign_in_yes %]
+ <p class="hidden-nojs js-sign-in-password-hide">
+ <input class="btn btn--primary btn--block js-sign-in-password-btn" type="submit" name="sign_in_by_password" value="[% loc('Sign in with a password') %]">
+ </p>
+ <div class="hidden-js js-sign-in-password">
+ <label for="password_sign_in">[% loc('Your password') %]</label>
+
+ <div class="form-txt-submit-box">
+ <input type="password" name="password_sign_in" class="form-control" id="password_sign_in" value="" autocomplete="current-password">
+ <input class="green-btn" type="submit" name="sign_in_by_password" value="[% loc('Sign in') %]">
+ </div>
+
+ <p>
+ <a href="/auth/forgot">[% loc('Forgotten your password?') %]</a>
+ </p>
+ </div>
+[% END %]
+
+[% BLOCK form_sign_in_no %]
+ <p><input class="fake-link" type="submit" name="sign_in_by_code" value="
+ [%~ IF c.config.SMS_AUTHENTICATION %]
+ [%~ loc('Email me a link or text me a code to sign in') %]
+ [%~ ELSE %]
+ [%~ loc('Email me a link to sign in') %]
+ [%~ END ~%]
+ "></p>
+[% END %]
diff --git a/templates/web/westminster/before_wrapper.html b/templates/web/westminster/before_wrapper.html
new file mode 100644
index 000000000..8061bfbc3
--- /dev/null
+++ b/templates/web/westminster/before_wrapper.html
@@ -0,0 +1,6 @@
+[% IF c.config.BASE_URL == "https://www.fixmystreet.com" OR c.config.BASE_URL == "https://staging.fixmystreet.com" %]
+<!-- Google Tag Manager (noscript) -->
+<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MVJJRB"
+height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
+<!-- End Google Tag Manager (noscript) -->
+[% END %]
diff --git a/templates/web/westminster/footer_extra.html b/templates/web/westminster/footer_extra.html
new file mode 100644
index 000000000..25f156c80
--- /dev/null
+++ b/templates/web/westminster/footer_extra.html
@@ -0,0 +1,35 @@
+<footer class="westminster-footer" id="westminster-footer">
+
+ <div class="container">
+
+ <div class="westminster-footer-logo">
+ <a href="https://www.westminster.gov.uk/">City of Westminster</a>
+ </div>
+
+ <ul class="westminster-site-links">
+ <li><a href="https://www.westminster.gov.uk/apply-and-pay">Apply and pay</a></li>
+ <li><a href="https://www.westminster.gov.uk/report-it">Report it</a></li>
+ <li><a href="https://www.westminster.gov.uk/licensing-and-planning">Licensing and planning</a></li>
+ <li><a href="https://www.westminster.gov.uk/find-it">Find</a></li>
+ </ul>
+
+ <ul class="westminster-social-links">
+ <li><a href="https://www.facebook.com/CityWestminster/" class="westminster-social-links__facebook">Facebook</a></li>
+ <li><a href="https://twitter.com/CityWestminster" class="westminster-social-links__twitter">Twitter</a></li>
+ <li><a href="https://www.instagram.com/citywestminster" class="westminster-social-links__instagram">Instagram</a></li>
+ </ul>
+
+ <ul class="westminster-tertiary-links">
+ <li><a href="https://www.westminster.gov.uk/accessibility">Accessibility</a></li>
+ <li><a href="https://www.westminster.gov.uk/jobs">Careers</a></li>
+ <li><a href="https://www.westminster.gov.uk/data-protection">Data protection</a></li>
+ <li><a href="https://www.westminster.gov.uk/freedom-of-information">Freedom of information</a></li>
+ <li><a href="https://www.westminster.gov.uk/sites/default/files/gender_pay_gap_2018_2019.pdf" class="ext" target="_blank">Gender pay gap</a></li>
+ <li><a href="https://www.westminster.gov.uk/modern-slavery-statement">Modern slavery statement</a></li>
+ <li><a href="https://www.westminster.gov.uk/stay-informed-westminster-newsletter">Newsletters</a></li>
+ <li><a href="https://www.westminster.gov.uk/terms-conditions">Terms and conditions</a></li>
+ </ul>
+
+ </div>
+
+</footer>
diff --git a/templates/web/westminster/header_extra.html b/templates/web/westminster/header_extra.html
new file mode 100644
index 000000000..bcae1e7e3
--- /dev/null
+++ b/templates/web/westminster/header_extra.html
@@ -0,0 +1,3 @@
+[% INCLUDE 'tracking_code.html' %]
+<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700&amp;display=swap" rel="stylesheet">
+<link rel="shortcut icon" type="image/x-icon" href="/cobrands/westminster/favicon.ico">
diff --git a/templates/web/westminster/header_logo.html b/templates/web/westminster/header_logo.html
new file mode 100644
index 000000000..a58fea318
--- /dev/null
+++ b/templates/web/westminster/header_logo.html
@@ -0,0 +1,2 @@
+<a href="https://www.westminster.gov.uk" id="site-logo" title="Home">[% site_name %]</a>
+<a href="[% c.cobrand.base_url IF admin %]/" id="report-cta" title="[%- loc('Report a problem') -%]">[%- loc('Report') -%]</a>
diff --git a/templates/web/westminster/next_steps.html b/templates/web/westminster/next_steps.html
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/templates/web/westminster/next_steps.html
diff --git a/templates/web/westminster/report/new/_category_extra_field_notice.html b/templates/web/westminster/report/new/_category_extra_field_notice.html
new file mode 100644
index 000000000..cecabd574
--- /dev/null
+++ b/templates/web/westminster/report/new/_category_extra_field_notice.html
@@ -0,0 +1,3 @@
+[% IF meta.datatype_description AND NOT hide_descriptions %]
+ <p class="form-hint">[% meta.datatype_description %]</p>
+[% END %]
diff --git a/templates/web/westminster/site-name.html b/templates/web/westminster/site-name.html
new file mode 100644
index 000000000..6e69a1843
--- /dev/null
+++ b/templates/web/westminster/site-name.html
@@ -0,0 +1 @@
+Report it
diff --git a/templates/web/westminster/tracking_code.html b/templates/web/westminster/tracking_code.html
new file mode 100644
index 000000000..14b65854e
--- /dev/null
+++ b/templates/web/westminster/tracking_code.html
@@ -0,0 +1,11 @@
+[% IF c.config.BASE_URL == "https://www.fixmystreet.com" OR c.config.BASE_URL == "https://staging.fixmystreet.com" %]
+<!-- Google Tag Manager -->
+<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
+new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
+j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
+'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
+})(window,document,'script','dataLayer','GTM-MVJJRB');</script>
+<!-- End Google Tag Manager -->
+[% ELSE %]
+<!-- Tracking code not inserted as "[% c.config.BASE_URL %]" not "https://www.fixmystreet.com" -->
+[% END %]
diff --git a/web/cobrands/westminster/_colours.scss b/web/cobrands/westminster/_colours.scss
new file mode 100644
index 000000000..be1779daa
--- /dev/null
+++ b/web/cobrands/westminster/_colours.scss
@@ -0,0 +1,38 @@
+/* COLOURS */
+
+$westminster_black: #0d0e16;
+$westminster_blue: #1e6dc7;
+$westminster_green: #137c71;
+$westminster_pink: #c8007b;
+$westminster_navy: #0b2265;
+$westminster_yellow: #fecb00;
+$westminster_grey: #f7f5f6;
+
+$primary: $westminster_yellow;
+
+$primary_b: #000000;
+$primary_text: #222222;
+
+$base_bg: $westminster_grey;
+$base_fg: #000;
+
+$nav_background_colour: #fff;
+$nav_colour: $westminster_navy;
+$nav_hover_background_colour: $westminster_blue;
+
+// Colour used for front page 'how to report a problem' steps
+$col_big_numbers: #ccc;
+
+$header-top-border: false;
+
+$menu-image: 'menu-black';
+
+$col_click_map: $westminster_yellow;
+
+$body-font: 'Open Sans', sans-serif;
+$heading-font: $body-font;
+$meta-font: $body-font;
+
+$mappage-header-height: 4.5em;
+
+$high-dpi-screen: '-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi'; \ No newline at end of file
diff --git a/web/cobrands/westminster/base.scss b/web/cobrands/westminster/base.scss
new file mode 100644
index 000000000..1ca07fb44
--- /dev/null
+++ b/web/cobrands/westminster/base.scss
@@ -0,0 +1,228 @@
+@import "../sass/h5bp";
+@import "colours";
+@import "../sass/mixins";
+
+@import "../sass/base";
+
+body.frontpage {
+ background-color: #fff; // instead of $westminster_grey
+}
+
+#site-logo {
+ background-position: 0 0;
+ background-size: 120px 30px;
+ height: 30px;
+ width: 130px; // 10px of white space to the right, so centred logo position matches main site
+ background-image: url(/cobrands/westminster/images/wcc_logo.png);
+ margin: 0 auto; // centre logo
+}
+
+#site-header {
+ padding-top: 13px;
+ padding-bottom: 15px;
+ border-bottom: 3px solid $westminster-yellow;
+}
+
+#nav-link {
+ right: auto;
+ left: 0.25em; // roughly match "menu" icon location on left of the main site
+}
+
+#report-cta {
+ right: 1em; // right-aligned, rather than left-aligned
+}
+
+#front-main {
+ background-color: $westminster_grey;
+ margin: 0;
+ padding: 1em;
+ text-align: inherit;
+
+ h1 {
+ font-weight: bold;
+ color: $westminster_navy;
+ }
+
+ #postcodeForm {
+ margin: 0;
+ padding: 0;
+ background: transparent;
+ color: inherit;
+
+ div {
+ display: block;
+ border: none;
+ background: transparent;
+ position: relative;
+
+ input#pc {
+ display: block;
+ width: 100%;
+ box-sizing: border-box;
+ padding: 10px 22px;
+ box-shadow: 1px 1px 5px 1px rgba(104, 104, 104, 0.4);
+ background: #fff;
+ }
+
+ input#sub {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ display: block;
+ width: 0;
+ height: auto;
+ padding-left: 50px;
+ overflow: hidden;
+ background: transparent url(/cobrands/westminster/images/search-icon.png) no-repeat 50% 50%;
+ background-size: 25px 25px;
+
+ &:hover {
+ background: transparent url(/cobrands/westminster/images/search-icon.png) no-repeat 50% 50%;
+ background-size: 25px 25px;
+ }
+
+ &:focus {
+ outline: 1px dotted #000;
+ }
+ }
+ }
+ }
+
+ a#geolocate_link {
+ background: transparent;
+ display: block;
+ padding: 0;
+ margin-top: 0.5em;
+ font-family: inherit;
+ font-size: 1em;
+ border-radius: 0;
+ color: $westminster_blue;
+
+ &:hover {
+ background: transparent;
+ text-decoration: underline;
+ }
+ }
+
+ .form-hint {
+ color: inherit;
+ }
+}
+
+#front-howto h2,
+#front-recently h2 {
+ font-weight: bold;
+ color: $westminster-navy;
+}
+
+ol.big-numbers>li:before {
+ color: $westminster-navy;
+}
+
+#front_stats {
+ background-color: $westminster-blue;
+ color: #fff;
+}
+
+#report-cta {
+ border: 0;
+ background-color: $westminster-yellow;
+ &:hover,
+ &:focus {
+ color: #fff;
+ }
+}
+
+.westminster-footer {
+ background-color: $westminster_navy;
+ border-top: 3px solid $westminster-yellow;
+ padding: 1.5em 0;
+ text-align: center;
+
+ a {
+ color: #fff;
+ }
+}
+
+.westminster-footer-logo {
+ a {
+ $image-width: 200px*(130/200);
+ $image-height: 49px*(130/200);
+ display: inline-block;
+ overflow: hidden;
+ width: $image-width;
+ padding-top: $image-height;
+ height: 0;
+ background-size: $image-width $image-height;
+ background-position: center center;
+ background-repeat: no-repeat;
+ @include svg-background-image('/cobrands/westminster/images/footer-logo');
+ }
+}
+
+.westminster-site-links,
+.westminster-social-links,
+.westminster-tertiary-links {
+ list-style: none;
+ margin: 0;
+
+ li {
+ list-style: none;
+ }
+}
+
+.westminster-site-links {
+ margin-top: 1.5em;
+ font-size: 1.1em;
+
+ li {
+ margin-bottom: 1em;
+ }
+}
+
+.westminster-social-links {
+ margin: 1.5em -6px;
+
+ li {
+ display: inline-block;
+ margin: 0 6px;
+ }
+
+ a {
+ display: inline-block;
+ overflow: hidden;
+ width: 38px;
+ padding-top: 38px;
+ height: 0;
+ background-color: $westminster_grey;
+ background-size: 24px 24px;
+ background-repeat: no-repeat;
+ background-position: center center;
+ border-radius: 38px;
+ }
+}
+
+.westminster-social-links__twitter {
+ @include svg-background-image('/cobrands/westminster/images/footer-twitter');
+}
+
+.westminster-social-links__instagram {
+ @include svg-background-image('/cobrands/westminster/images/footer-instagram');
+}
+
+.westminster-social-links__facebook {
+ @include svg-background-image('/cobrands/westminster/images/footer-facebook');
+}
+
+.westminster-tertiary-links {
+ font-size: 0.8em;
+ padding-top: 2em;
+ border-top: 1px solid $westminster_grey;
+ margin: 0 -6px;
+
+ li {
+ display: inline-block;
+ margin: 0.2em 6px;
+ }
+}
diff --git a/web/cobrands/westminster/favicon.ico b/web/cobrands/westminster/favicon.ico
new file mode 100644
index 000000000..35c7ff782
--- /dev/null
+++ b/web/cobrands/westminster/favicon.ico
Binary files differ
diff --git a/web/cobrands/westminster/images/chevron-black-right.png b/web/cobrands/westminster/images/chevron-black-right.png
new file mode 100644
index 000000000..4375d7f71
--- /dev/null
+++ b/web/cobrands/westminster/images/chevron-black-right.png
Binary files differ
diff --git a/web/cobrands/westminster/images/chevron-black-right.svg b/web/cobrands/westminster/images/chevron-black-right.svg
new file mode 100644
index 000000000..5b24145ac
--- /dev/null
+++ b/web/cobrands/westminster/images/chevron-black-right.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="43" height="33"><path fill="#0D0E16" d="M0 0h13l13 16-13 16H0l13-16"/></svg> \ No newline at end of file
diff --git a/web/cobrands/westminster/images/collection-default-bg.jpg b/web/cobrands/westminster/images/collection-default-bg.jpg
new file mode 100644
index 000000000..7ccfab873
--- /dev/null
+++ b/web/cobrands/westminster/images/collection-default-bg.jpg
Binary files differ
diff --git a/web/cobrands/westminster/images/footer-facebook.png b/web/cobrands/westminster/images/footer-facebook.png
new file mode 100644
index 000000000..72e74c606
--- /dev/null
+++ b/web/cobrands/westminster/images/footer-facebook.png
Binary files differ
diff --git a/web/cobrands/westminster/images/footer-facebook.svg b/web/cobrands/westminster/images/footer-facebook.svg
new file mode 100644
index 000000000..4dea6ce6f
--- /dev/null
+++ b/web/cobrands/westminster/images/footer-facebook.svg
@@ -0,0 +1 @@
+<svg width="24" height="24" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M17.8 1v3.6h-2.1c-.8 0-1.3.1-1.6.4-.2.4-.4.8-.4 1.5V9h4l-.6 4h-3.4V23h-4V13H6.1V9h3.4V6c0-1.6.5-2.9 1.4-3.8A5 5 0 0 1 14.7 1l3 .1z" fill="#091F67" fill-rule="nonzero"/></svg> \ No newline at end of file
diff --git a/web/cobrands/westminster/images/footer-instagram.png b/web/cobrands/westminster/images/footer-instagram.png
new file mode 100644
index 000000000..f1bdee818
--- /dev/null
+++ b/web/cobrands/westminster/images/footer-instagram.png
Binary files differ
diff --git a/web/cobrands/westminster/images/footer-instagram.svg b/web/cobrands/westminster/images/footer-instagram.svg
new file mode 100644
index 000000000..a3623fde1
--- /dev/null
+++ b/web/cobrands/westminster/images/footer-instagram.svg
@@ -0,0 +1 @@
+<svg width="24" height="24" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 19.1v-8.7H18l.3 1.8a6.2 6.2 0 0 1-3.2 5.4c-1 .5-2 .8-3.2.8-1.7 0-3.3-.6-4.5-1.8a5.9 5.9 0 0 1-1.6-6.2H4v8.7c0 .2 0 .4.2.6l.6.2h14.3c.3 0 .5 0 .6-.2l.3-.6zM16.2 12c0-1.1-.5-2-1.3-2.9A4 4 0 0 0 12 8 4 4 0 0 0 9.1 9C8.3 10 7.9 11 7.9 12a4 4 0 0 0 4.1 4 4 4 0 0 0 3-1.2c.7-.8 1.2-1.7 1.2-2.8zM20 7V5l-.3-.6A.9.9 0 0 0 19 4h-2.3c-.3 0-.5.1-.7.3l-.2.6v2.2c0 .3 0 .5.2.7.2.2.4.3.7.3H19c.3 0 .5-.1.7-.3.2-.2.3-.4.3-.7zm2.3-2.7v15.2c0 .8-.3 1.4-.8 2-.5.4-1.1.7-1.9.7H4.4c-.8 0-1.4-.3-2-.8-.4-.5-.7-1.1-.7-1.9V4.4c0-.8.3-1.4.8-2 .5-.4 1.1-.7 1.9-.7h15.2c.8 0 1.4.3 2 .8.4.5.7 1.1.7 1.9z" fill="#091F67" fill-rule="nonzero"/></svg> \ No newline at end of file
diff --git a/web/cobrands/westminster/images/footer-logo.png b/web/cobrands/westminster/images/footer-logo.png
new file mode 100644
index 000000000..0131b9342
--- /dev/null
+++ b/web/cobrands/westminster/images/footer-logo.png
Binary files differ
diff --git a/web/cobrands/westminster/images/footer-logo.svg b/web/cobrands/westminster/images/footer-logo.svg
new file mode 100644
index 000000000..b06e03cb4
--- /dev/null
+++ b/web/cobrands/westminster/images/footer-logo.svg
@@ -0,0 +1 @@
+<svg width="200" height="49" viewBox="0 0 200 49" xmlns="http://www.w3.org/2000/svg"><g fill="#FFF" fill-rule="nonzero"><path d="M195 33.4c0-.3 0-.5-.3-.5l-.7.8c-.5.7-1.9 1.6-2.4 1.9-.3 0-.4.2-.4.4 0 .3.2.3.3.3.9.1 1.2.2 1.2 2.1v6c0 1.7 0 2-1 2.3-.6 0-.8.2-.8.5 0 .4.3.4.4.4l2.5-.1h2.8c.2 0 .5 0 .5-.4s-.3-.5-.8-.5c-1.3 0-1.3-1-1.3-2.2v-5.9c0-2.6.7-3 1.2-3 .2 0 .3 0 .8.6.3.6.7.8 1.2.8.6 0 1.5-.5 1.5-1.7 0-1.3-.9-2-1.8-2-1.4 0-2.5 1.9-2.6 2l-.2.2-.1-.4v-1.6zM84.7 36.4l-.2-.7.1-.4 1.6-4c.8-2 1-2.2 1.7-2.2.6 0 .9-.2.9-.6 0-.4-.3-.4-.6-.4l-1.3.1h-2c-.2 0-.4 0-.4.3a.4.4 0 0 0 .4.4c.5.1.8.3.8.7 0 .4-.1.7-.3 1L84 34.5l-1.4-4-.2-1.1c0-.3.2-.4.5-.4.2 0 .9 0 .9-.5a.4.4 0 0 0-.4-.4l-2.3.1h-2.6c-.2 0-.5 0-.5.3 0 .4.3.4.9.6.4 0 .6.4 1.1 1.9l2.4 6.6v.9l-1.9 4.7-4.4-12.7c-.2-.3-.2-.7-.3-1 0-.4.5-.5.6-.5.4 0 .7 0 .7-.5 0-.4-.3-.4-.6-.4l-2.5.1-2.4-.1c-.2 0-.5 0-.5.4s0 .4.9.6c.4 0 .7.2 1.3 1.8L79 47.3c.1.4.3.7.5.7s.3-.1.6-.9l2.9-7.8 2.5 8c.2.6.4.7.6.7.2 0 .3-.2.4-.6l5.1-15.6c.8-2.6 1.2-2.6 1.7-2.7.6-.1.9-.2.9-.6 0-.4-.3-.4-.4-.4l-1.7.1h-1.8c-.2 0-.6 0-.6.3 0 .4.2.4.4.5.8.1 1 .2 1 .7a9 9 0 0 1-.4 1.7L87 43l-2.2-6.5zM101.6 38.2c.3 0 .6 0 .6-.5 0-1-.8-4.5-4.4-4.5-3.2 0-6 3-6 7.5 0 4.4 2.5 7 5.6 7 3 0 4.8-2.7 4.8-3.1 0-.1 0-.3-.3-.3l-.5.5c-.6.8-1.6 1.2-2.6 1.2-2.5 0-4.3-2.6-4.3-6.1 0-1.6.3-1.7.7-1.7h6.4zm-6.1-1c-.6 0-.7 0-.7-.3 0-.5.8-3 3-3 .3 0 2 0 2 1.9 0 .8-.7 1.5-1.7 1.5h-2.6zM103.6 45.7c0 .8 0 1 .3 1.2.9.5 2 .8 3 .9 3.2 0 4.6-2.7 4.6-5 0-2.7-2-3.8-2.8-4.2-2.4-1.3-3-1.6-3-2.8a1.8 1.8 0 0 1 2-2c1.6 0 2.2 1.7 2.4 2.3.1.6.2.7.4.7s.3-.4.3-.5v-1.8c0-.5 0-.9-.5-1l-2.4-.3c-3.1 0-4.2 2.5-4.2 4.2 0 2.3 1.7 3.1 3.1 3.9 1.7.8 2.8 1.5 2.8 3.2 0 1.6-1.3 2.5-2.4 2.5-2 0-2.6-2.7-2.7-3.3-.1-.5-.3-.8-.5-.8-.3 0-.4.4-.4.5v2.3zM116.3 35.6c0-.6 0-.7.4-.7h2.1c.4 0 .4 0 .5-.6 0-.5-.1-.6-.3-.6h-2.1c-.5 0-.6 0-.6-.7v-2c0-.6-.3-.6-.3-.6-.2 0-.4.3-.4.4a7 7 0 0 1-2.2 2.8l-.6.4-.4.6c0 .3.3.3.4.3h.6c.4 0 .5.2.5.6v8.9c0 2.3 1.2 3.4 2.5 3.4 1.7 0 3.2-2 3.2-2.4 0-.1 0-.3-.2-.3l-.2.2c-.9.6-1.2.7-1.6.7-1.2 0-1.3-1.4-1.3-2.8v-7.6zM135.8 44.4c0 1.7 0 2-1 2.3-.5 0-.7.2-.7.5 0 .4.2.4.4.4l2.4-.1h2.5c.2 0 .4 0 .4-.3s-.1-.4-.7-.5c-1-.2-1-.6-1-2.3V37c0-1-.3-3.8-3.4-3.8-.8 0-1.7.4-2.7 1.4 0 .1-.6 1-.8 1l-.5-.8c-.4-1-1.4-1.6-2.5-1.6s-2 .2-3.3 2l-.3.3-.1-.6v-1.5c0-.3 0-.6-.3-.6-.2 0-.4.3-.5.6a7 7 0 0 1-2.5 2c-.2 0-.3.2-.3.4 0 .4.3.4.6.4.8.1.8.8.8 2.3v6c0 1.6 0 2-1 2.2-.6 0-.8.2-.8.5 0 .4.3.4.4.4l2.5-.1h2.4c.2 0 .5 0 .5-.3s-.1-.4-.7-.5c-1-.2-1-.6-1-2.3v-6.6c0-.7 0-1.3.4-1.7.4-.7 1-1 2-1 1.7 0 2 1.6 2 3.2v6c0 1.9 0 2.2-1 2.4-.5 0-.7.2-.7.5 0 .4.2.4.4.4l2.5-.1h2.4c.2 0 .4 0 .4-.3s0-.4-.7-.5c-1-.2-1-.6-1-2.3v-6.7c0-.6 0-1.3.4-1.8.5-.6 1.2-1 2-1 2 0 2 2 2 3v6.5zM145 29.8c0-1-.5-1.8-1.2-1.8-.8 0-1.4.9-1.4 1.7 0 1 .6 1.7 1.4 1.7.7 0 1.3-.8 1.3-1.6M142.6 44.4c0 1.7 0 2-1 2.3-.5 0-.7.2-.7.5 0 .4.2.4.4.4l2.5-.1h2.5c.1 0 .4 0 .4-.3s-.1-.4-.7-.5c-1-.2-1-.6-1-2.3v-10c0-.7 0-1.1-.3-1.1-.2 0-1 .8-1.1 1-.4.4-1 .8-2.1 1.3-.3 0-.4.2-.4.5s.4.4.4.4c.9 0 1.1.5 1.1 2v6zM156.6 44.4c0 1.7 0 2-1 2.3-.6 0-.8.2-.8.5 0 .4.3.4.4.4l2.5-.1h2.5c.2 0 .4 0 .4-.3s0-.4-.7-.5c-1-.2-1-.6-1-2.3v-7.2c0-3-1.7-4-3.3-4-1.4 0-2 .4-3.5 2.1l-.4.2v-2.1c0-.3-.1-.6-.3-.6-.2 0-.4.3-.6.6a7 7 0 0 1-2.4 2c-.3 0-.3.2-.3.4 0 .4.2.4.6.4.7.1.7.8.7 2.2v6c0 1.7 0 2-1 2.3-.5 0-.7.2-.7.5 0 .4.2.4.4.4l2.5-.2 2.5.2c.2 0 .4 0 .4-.4 0-.3-.1-.4-.7-.5-1-.2-1-.6-1-2.3v-6.6c0-.7 0-1.3.4-1.7.5-.7 1.2-1 2-1 2.4 0 2.4 2.2 2.4 3.7v5.6zM162.4 45.7c0 .8 0 1 .3 1.2 1 .5 2 .8 3 .9 3.2 0 4.7-2.7 4.7-5 0-2.7-2-3.8-2.8-4.2-2.5-1.3-3-1.6-3-2.8a1.8 1.8 0 0 1 2-2c1.6 0 2.2 1.7 2.3 2.3.2.6.3.7.5.7s.3-.4.3-.5v-1.8c0-.5 0-.9-.6-1l-2.3-.3c-3.2 0-4.2 2.5-4.2 4.2 0 2.3 1.7 3.1 3 3.9 1.7.8 2.8 1.5 2.8 3.2 0 1.6-1.2 2.5-2.3 2.5-2 0-2.6-2.7-2.8-3.3 0-.5-.2-.8-.5-.8s-.3.4-.3.5v2.3zM175.8 35.6c0-.6 0-.7.5-.7h2c.4 0 .5 0 .5-.6 0-.5 0-.6-.3-.6H176.4c-.5 0-.6 0-.6-.7v-2c0-.6-.2-.6-.3-.6-.2 0-.3.3-.4.4a7 7 0 0 1-2.1 2.8l-.6.4c-.2.2-.4.4-.4.6 0 .3.3.3.4.3h.5c.4 0 .6.2.6.6v8.9c0 2.3 1.2 3.4 2.4 3.4 1.8 0 3.3-2 3.3-2.4 0-.1 0-.3-.2-.3 0 0-.2 0-.3.2-.8.6-1.1.7-1.5.7-1.2 0-1.4-1.4-1.4-2.8v-7.6zM189.3 38.2c.3 0 .6 0 .6-.5 0-1-.8-4.5-4.4-4.5-3.2 0-6 3-6 7.5 0 4.4 2.5 7 5.6 7 3 0 4.7-2.7 4.7-3.1 0-.1 0-.3-.2-.3l-.5.5c-.6.8-1.6 1.2-2.6 1.2-2.5 0-4.2-2.6-4.2-6.1 0-1.6.2-1.7.6-1.7h6.4zm-6.1-1c-.6 0-.6 0-.6-.3 0-.5.7-3 2.9-3 .3 0 2 0 2 1.9 0 .8-.7 1.5-1.7 1.5h-2.6z"/><g><path d="M86.5 2.8c-.1-.9-.2-1.2-1.3-1.4-1.6-.4-2-.5-3.1-.5C75.9 1 73 6.6 73 11c0 4 2.6 10.2 8.7 10.2 2.4 0 4-1 4.4-1.3.3-.3.6-.7.5-1.2l.2-2.6c0-.3 0-.5-.3-.5s-.5.4-.5.6c-1 2.4-2 4.1-4.3 4.1-3.5 0-5.5-5-5.5-9.4 0-4 1.8-9.1 5.7-9.1 2.2 0 3 1.4 4 3.2.2.5.4.5.5.5.3 0 .3-.2.3-.5l-.2-2.2zM92.5 2.8c0-1-.6-1.8-1.3-1.8-.8 0-1.3.9-1.3 1.8s.5 1.7 1.3 1.7 1.3-.9 1.3-1.7M90 17.8c0 1.7 0 2-1 2.2-.5.1-.7.3-.7.5 0 .5.2.5.4.5l2.5-.2 2.5.2c.2 0 .4 0 .4-.4 0-.3-.1-.5-.7-.6-1-.2-1-.5-1-2.3V7.5c0-.7 0-1-.3-1-.2 0-1 .8-1.1 1-.4.3-1 .7-2.1 1.2-.3.1-.4.3-.4.5 0 .4.4.4.5.4.8.1 1 .5 1 2.2v6zM98 8.8c0-.7 0-.7.5-.7h2.1c.3 0 .4 0 .4-.6s0-.7-.3-.7H98.6c-.5 0-.6 0-.6-.6V4c0-.5-.2-.5-.3-.5l-.4.4a7.2 7.2 0 0 1-2 2.8l-.7.5c-.2 0-.4.3-.4.5 0 .4.3.4.4.4h.6c.3 0 .5.1.5.5v9.1c0 2.4 1.2 3.4 2.4 3.4 1.8 0 3.3-1.9 3.3-2.4 0 0 0-.2-.2-.2h-.3c-.8.8-1.1.9-1.5.9-1.2 0-1.4-1.5-1.4-2.9V8.8zM106 9.5c-.2-.3-.2-.6-.3-1 0-.5.3-.8.6-.8 1-.1 1-.1 1-.5 0-.3-.1-.4-.4-.4h-5c-.2 0-.6 0-.6.4l.1.3h.3c1 .2 1.1.2 1.7 2l3 10 .4 1.6-.2.9-.6 1.8c-.4 1-.7 1.1-1 1.1h-.8c-.8 0-1 .8-1 1.5 0 .4 0 1.3 1.3 1.3s1.4-.5 1.7-1.8l2.2-7.7c1-3.3 1.9-5.6 2.9-8.3.5-1.5.8-2.2 1.3-2.3.7 0 .9-.1.9-.5V7c-.2-.1-.3-.2-.4-.1h-3.8s-.4 0-.4.4.3.4.9.4c.6 0 .8.4.8 1l-.3 1.5-2.1 6.7-2.3-7.3zM135.8 8.8c0-.6.1-.7.6-.7h2.1c.3 0 .4 0 .4-.4 0-.7-.2-.9-.4-.9h-2.2c-.4 0-.5 0-.5-.7 0-1.2 0-5 1.5-5 .4 0 .7.3 1.3 1.5.1.2.5.7.8.7.4 0 1-1.5 1-2 0-1.2-1.7-1.3-2-1.3-1.5 0-4.3 1.6-4.7 5.4-.2 1.4-.3 1.5-.8 1.6-.6.2-.9.4-.9.8 0 .3.2.4.4.4l.6-.1c.4 0 .5 0 .5 1.1v8.5c0 1.3 0 2.1-1.2 2.3-.5 0-.8 0-.8.5s.3.5.5.5c.1 0 1-.2 2.7-.2 1.6 0 2.4.2 2.7.2.2 0 .5 0 .5-.5s-.4-.5-.9-.5c-1.2-.1-1.2-1-1.2-2.3V8.8zM130.5 13.4c0-4.7-3-7.1-5.8-7.1-3.5 0-5.8 3.8-5.8 7.4 0 3.6 2.2 7.4 6 7.4 3.2 0 5.6-3.5 5.6-7.7m-9-.3c0-3.8 1.3-6.1 3-6.1 2.7 0 3.5 4.6 3.5 6.7 0 3.8-1.5 6.7-3.2 6.7-2 0-3.4-3.3-3.4-7.3"/></g><g><path d="M30.8 14.5c1.8-.1 3.5-.1 5.2.1.7.2.3-.4.2-.5l-1.1-1H35l-.3-.2h-2.2c-1 0-1.8.2-2.7.4-.4.1 0 .4 0 .4a4.6 4.6 0 0 1 .6.8h.4M27.7 13.4a8 8 0 0 0 1-.3c.1-.1.1-.2-.1-.2h-1l-.3.1c.1.2 0 .5.4.4M23 16.7l-.2.2-.2.2-.4 2.8v2.5l.2.4s.1.3.3.3h2.7c1.6.1 3.1.3 3.4-.2.3-.4.2-1.4.4-2.6 0-2 .1-3-.1-3.4-.4-.4-2.1-.2-6.2-.2m5 2.6v1.1c0 .4-.4.6-.6.9-.2.2.1.7 0 .9-.2 0-.3 0-.5-.2-.2-.3-.5.3-1.1.3l-1-.5c-.2 0-.3 0-.5.2-.3 0 0-.4-.2-.8-.1-.3-.4-.1-.6-.5-.1-.4 0-.8.1-1l-.2-.6c-.1-.2.5 0 .7-.2.2-.2 0-.3.2-.7.2-.3.5-.2.9-.3.3 0 .3-.5.5-.7.2-.2.2.6.8.6.5 0 .9.1 1 .6.3.4.5.4.8.5.2 0 0 .1-.2.4"/><path d="M65.8 15.4h-.3c-.7 0-1.3.2-1.7.7l-.6 1.3-.1.3c0 .1 0 .2-.2.3h-.4l.3-.5v-.8c0-.2 0-.5.2-.7.1-.3 0-.7-.3-.8-.2 0-.4.1-.4.3l-.7 1-.8.8c-1.3 1.9-2.3 3.8-2 6 .2 1.6.7 2 2 3.5.9 1.6 1.8 2.8 1.4 4.2-.2.9-1.3.9-2.2.7.1-2.1-.4-3.2-1.4-5-1-1.8-2.4-2.8-3.6-4.5l-.1-.2v-.1c.2 0 .2-.2.3-.3.2.2.6.3.8.1.5-.4.2-1 .2-1.3l.1-.2.4-.1h.3c0 .1.8.1 1-.1.5-.4.2-1.4 0-2.2-.2-.8-.5-1-.4-1.6.4-.3 1 1 1.4.4.5-.5-.2-.8-.2-1.4 0-.2.7-.3.7-.7.1-.4-.5-1-.7-1.2h-.3V13l-.1-1.6-.5-1.3c0-.4.6-.7.6-1 0-.2-.4-.2-.6-.5-.3-.8.1-1.3-.3-1.4-.3 0-.3.2-.7.5-.2 0-.1-.4-.4-.5l-.5.3-.4.4-.4.2-.6.3-1.1.3c-.4 0-.7.2-1 .3-.7.4-.9.6-1.5 1.2-.2 0-.3.3-.3.5 0 .1 0 .3.2.4 0 .5 0 1 .2 1 .6.4 1.1 0 1.5.2 0 .2-.9.4-1.6.4l-1.1-.2h-.6l-.3-.1h-.2c-.1.1.3.3.7.6.5.3.4.7 1 .7.5 0 1.8-.7 1.8-.5.1.1-.4.3-.7.4-.5.3-1 0-1.2 1 0 .7 1.4 0 1.3.3 0 .3-.8.6-1.5.6a2 2 0 0 0-.6.5c-.1.1 0 .3-.2.4-.4.6-1.4.1-4.1-1a5.2 5.2 0 0 0-3.6-.5c-.2 0-.4.3-.4.5 0 .4.6.6 1 .4.4 0 .9-.1 1.2.3.3.3.1.5 0 1.2 0 .3.1.7.3 1l.4.5c.2.2.4 0 .5.1l.2.4.2.1c.2.2 0 .5.1.5.1.1.4 0 .6-.2v-.1l.3.3c0 .2 0 .5.3.6.3.3.6-.2.8 0 .1.1-.6 1-1.2 1.4-.4.5-.7.6-1.3 1.1-.5.6-.6 1.1-1 2.2-.2.4-.1.6-.6 1l.2-.9c.1-.4.1-.8.4-1 0-.1.3-.3.2-.4h-22l.3.3c.2.3.2.7.3 1.1.2.4.3.5.3 1-.5-.5-.5-.7-.6-1.1-.4-1-.5-1.6-1-2.2l-1.4-1c-.5-.6-1.3-1.4-1.2-1.5.2-.2.6.3.9 0 .2-.1.3-.4.3-.6l.2-.3c.3.2.5.4.6.3.2 0 0-.3.1-.5h.3l.1-.5h.6l.3-.6.4-1c-.2-.6-.3-.8 0-1.2.3-.4.7-.3 1.2-.2.3.1 1 0 1-.5 0-.2-.2-.4-.5-.5-1.2-.3-2.4 0-3.5.5-2.8 1.1-3.8 1.6-4.2 1l-.1-.4a2 2 0 0 0-.6-.5h-.1c-.7 0-1.5-.3-1.5-.6s1.3.4 1.3-.2c-.2-1.1-.6-.8-1.2-1-.3-.2-.8-.3-.7-.5 0-.2 1.3.6 1.8.6.6 0 .6-.5 1-.8.4-.3.9-.5.7-.5h-.2-.8c-.5 0-.7.3-1.2.2-.7 0-1.5-.2-1.6-.4.4-.1 1 .2 1.5-.1.3-.2.2-.6.3-1.1a.6.6 0 0 0-.2-1c-.6-.5-.8-.7-1.4-1l-1-.4-1.1-.2-.6-.4-.5-.2-.4-.4s-.4-.4-.5-.3c-.2 0-.1.4-.4.5-.4-.3-.4-.5-.7-.5-.4.1 0 .6-.3 1.5-.2.2-.6.2-.6.5 0 .2.6.6.6.9l-.5 1.3a5.1 5.1 0 0 0 0 1.8H7c-.2.3-1 .8-.8 1.2 0 .4.8.5.8.7 0 .6-.8 1-.3 1.4.6.6 1-.7 1.4-.4.1.6-.1.8-.4 1.6-.2.8-.4 1.7 0 2.2.2.2 1 .3 1 0h.3c0 .2.2.1.4.2l.2.2c0 .3-.4 1 .2 1.3.2.2.5 0 .7 0l.3.2v.3c-1.2 1.6-2.6 2.7-3.6 4.5-1 1.8-1.6 2.9-1.4 5-1 .2-2 .2-2.2-.7-.4-1.4.5-2.6 1.4-4.2 1.2-1.5 1.7-2 2-3.5.3-2.2-.7-4.1-2-6-.4-.2-.7-.5-.9-.8l-.6-1c-.1-.2-.3-.3-.5-.3-.3 0-.4.5-.2.8l.1.7v.8l.3.5h-.4a2.5 2.5 0 0 1-.3-.6c-.3-.7-.3-1-.6-1.3-.4-.5-1-.7-1.6-.8-.2 0-.4 0-.4.2v.2c.4.2.7.4 1 .8.5.9.2 1.7.9 2.4.9.9 2 1.5 3 1.9h.4l.4.9c.3.5.5.8.3 1.4-.3 1-.8 2-1.5 2.8-1.9 2.2-2.8 3.7-2.4 5.9.2 1.1 1.9 1.7 3.7 1l.4-.2h.1l.3.3s.2 0 .3.2c.4.3.6.9.4 1.4-.3 1-1 1.5-1.8 2.4v.2l-.4.1v.3l-.3.2c-.2.1 0 .4 0 .7 0 .4-.8.4-.7 1 0 .5.5.3.6.6.1.3-.8.5-.5 1.2.6.6 1.2.4 1.4 1l-.1.6c-.2.2-.2.5 0 .7 0 .2.2.1.6.1l.4-.2.7-.3c.1-.1.3-.1.4 0 .1 0 .2 0 .2.2-.3 0-1 .3-1.2.5-.7.3-1 .6-1.1.8-.2.5 0 .5.4 1.2.3.7.3 1.7.6 2 .4.3 1.2.2 2-.4 2.8-1.4 4.3-1.7 7-2.9l3.8-1.6c-.2.3-.3.5-.3.8 0 .8.2 1 0 2.3 0 .7 0 1 .2 1.5.5.7 1.5.5 2.7.5.8 0 5.7-.3 10.2-.3h1.6c4.5 0 9.4.3 10.2.3 1.2 0 2.2.2 2.7-.5.3-.5.3-.8.2-1.5-.2-1.3 0-1.5 0-2.3 0-.3-.1-.5-.3-.8l3.8 1.6c2.7 1.2 4.2 1.5 7 3 .8.5 1.7.6 2 .2.3-.3.3-1.2.6-1.9.4-.7.6-.8.4-1.2 0-.2-.4-.5-1-.8-.2-.2-1-.5-1.3-.5l.2-.3h.4l.7.3.5.3c.3 0 .4 0 .6-.2v-.6a.7.7 0 0 1-.2-.6c.2-.6.9-.4 1.4-1 .4-.8-.6-.9-.5-1.2.1-.3.6-.1.6-.7.1-.5-.6-.5-.7-1 0-.2.2-.5 0-.6l-.2-.2v-.3c-.2-.1-.3-.2-.4-.1l-.1-.2c-.7-.9-1.5-1.5-1.8-2.5-.2-.5 0-1 .4-1.4.1 0 .3 0 .3-.2 0 0 .2 0 .2-.2h.2c.1 0 .3 0 .4.2 1.8.7 3.5 0 3.7-1 .4-2.2-.6-3.7-2.4-6a7.5 7.5 0 0 1-1.5-2.8c-.2-.5 0-.9.3-1.4l.4-.8h.3a8 8 0 0 0 3.1-2c.7-.7.4-1.4 1-2.4l.8-.8c.1 0 .1-.2 0-.2m-12.7-5c.3-.2 1.1-.5 1.1-.3.2.8-.3.5-.6.7-.2.2-.8.6-.8.2 0-.3 0-.6.3-.7m-15.8 17c.4-.1.4-.4.5-.6 0-.3.5-.3.9-.2h.2l.3-.4c.1-.2.2-.3.4-.3.3.2.2.4.5.4s.7-.7 1-.3c.1.3-.3 1-.4 1.3l-.2.4c0 .3.1.6.3.7a.6.6 0 0 1 0 .9c-.2.4 0 .4.1.7v.4l-.6.8c-.3 0-.6-.4-.9-.2-.3.1-.6.7-1 .4-.3-.2-.3-.2-.6 0-.5.4-1 .6-.9 0 0-.4.2-.7.5-1 .2-.3-.3-.5.2-.8.7-.3.6-.6.5-.6h-.4l-.5.2c-.2 0-.4-.6-.1-.7.4-.1.8-.2.8-.4h-.6c-.2.3-.4.1-.5.1l-.1-.4c0-.4.3-.4.6-.5m-6.5.7l.5-1.1c0-.3.3-.6.2-.9 0-.3-.2-.6 0-.8.2-.4.7-.5 1-.5 1.4 0 1.4 1.3 1.5 1.5.2.3.8 0 1 .4v1c.1.6.7.3.8 1.5 0 .7-.3.7-.4 1.1l-.2.6v.3c0 .1-.3.5-.2.6l.2 1c.1.5.4.8.6 1.2v.7c0 .8 0 1.1-.2 1.2-.3.2-.4.2-1 .2a6 6 0 0 1-1 0c-.5-.2-1-.2-1.5 0-.4 0-.6.3-1 .3h-.5l-.3.2c-.1 0 0-.2-.2-.3v-.9c0-.6.2-1.2.4-1.8l.7-1.7-.1-.6v-.2c-.4-.1-.9-.3-1-.7-.5-.7.4-1.5.7-2.3m-.2 8.9c.7 0 1.2.5 1.6.3.8 0 1.1-.3 1.9-.3h.5c.7.2 1.2.4 1.7.4l1.4-.2c.2.4 0 .5-.4 1l-.3.2h-.2c-.7.2-.7 0-1.4 0L34 38h-.3c-.3 0-.9.3-1.5.3-.7 0-1.4-.5-1.7-.3-.6 0-1 .4-1.5.3-.3 0-.5-.2-.7-.3-.4-.5-.5-.6-.4-1l1.2.1 1.4-.2m3.7 2.5c-.3-.1-.8.2-1.3.2h-.2c-.5 0-1-.3-1.2-.2-.5 0-.7.3-1.1.2l-.6-.2c-.3-.4-.4-.5-.3-.8l1 .1 1-.2c.6 0 1 .4 1.3.3h.2l1.2-.2 1 .1h1c.1.2 0 .3-.3.6-.1.2-.3.2-.5.3-.5 0-.7-.2-1.2-.3m.4 1.3l-.2.2c-.3.1-.4-.1-.6-.2l-.6.2-.5-.1h-.1c-.2 0-.4.3-.6.2a.5.5 0 0 1-.3-.2c-.1-.3-.2-.4-.1-.6h.5l.4-.1.7.2.6-.2.5.1h.5l-.2.5m-9.5-13.3c.3 0 .3-.3.4-.5.2-.3.5-.3 1-.2h.2l.3-.4c.1-.2.1-.3.3-.3.3.2.2.4.6.4.3 0 .7-.7 1-.3.1.3-.3 1-.4 1.3l-.2.4c0 .3 0 .6.2.7a.6.6 0 0 1 .1.9c-.3.4 0 .4 0 .7.1.1 0 .3 0 .4-.1.2-.3.7-.6.8-.2 0-.5-.4-.8-.2-.3.1-.6.7-1 .4-.3-.2-.3-.2-.7 0-.5.4-.9.6-.8 0 0-.4.2-.7.5-1 .2-.3-.3-.5.2-.8.6-.3.5-.6.5-.6h-.4l-.5.2c-.3 0-.4-.6-.2-.7.5-.1.8-.2.8-.4 0-.1 0 0-.2 0H25c-.2.3-.3.1-.4.1l-.2-.4c0-.4.4-.4.7-.5m-13.4-17c0-.2.8 0 1.2.1.3.2.2.5.2.7 0 .4-.5 0-.8-.2-.3-.2-.7 0-.6-.7M18 39l-3 1.4-2.3 1-1.7.6a5.8 5.8 0 0 0-1.2.6l.1-.4c.4-.4.5-1 .3-1.3-.4-.6-1.9-.4-2.4-.2h-.2-.2v-.2a9.8 9.8 0 0 1 2.8-3.1c2.2-1.7 3.1-3 3-3.8-.1-.5-.3-1-.6-1.4h.5c.4-.1.7 0 1 .4.1.2 0 .2 0 .4 0 .4-.7 2.5.4 3.4 1.1 1.1 2.7.5 3.2 1 .3.3.3.9.7.9.4 0 .5-.5.8-.6.4 0 .7.3 1 .5l-2.2.8m3.9-1.3l-1.4.4c.2-.3.4-.6.6-.6.3 0 .5.2.8 0v.2m22.2 0v-.1c.3.1.6-.1.8-.1.2 0 .4.3.7.6a38 38 0 0 0-1.5-.4m1.6-2.4a.5.5 0 0 0-.4-.2l-.7-.2c-.4 0-.8.1-1.1.5a4 4 0 0 1-.5.6l-.5.5c-.1.1-.2.2-.1.3v.1l.4.1-.2.3c-.2 0-.5 0-.6.2-.5.4-.5 1-.7 1.7-.2.8-.6 1-.6 1.4.2.7.6.9 1 1.3.5.3.8.7 1.1 1.2l.3.4-1.6-.2a54.2 54.2 0 0 0-6.6 0h-2 .3-8.6l-1.7.2.3-.4c.3-.5.7-.9 1.1-1.2.5-.4.8-.6 1-1.3.1-.4-.3-.6-.5-1.4-.2-.7-.3-1.3-.7-1.7a.7.7 0 0 0-.6-.2l-.2-.2V37h.3l.1-.2c0-.1 0-.2-.2-.3l-1-1.1c-.2-.4-.6-.6-1-.5-.3 0-.5 0-.7.2l-.4.2-.1.1H20l-.1.1c-1.3-.3-2-.7-2.5-1.9-.8-2 .2-4-.8-5-.9-.6-1.6-.3-2.4 0l-1 .3h-.9l.6-.8c.7-.7 1.5-.6 2.3-1.3.8-.7 1.6-2.4 1.7-2.2.2 0-.2 1 .6 1.1.5.1.8-.7 1-.6.2 0 .3.3.3.5 0 .4 0 .8-.3 1.1-.2.2-.3.8-.2 1 .2.2 1.2-.5 1.4-.4.2.1 0 1.2.6 1.3.3 0 .5 0 .7-.3l.2-.3c.1.3.2.5.6.4.4 0 .4-.5.4-.7.1-.3.3-.2.3 0v1.4c0 1.7.6 3.4 1.4 4.9 1.5 2.5 3.4 4.1 5.5 5.8l1.4 1.2 1.5 1.1c.2.2.2.3.4.3h.4l.4-.3c.6-.3 1-.7 1.5-1.2l1.4-1c2.1-1.8 4-3.4 5.5-6a10.9 10.9 0 0 0 1.4-6.2c0-.2.3-.3.3 0 0 .2 0 .6.5.7.3 0 .5-.2.6-.5l.2.3c.1.3.4.4.7.3.5 0 .4-1.1.6-1.2.2-.1 1.1.6 1.3.4.2-.2 0-.8-.2-1-.2-.4-.3-.7-.2-1.1l.2-.6c.2 0 .6.7 1.1.7.7-.1.4-1.2.5-1.2.1-.2 1 1.5 1.8 2.3.8.6 1.5.5 2.3 1.2l.6.8h-.8-.1l-1-.2c-.8-.3-1.6-.6-2.4 0-1 1 0 3-.8 5-.5 1.1-1.3 1.6-2.6 1.9l-.2-.1-.1-.1m12.9 5.1v.2l-.2.1h-.2c-.5-.3-2-.5-2.3.1-.2.3-.1 1 .2 1.4v.3L55 42l-1.7-.6c-1-.3-1.4-.6-2.2-1l-3.1-1.5-2.2-.8c.3-.1.6-.5 1-.4.4 0 .4.6.8.5.4 0 .4-.6.7-.9.5-.5 2.1.2 3.2-1 1-.8.5-3 .4-3.4 0-.2-.1-.2 0-.4a1 1 0 0 1 1-.4h.5c-.3.4-.4 1-.5 1.4-.2.8.7 2.1 3 3.8 1 .8 2 1.9 2.7 3.1"/><path d="M29.2 13.8c-.3-.2-.2-.3-.4-.3l-1.6.3c-1.9.6-2.2 1-2.1 1.6 0 .6 1.2.4 1.6.2a31 31 0 0 1 2.7-1c.8 0 .2-.5-.2-.8M43 9.1c-.8-1.3-1-1.9-1.5-2.2-.2-.1-.4 0-.6.2-.5-.2-.8-.5-1.1-.2-.2.2 0 .3 0 .5-.4.3-.7.7-.7 1 .2.4.7.6 1.5 2.2.6 1.1 1.2 0 1.3.4 0 .2-.6.3-.6.9.3.8.8 1.5 1.3 2.2.2.2.3.5.5.5.2.1.7-.2.8-.3.3 0 .6.5.9.3.2-.2 0-.3.1-.6.2-.3.6-.3.6-.6l-.1-.7c-1.2-1.5-1-2-1.5-2.3-.3-.1-.6.3-1 .2l-.1-.4c.2-.4.4-.3.4-.6L43 9m-1.4.3c-.1.7-.3.9-.4.8-1-1.3-1.4-1.3-1.2-1.6.3-.3.4-.3.7.1.1 0 .3 0 .3-.2s-.2-.3-.1-.5c.3 0 .6-.2.7 0 .3.4.9 1 .6 1.5-.3.2-.6-.3-.6 0m1.5 2.8c.1-.3 0-.8.2-.9.3 0 .5.3.8.7 0 .2.5 1 .2 1-.3.2-.6-.7-.7-.4.2.6 0 .6-.2.7-.5.3-.7-.2-1-.5-.2-.7-.4-.7-.1-1 .4-.3.5.3.8.4M25.5 13.4s0-.1-.2 0l-1 .1s-.3.2-.1.4c0 .2.3.6.5.5l1-.4c.2 0 .2-.2 0-.4 0-.2-.2-.2-.2-.2M26.4 13.8c.5-.1 1-.2.8-.5-.1-.3-.2-.3-.4-.3l-.7.2c-.3 0-.4.1-.2.4.1.2 0 .4.5.2M40.4 3.3c-.4.7-.6.8-.7 1.4a1 1 0 0 0 1.1 1c.6 0 1-.4 1.1-.6.6-.4 1 0 1.1-.2.3-.3-.3-1-.2-1.3 0-.4.5-1 .2-1.3-.3-.1-1 .3-1.5.3s-.5-.3-1-.2c-.3 0 .2.4 0 .9M24.5 5.7c1.5-.1 3-3.5-.3-3.2l-.9.2c-1.4.5-2.2 3.4 1.1 3m.4-2.3l.1.1c.6.6-.6 1.7-1.3 1.2-1-.6.4-1.9 1.2-1.3M29.8 23h1a139.4 139.4 0 0 0 3.6 0H36.1c.3-.2.5-.2.4-2l-.2-3.6c0-.2 0-.5-.2-.7l-.8-.3H33l-1 .1-1.9.1c-.3.1-.4.2-.5.6l-.2 3.2v2c0 .2.1.5.4.6m2.4-4c.2 0 0-.9 0-1.2 0-.3 0-.8.7-.7.6 0 .5.6.5.8v1.2c.2.1 2.3-.3 2 .5 0 .4.3.6-1 .6-.3.1-1 0-1 .5l-.1 1.1v.2c-.2.2-.4.4-.7.4-1.1.1 0-2.2-.5-2.2 0-.4-2.3.4-2.2-.6.2-1 2-.4 2.3-.6M41.6 13.9c.2-.2 0-.3-.2-.4l-1-.2-.3.3c-.2.2-.1.4 0 .4l1 .4c.2.1.4-.3.6-.5M26.3 27.6s.6-.2.7-.4c0-.2-.3-.3-.5-.2-.2 0-.5.2-.5.3 0 .2.1.3.3.3M38.1 13.4c.3 0 .3-.2.4-.4 0-.2-.2-.2-.4-.2h-.9c-.2.1-.2.2-.1.3l1 .2M37 23c.3.4 1.9.2 3.5.2 1-.2 2.1 0 2.9 0l.2-.5v-.3-2.5c0-1-.1-1.9-.3-2.8-.1-.2-.1-.3-.2-.2-4 0-6-.4-6.3 0-.3.5-.2 1.4 0 3.4 0 1.2 0 2.2.3 2.6m.6-4c.2-.1.5 0 .7-.5.2-.5.6-.5 1-.6.7 0 .7-.8.9-.6.2.2.2.7.5.7.4.1.6 0 .9.3.2.4 0 .5.2.7.2.2.8 0 .7.2 0 .2-.3.3-.2.6 0 .2.2.6 0 1-.1.4-.4.2-.5.5-.2.4 0 .9-.2.8-.2-.1-.3-.3-.5-.2-.2.1-.5.4-1 .5-.6 0-1-.5-1.1-.3-.2.2-.4.3-.5.2-.1-.2.2-.7 0-1-.2-.2-.6-.4-.6-.8v-1c-.3-.4-.5-.5-.3-.5M37.2 14.8h.2l2 .9c.5.1 1.6.4 1.7-.3 0-.5-.3-1-2.1-1.5-1.6-.5-2.8-.7-3-.7-.1 0-.2.1-.1.2.5.3.9.7 1.2 1.2l.1.2M40 13.6c.1-.3 0-.4-.2-.4L39 13c-.2 0-.2 0-.4.3s.4.4.8.5c.5.2.4 0 .6-.2"/><path d="M21 14c0 .3 0 .5.2.6.2.3.5-.2.8-.2.1 0 .6.4.8.2.2 0 .3-.3.5-.5.5-.6 1-1.4 1.3-2.2 0-.6-.7-.6-.6-.9.1-.3.7.7 1.3-.3.8-1.6 1.3-1.9 1.4-2.3 0 1.2.2 2 .3 3.2a5.5 5.5 0 0 0 .4 1c.1.1.1 0 .4 0 .5-.2 1-.3 1.1-.6 0-.2 0-.2-.4-.2-.2 0 0-1 0-1.1h1c0 .1.3.8.1.8-.6.2-.4.3.2.8.3.2.4.7.6.7.2 0 .2-.3.6-.6.1-.2.8-.7.1-.7-.1 0 0-1 .2-1l1 .1c0 .2.2.7-.2.7-.3 0-.3.3.3.8.2.1.4.5.6.4.2 0 .5-.4.8-.6 0 0 .5-.4 0-.5l-.3-.1.1-.8h1c.2-.1.3.1.3.4.1.5 0 .4-.2.4l-.2.4.7.5c.4.2.2.4.5.5l.6-.5c.3-.2 1-.5.4-.8-.3-.1-.3-.2-.3-.5 0-.1 0-.3.2-.4.2-.2.7 0 1 0 .1 0 .1.8-.2.8-.6.1-.1.3 0 .5l.6.5.3.2c.2.1.4-.8.6-1.1 0-1.7.3-2.5.2-4.2-.2-2.2 0-4.3.2-4.3.3-.3 2-1.3.8-2.6-.6-.7-2-.3-2.2 1l-.6.2h-2.7l-1.7.1h-4.2l-.7-.1v-.3C27.5.2 26.3-.2 25.6.5c-1.1 1.2.6 2.3 1 2.6.1 0 .3 2 .1 4.2v.7a2 2 0 0 0-.6-.7V7c-.4-.3-.7 0-1.1.2-.3-.1-.5-.3-.7-.2-.5.3-.7.9-1.4 2.2-.2.3-.3.3-.3.5 0 .3.2.2.4.6-.1.3 0 .4-.2.4-.2.1-.6-.3-.8-.2-.6.4-.4.8-1.5 2.4-.2.1-.3.4-.2.6 0 .3.4.3.6.6M39.4.8h.2c.4.6 0 1.3-.6 1.2-1.1-.3-.2-1.7.4-1.2m-1.3 8.8l-2-.1.1-1.7c.1-.2 1.7-.1 1.8 0 0 0 .3 1.8 0 1.8m-1.7-7a5.8 5.8 0 0 1 1.7-.1v.3c-.1.6.2 1.2-.2 1.5h-1.3-.1v-.1c.1-.9-.2-1.5 0-1.6m-.2 2.7c.2-.3.9 0 1.6-.2a.1.1 0 0 1 .2.2c-.1.9.3 1.7 0 1.7-.7.2-1.8.2-1.8 0V5.3m-2.7-2.6v-.1h.1c.8 0 1.5-.2 1.7 0v1.8c0 .2-1.1.2-1.7 0-.4 0 0-.8 0-1.7m0 2.8c-.1 0 0 0 0-.2h1.6c.1 0 0 .2 0 .4v.7.6h-1.7c-.2 0 0-.8 0-1.6m-.1 2.4c0-.2 1.2-.1 1.9-.1.2 0 0 1.8-.1 1.8h-1.8V7.7m-2.8-2.4v-.2h1.6c.3.2 0 .9.1 1.5V7L30.5 7V5.4m1.9 2.8l-.1.7v.6h-1.7c-.2 0 0-.8 0-1.6h.1c0-.2 1.4-.2 1.6-.1.1 0 0 .1 0 .4m-1.8-5.5v-.2h.1c.8.1 1.4 0 1.6.2a6 6 0 0 1 0 1.6c0 .3-1 .3-1.7.1-.3 0 0-.9 0-1.7M28 2.5s1.5 0 1.6.2V4s.1.3 0 .4H28c-.3-.3 0-1-.2-1.6v-.2m0 2.8a.2.2 0 0 1 .1-.2h.1c.8.1 1.4-.1 1.6.1V7c0 .2-1.1.2-1.7.1-.3 0 0-.9 0-1.7m-.1 2.4l1.8.1v1.6c0 .2-1.2.1-1.9.2-.2 0 0-1.8.1-1.9m-1-5.8c-.6.2-1-.5-.6-1.1h.2V.7h.2c.4-.3 1.4 1 .2 1.2m-2.6 6c.1-.2.5 0 .8 0 0 .2-.3.3-.2.5l.3.2c.3-.4.4-.4.7 0 .2.2-.2.2-1.1 1.5-.2.1-.4-.1-.4-.7 0-.3-.4.2-.7 0-.3-.6.3-1.1.6-1.5m-2.4 4c.2-.3.4-.6.7-.6.2 0 0 .6.2.9.3 0 .4-.6.8-.3.3.2 0 .2-.2.9-.2.3-.4.8-.9.6-.2-.1-.4-.2-.2-.7 0-.4-.4.5-.7.4-.2-.2.1-.8.3-1.1"/></g></g></svg> \ No newline at end of file
diff --git a/web/cobrands/westminster/images/footer-twitter.png b/web/cobrands/westminster/images/footer-twitter.png
new file mode 100644
index 000000000..e70085637
--- /dev/null
+++ b/web/cobrands/westminster/images/footer-twitter.png
Binary files differ
diff --git a/web/cobrands/westminster/images/footer-twitter.svg b/web/cobrands/westminster/images/footer-twitter.svg
new file mode 100644
index 000000000..092ec907e
--- /dev/null
+++ b/web/cobrands/westminster/images/footer-twitter.svg
@@ -0,0 +1 @@
+<svg width="24" height="24" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M22.6 5.5a9 9 0 0 1-2.2 2.2v.6a12.3 12.3 0 0 1-2 6.8c-.8 1-1.6 2-2.5 2.8a12.6 12.6 0 0 1-14.4.7h1c2 0 3.8-.5 5.4-1.8-1 0-1.8-.3-2.6-.8a4.2 4.2 0 0 1-1.5-2.2l.8.1 1.2-.1c-1-.3-1.9-.7-2.5-1.5-.7-.8-1-1.7-1-2.8.6.3 1.3.5 2 .5a4.3 4.3 0 0 1-1.4-5.8 12.3 12.3 0 0 0 9 4.5l-.2-1c0-1.1.5-2.2 1.3-3 .8-.8 1.9-1.3 3-1.3 1.3 0 2.4.5 3.2 1.4 1-.2 2-.5 2.8-1-.4 1-1 1.8-2 2.3.9 0 1.7-.3 2.6-.6z" fill="#091F67" fill-rule="nonzero"/></svg> \ No newline at end of file
diff --git a/web/cobrands/westminster/images/search-icon.png b/web/cobrands/westminster/images/search-icon.png
new file mode 100644
index 000000000..8a2937508
--- /dev/null
+++ b/web/cobrands/westminster/images/search-icon.png
Binary files differ
diff --git a/web/cobrands/westminster/images/wcc_logo.png b/web/cobrands/westminster/images/wcc_logo.png
new file mode 100644
index 000000000..9144bf5b1
--- /dev/null
+++ b/web/cobrands/westminster/images/wcc_logo.png
Binary files differ
diff --git a/web/cobrands/westminster/layout.scss b/web/cobrands/westminster/layout.scss
new file mode 100644
index 000000000..7864f37ac
--- /dev/null
+++ b/web/cobrands/westminster/layout.scss
@@ -0,0 +1,148 @@
+@import "colours";
+@import "../sass/layout";
+
+#site-logo {
+ margin: 0; // reset the centering we introduced in the mobile view
+}
+
+#site-header {
+ padding-top: 1.25em;
+ padding-bottom: 1.25em;
+}
+
+#front-main {
+ background-color: $westminster_grey;
+ padding: 50px 0;
+
+ label {
+ font-size: 18px;
+ }
+
+ h1 {
+ font-size: 40px;
+ }
+
+ #postcodeForm {
+ overflow: visible;
+ margin: 0;
+
+ div {
+ margin: 0;
+ overflow: visible;
+
+ input#pc {
+ float: none;
+ height: auto;
+ width: 100%;
+ padding: 10px 22px;
+ }
+
+ input#sub {
+ float: none;
+ height: auto;
+ width: 0;
+ padding-top: 0;
+ }
+ }
+ }
+
+ #front-main-container {
+ padding: 0 1em;
+ }
+}
+
+#front-main a#geolocate_link {
+ color: $westminster-blue;
+}
+
+body.mappage {
+ #site-header {
+ box-sizing: border-box; // count padding as part of height, so border-bottom is visible
+ padding-top: 18px; // 1.25em minus 3px, to visually compensate for 3px border-bottom
+ }
+
+ .nav-wrapper {
+ top: -3px; // to visually compensate for 3px border-bottom on #site-header
+ }
+
+ .westminster-footer {
+ display: none;
+ }
+}
+
+.nav-menu--main {
+ li {
+ color: $westminster_navy;
+ }
+
+ a, span, a:visited {
+ padding: 0.25em 0.5em;
+ margin: 0.5em 0.25em;
+ color: inherit;
+ font-weight: bold;
+ }
+
+ a {
+ &:hover,
+ &:focus {
+ background: transparent;
+ color: inherit;
+ }
+ }
+
+ // Make it look unclickable (because it is).
+ span.report-a-problem-btn:hover {
+ color: inherit;
+ cursor: default;
+ }
+
+ // Make it not look like a button any more.
+ a.report-a-problem-btn,
+ a.report-a-problem-btn:hover {
+ color: inherit;
+ background: transparent;
+ padding: 0.25em 0.5em;
+ margin: 0.5em 0.25em;
+ }
+}
+
+.big-green-banner {
+ color: $westminster-black;
+ background: $col_click_map inline-image("../westminster/images/chevron-black-right.svg") $right center no-repeat;
+
+ .ie8 & {
+ background-image: url(/cobrands/westminster/images/chevron-black-right.png);
+ }
+}
+
+.problem-header h1 {
+ font-weight: bold;
+}
+
+.westminster-footer {
+ text-align: inherit;
+}
+
+.westminster-footer-logo {
+ a {
+ $image-width: 200px;
+ $image-height: 49px;
+ float: right;
+ margin-top: 70px;
+ width: $image-width;
+ padding-top: $image-height;
+ background-size: $image-width $image-height;
+ }
+}
+
+.westminster-site-links {
+ margin-top: 0;
+
+ li {
+ margin-bottom: 0.5em;
+ }
+}
+
+.westminster-tertiary-links {
+ text-align: center;
+}