/* ************************************************************************* */
/* normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css     */
/* ************************************************************************* */

html {
    line-height: 1.15;
    -webkit-text-size-adjust: 100%;
}

body {
    margin: 0;
}

main {
    display: block;
}

h1 {
    font-size: 2em;
    margin: 0.67em 0;
}

hr {
    box-sizing: content-box;
    height: 0;
    overflow: visible;
}

pre {
    font-family: monospace, monospace;
    font-size: 1em;
}

a {
    background-color: transparent;
}

abbr[title] {
    border-bottom: none;
    text-decoration: underline;
    text-decoration: underline dotted;
}

b,
strong {
    font-weight: bolder;
}

code,
kbd,
samp {
    font-family: monospace, monospace;
    font-size: 1em;
}

small {
    font-size: 80%;
}

sub,
sup {
    font-size: 75%;
    line-height: 0;
    position: relative;
    vertical-align: baseline;
}

sub {
    bottom: -0.25em;
}

sup {
    top: -0.5em;
}

img {
    border-style: none;
}

button,
input,
optgroup,
select,
textarea {
    font-family: inherit;
    font-size: 100%;
    line-height: 1.15;
    margin: 0;
}


button,
input {
    overflow: visible;
}

button,
select {
    text-transform: none;
}

button,
[type="button"],
[type="reset"],
[type="submit"] {
    -webkit-appearance: button;
    appearance: button;
}

button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
    border-style: none;
    padding: 0;
}

button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
    outline: 1px dotted ButtonText;
}

fieldset {
    padding: 0.35em 0.75em 0.625em;
}

legend {
    box-sizing: border-box;
    color: inherit;
    display: table;
    max-width: 100%;
    padding: 0;
    white-space: normal;
}

progress {
    vertical-align: baseline;
}

textarea {
    overflow: auto;
}

[type="checkbox"],
[type="radio"] {
    box-sizing: border-box;
    padding: 0;
}

[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
    height: auto;
}

[type="search"] {
    -webkit-appearance: textfield;
    appearance: textfield;
    outline-offset: -2px;
}

[type="search"]::-webkit-search-decoration {
    -webkit-appearance: none;
}

::-webkit-file-upload-button {
    -webkit-appearance: button;
    font: inherit;
}

details {
    display: block;
}


summary {
    display: list-item;
}

template {
    display: none;
}

[hidden] {
    display: none;
}

/* ==========================================================================
   Root
   ========================================================================== */

:root {
    /* Colours */
    --colour-text: rgba(51, 51, 51, 1);
    --colour-light: rgba(255, 255, 255, 1);
    --colour-brand: rgba(0, 53, 104, 1);
    --colour-accent: rgba(20, 184, 228, 1);

    --padding-image-wall: 3.125rem 0.625rem;
}

/* ************************************************************************* */
/* global resets                                                             */
/* ************************************************************************* */

*,
:after,
:before {
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
    position: relative;
}

path {
    transition: fill .5s ease;
}

h1,
h2,
h3,
h4,
h5,
h6,
p {
    margin: 0
}

address,
cite {
    font-style: normal
}

blockquote,
figure {
    margin: 0
}

ol,
ul {
    margin: 0;
    padding: 0;
    list-style: none;
}

ol ol,
ol ul,
ul ol,
ul ul {
    margin-bottom: 0;
}

dd {
    margin-left: 0;
}

img {
    display: inline-block;
    vertical-align: middle;
    width: 100%;
}

svg {
    display: inline-block;
    fill: currentColor;
}

textarea {
    resize: vertical;
}

fieldset {
    margin: 0;
}

button,
fieldset {
    border: 0;
    padding: 0;
}

button {
    border-radius: 0;
    background: transparent;
}

table {
    border-collapse: collapse;
    border-spacing: 0;
}

a,
area,
button,
input,
label,
select,
textarea {
    -ms-touch-action: manipulation;
    touch-action: manipulation;
}

a {
    color: inherit;
    text-decoration: none;
}

[hidden] {
    display: none !important;
}

/* ************************************************************************* */
/* default                                                                   */
/* ************************************************************************* */

body {
    background: rgba(255, 255, 255, 1);
    color: rgba(51, 51, 51, 1);
    font-family: "Open Sans", sans-serif;
    font-optical-sizing: auto;
    font-size: 1rem;
    font-style: normal;
    font-variation-settings: "wdth" 100;
    font-weight: 400;
    letter-spacing: .0625rem;
    line-height: 1.75;
    word-spacing: .0125rem;
}

main {
    padding: 3.125rem 0;
}

a {
    color: rgba(0, 53, 104, 1);
    transition: .5s ease-out;
}

a:hover {
    color: rgba(20, 184, 228, 1);
}

h1,
h2,
h3,
h4,
h5,
h6 {
    color: rgba(0, 53, 104, 1);
    font-family: "Playfair Display", serif;
    font-weight: 400;
    line-height: 1.25;
    padding: 0 0 1.25rem 0;
    text-align: center;
}

h6 {
    font-family: "Open Sans", sans-serif;
}

p {
    margin: 0 0 1.25rem 0;
}

label {
    background: rgba(255, 255, 255, 1) !important;
    color: rgba(51, 51, 51, 1) !important;
    font-family: "Open Sans", sans-serif !important;
    font-optical-sizing: auto !important;
    font-size: 1rem !important;
    font-style: normal !important;
    font-variation-settings: "wdth" 100 !important;
    font-weight: 400 !important;
    letter-spacing: .0625rem !important;
    line-height: 1.75 !important;
    word-spacing: .0125rem !important;
}

textarea {
    border: .0625rem solid rgba(51, 51, 51, .2) !important;
    border-radius: 0 !important;
    font-family: "Open Sans", sans-serif !important;
    font-optical-sizing: auto !important;
    font-size: 1rem !important;
    font-style: normal !important;
    font-variation-settings: "wdth" 100 !important;
    font-weight: 400 !important;
    letter-spacing: .0625rem !important;
    line-height: 1.75 !important;
    word-spacing: .0125rem !important;
}

/* ************************************************************************* */
/* header                                                                    */
/* ************************************************************************* */

.header-container {
    position: fixed;
    top: 0;
    width: 100%;
    z-index: 5;
}

.header {
    align-items: center;
    background: rgba(0, 53, 104, 1);
    display: grid;
    gap: 1.25rem;
    grid-template-areas: "logo nav-toggle contact";
    grid-template-columns: 1fr .625rem 1fr;
    padding: .625rem 1.25rem;
}

@media (max-width:48em) {
    .header {
        grid-template-areas: "nav-toggle logo contact";
        grid-template-columns: 1fr 2.5rem 1fr;
    }
}

.header-logo-container {
    grid-area: logo;
}

.header-logo {
    display: block;
    height: 2.5rem;
    justify-self: left;
    width: auto;
}

@media (max-width:48em) {
    .header-logo {
        height: 1.875rem;
        justify-self: center;
    }
}

a .header-logo {
    color: rgba(255, 255, 255, 1);
    transition: .5s ease-out;
}

a:hover .header-logo {
    color: rgba(20, 184, 228, 1);
}

.header-logo-m {
    display: none;
}

a .header-logo-m {
    color: rgba(255, 255, 255, 1);
    transition: .5s ease-out;
}

a:hover .header-logo-m {
    color: rgba(20, 184, 228, 1);
}

.header-logo-m-only {
    fill: rgba(0, 53, 104, 1);
}

@media (max-width:48em) {
    .header-logo-m {
        color: rgba(255, 255, 255, 1);
        display: block;
        height: 2.5rem;
        justify-self: center;
        margin: 0 auto;
        width: auto;
    }

    .header-logo {
        display: none;
    }
}

.header-contact-container {
    grid-area: contact;
    justify-self: right;
}

.header-contact {
    color: rgba(255, 255, 255, 1);
    display: block;
    font-size: 1.25rem;
}

.header-contact:hover {
    color: rgba(20, 184, 228, 1);
}

@media (max-width:48em) {
    .header-contact {
        font-size: 1rem;
    }
}

.header-nav-toggle-container {
    grid-area: nav-toggle;
    display: block;
}

/* ************************************************************************* */
/* burger and cross                                                          */
/* ************************************************************************* */

.burger {
    cursor: pointer;
    display: none;
    color: rgba(255, 255, 255, 1);
    height: 1.5rem;
    justify-self: left;
    transition: .5s ease-out;
    width: auto;
}

.burger:hover {
    color: rgba(20, 184, 228, 1);
}

@media (max-width:48rem) {
    .burger {
        display: block;
    }
}

.cross {
    cursor: pointer;
    display: none;
    color: rgba(255, 255, 255, 1);
    height: 1.5rem;
    left: .5625rem;
    top: .25rem;
    transition: .5s ease-out;
    width: auto;
}

.cross:hover {
    color: rgba(20, 184, 228, 1);
}

@media (min-width:48.0625rem) {
    .burger {
        display: none !important;
    }

    .cross {
        display: none !important;
    }
}

/* ************************************************************************* */
/* navigation                                                                */
/* ************************************************************************* */

.main-nav {
    background: rgba(230, 234, 237, 1);
    height: 3.125rem;
    padding: .625rem 1.25rem;
    text-align: center;
    width: 100%;
}

@media (max-width:48em) {
    .main-nav {
        display: none;
    }
}

.main-nav-item {
    display: inline-block;
}

.main-nav-item:not(:last-child) {
    margin-right: 1.25rem;
}

.mobile-nav {
    background: rgba(230, 234, 237, 1);
    padding: 3.125rem 1.25rem 6.25rem 1.25rem;
    display: none;
    height: 100vh;
    text-align: center;
    overflow-y: auto;
    width: 100%;
    z-index: 2;
}

@media (min-width:48em) {
    .mobile-nav {
        display: none !important;
    }
}

.mobile-nav-item {
    display: block;
}

.mobile-nav-item:not(:last-child) {
    margin-bottom: 1.25rem;
}

.mobile--footer-address {
    border-top: .0625rem solid rgba(51, 51, 51, .2);
    margin: 3.125rem 0 0 0;
    padding: 3.125rem 0 0 0;
}

/* ************************************************************************* */
/* footer                                                                    */
/* ************************************************************************* */

.footer {
    background: rgba(230, 234, 237, 1);
    border-top: .125rem solid rgba(0, 53, 104, 1);
    font-size: .875rem;
}

.footer-inner {
    margin: 0 auto;
    max-width: 77.5rem;
    padding: 2.5rem 1.25rem 1.25rem;
    width: 100%;
}

.footer-top {
    display: grid;
    gap: 2.5rem;
    grid-template-areas: "details main-nav secondary-nav";
    grid-template-columns: 1fr 1fr 1fr;
    margin-bottom: 3.125rem;
    width: 100%;
}

@media (max-width:76em) {
    .footer-top {
        gap: 0;
        column-gap: 1.25rem;
        grid-template-columns: 1fr 1fr 1fr;
    }
}

@media (max-width:48em) {
    .footer-top {
        gap: 0;
        column-gap: 1.25rem;
        row-gap: 1.25rem;
        grid-template-areas: "main-nav secondary-nav" "details details";
        grid-template-columns: 1fr 1fr;
    }
}

.footer-heading {
    font-size: 1rem;
    font-weight: 500;
    margin-bottom: .625rem;
    text-transform: uppercase;
}

.footer-our-services {
    grid-area: main-nav;
    width: 100%;
    padding: .625rem;
    border-right: .0625rem solid rgba(0, 53, 104, 1);
}

.footer-useful-links {
    grid-area: secondary-nav;
    width: 100%;
    padding: .625rem;
}

.footer-legal {
    border-top: .0625rem solid rgba(0, 53, 104, 1);
    margin-top: 2.25rem;
    padding-top: 2.25rem;
}

.footer-details {
    border-right: .0625rem solid rgba(0, 53, 104, 1);
    grid-area: details;
    width: 100%;
    padding: .625rem;
}

@media (max-width:48em) {
    .footer-details {
        border-top: .0625rem solid rgba(0, 53, 104, 1);
        padding: 2.25rem .625rem 0 .625rem;
    }
}

@media (max-width:48em) {
    .footer-our-services {
        text-align: left;
        margin-bottom: 2.25rem;
    }
    
    .footer-details {
        border-right: none;
        text-align: left;
        margin-bottom: 2.25rem;
    }
}

.footer-nav-item:not(:last-child) {
    margin-bottom: .625rem;
}

.footer-bottom {
    background: rgba(0, 53, 104, 1);
    color: rgba(255, 255, 255, 1);
    display: grid;
    gap: 2.5rem;
    grid-template-areas: "copyright";
    grid-template-columns: 1fr;
    padding: 1.25rem;
}

.footer-copyright {
    grid-area: copyright;
    text-align: left;
    width: 100%;
}

.footer-social {
    margin-top: 1.25rem
}

.footer-social--icon {
    display: inline-block;
    height: 1.25rem;
    margin: .5rem 0 0 0;
    width: fit-content;
}

.footer-social--icon svg {
    fill: rgba(0, 53, 104, 1);
    height: 100%;
    width: auto;
}

.footer-social--icon:hover svg {
    fill: rgba(20, 184, 228, 1);
}

.footer-social--icon:not(:last-child) {
    margin-right: .625rem
}

.footer-logo {
    height: auto;
    width: 3.125rem;
}

.footer-address {
    margin-bottom: .625rem;
}

.footer-phone {
    display: block;
    margin-bottom: .625rem;
}

.footer-email {
    display: block;
}

/* ************************************************************************* */
/* introduction                                                              */
/* ************************************************************************* */

.introduction {
    margin: 0 auto;
    max-width: 52.5rem;
    padding: 3.125rem 1.25rem 0 1.25rem;
    width: 100%;
}

.introduction--no-hero {
    padding-top: 10rem;
}

@media (max-width: 40em) {
    .introduction--no-hero {
        padding-top: 6.875rem;
    }
}

/* ==========================================================================
   Hero
   ========================================================================== */

.hero-full-screen {
    height: calc(100vh - 6.875rem);
    overflow: hidden;
    margin-top: 6.875rem;
    position: relative;
    width: 100%;
}

@media (max-width: 40em) {
    .hero-full-screen {
        height: calc(60vh - 3.75rem);
        margin-top: 3.75rem;
    }
}

.hero-full-screen img {
    height: 100%;
    object-fit: cover;
    width: 100%;
}

.hero-letterbox {
    height: calc(60vh - 5rem);
    margin-top: 5rem;
    overflow: hidden;
    position: relative;
    width: 100%;
}

@media (max-width: 40em) {
    .hero-letterbox {
        height: calc(60vh - 3.75rem);
        margin-top: 3.75rem;
    }
}

.hero-letterbox img {
    height: 100%;
    object-fit: cover;
    width: 100%;
}

.hero-full-screen video {
	height: 100%;
	left: 0;
	object-fit: cover;
	position: absolute;
	top: 0;
	width: 100%;
}

.hero-image-greyscale {
    filter: grayscale(100%);
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.hero-image-overlay--blue {
    position: absolute; /* crucial for overlay to sit on top */
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 53, 104, .8); /* adjust opacity for effect */
    mix-blend-mode: multiply;
    pointer-events: none; /* lets clicks go through if needed */
    z-index: 2; /* above images, below text */
}

.headline-box {
    height: fit-content;
    left: 0;
    margin: auto;
    position: absolute;
    right: 0;
    top: 50%;
    transform: translate(0, -50%);
    z-index: 3;
}

.headline-box h1 {
    color: var(--colour-light);
    font-size: 3.25rem;
    padding: 0 1.25rem;
}

@media (max-width: 40em) {
	.headline-box h1 {
		font-size: 2rem;
	}
}

/* ==========================================================================
   Hero carousel
   ========================================================================== */

.hero-carousel {
	height: calc(100vh - 6.875rem);
    margin-top: 6.875rem;
	overflow: hidden;
	position: relative;
	width: 100%;
	--total-slides: 3;      /* overridden by Twig */
	--slide-duration: 4s;   /* duration each slide is visible */
}

@media (max-width: 40em) {
	.hero-carousel {
		height: calc(60vh - 3.75rem);
        margin-top: 3.75rem;
	}
}

.hero-carousel-cell {
	animation-delay: calc(var(--index) * var(--slide-duration));
	animation-duration: calc(var(--total-slides) * var(--slide-duration));
	animation-name: fade;
	animation-iteration-count: infinite;
	animation-timing-function: ease-in-out;
	height: 100%;
	left: 0;
	opacity: 0;
	position: absolute;
	top: 0;
	width: 100%;
    z-index: 1;
}

.hero-carousel-cell img {
	display: block;
	height: 100%;
	object-fit: cover;
	width: 100%;
}

/* seamless fade keyframes */
@keyframes fade {
	0% { opacity: 0; }
	10% { opacity: 1; }
	30% { opacity: 1; }
	40% { opacity: 0; }
	100% { opacity: 0; }
}

/* ************************************************************************* */
/* content                                                                   */
/* ************************************************************************* */

.content {
    margin: 0 auto;
    max-width: 52.5rem;
    padding: 3.125rem 1.25rem 0 1.25rem;
    width: 100%;
}

.content-wide {
    margin: 0 auto;
    max-width: 72rem;
    width: 100%;
}

/* ************************************************************************* */
/* section                                                                   */
/* ************************************************************************* */

.section {
    margin: 0 auto;
    max-width: 52.5rem;
    padding-bottom: 3.125rem;
    width: 100%;
}

.section li {
    list-style-position: outside;
    list-style-type: disc;
    margin: 0 0 0 1.25rem;
}

/* ************************************************************************* */
/* pull out                                                                  */
/* ************************************************************************* */

.pull-out {
    background: rgba(230, 234, 237, 1);
    color: rgba(0, 53, 104, 1);
    font-family: "Playfair Display", serif;
    font-size: 2em;
    font-weight: 400;
    line-height: 1.25;
    margin: 0 0 3.125rem 0;
    padding: 3.125rem;
    text-align: center;
}

.pull-out--text::before {
    content: '"';
}

.pull-out--text::after {
    content: '"';
}

/* ************************************************************************* */
/* feature grid                                                              */
/* ************************************************************************* */

.feature-grid {
    align-items: stretch;
    display: flex;
    gap: 1.25rem;
    flex-flow: row wrap;
    justify-content: center;
    margin: 0 auto;
    max-width: 75rem;
    padding: 0 1.25rem 3.125rem 1.25rem;
    width: 100%;
}

.feature-grid--box {
    flex: 0 1 calc(50% - 1.25rem);
    overflow: hidden;
}

@media (max-width:48rem) {
    .feature-grid--box {
        flex: 0 1 100%;
    }
}

.feature-grid--inner {
    font-size: .875rem;
    height: 100%;
    padding: 1.25rem;
    text-align: center;
    width: 100%;
}

@media (max-width:48rem) {
    .feature-grid--inner {
        padding: 3.125rem 1.25rem;
    }
}

.feature-grid--inner--white,
.feature-grid--inner--white:hover {
    background: rgba(255, 255, 255, 1);
    color: rgba(51, 51, 51, 1);
}

.feature-grid--inner--light-grey,
.feature-grid--inner--light-grey:hover {
    background: rgba(230, 234, 237, 1);
    color: rgba(51, 51, 51, 1);
}

.feature-grid--inner--light-blue,
.feature-grid--inner--light-blue:hover {
    background: rgba(20, 184, 228, 1);
    color: rgba(255, 255, 255, 1);
}

.feature-grid--inner--dark-blue,
.feature-grid--inner--dark-blue:hover {
    background: rgba(0, 53, 104, 1);
    color: rgba(255, 255, 255, 1);
}

.feature-grid--inner--white h2,
.feature-grid--inner--light-grey h2,
.feature-grid--inner--light-blue h2,
.feature-grid--inner--dark-blue h2 {
    color: inherit;
    padding: .625rem 0 1.25rem 0;
}

.feature-grid--icon {
    height: auto;
    transition: .5s;
    width: 100%;
}

.featured-grid--cta {
    border-bottom: solid .125rem currentColor;
    font-weight: 700;
    margin: 0 auto;
    text-transform: uppercase;
    width: fit-content;
}

.feature-grid--inner:hover .feature-grid--icon {
    scale: 1.10;
}

/* ************************************************************************* */
/* listing grid                                                              */
/* ************************************************************************* */

.listing-grid {
    align-items: stretch;
    display: flex;
    gap: 1.25rem;
    flex-flow: row wrap;
    justify-content: center;
    margin: 0 auto;
    max-width: 75rem;
    padding: 0 1.25rem 3.125rem 1.25rem;
    width: 100%;
}

@media (max-width:48rem) {
    .listing-grid {
        row-gap: 0;
    }
}

.listing-grid--box {
    flex: 0 1 calc(33.3333% - 1.25rem);
    overflow: hidden;
}

@media (max-width:64rem) {
    .listing-grid--box {
        flex: 0 1 calc(50% - 1.25rem);
    }
}

@media (max-width:48rem) {
    .listing-grid--box {
        flex: 0 1 100%;
    }
}

.listing-grid--icon {
    height: auto;
    transition: .5s ease-out;
    width: 100%;
}

a .feature-grid--inner:hover .listing-grid--icon {
    scale: 1.10;
}

/* ************************************************************************* */
/* call to actions                                                           */
/* ************************************************************************* */

.call-to-action {
    text-align: center;
    width: 100%;
    padding: 0 0 3.125rem 0;
}

.button--solid {
    background: rgba(0, 53, 104, 1) !important;
    border: none !important;
    border-radius: 0 !important;
    color: rgba(255, 255, 255, 1) !important;
    display: block !important;
    font-family: "Open Sans", sans-serif !important;
    font-optical-sizing: auto !important;
    font-size: 1rem !important;
    font-style: normal !important;
    font-variation-settings: "wdth" 100 !important;
    font-weight: 400 !important;
    letter-spacing: .0625rem !important;
    line-height: 1.75 !important;
    margin: 0 auto !important;
    max-width: 21.125rem !important;
    padding: .3125rem 1.25rem !important;
    text-align: center !important;
    text-transform: uppercase !important;
    width: 100% !important;
    word-spacing: .0125rem !important;
}

.button--solid:hover {
    background: rgba(20, 184, 228, 1) !important;
    color: rgba(0, 53, 104, 1) !important;
}

/* ************************************************************************* */
/* forms                                                                     */
/* ************************************************************************* */

.form-input {
    border: .0625rem solid rgba(51, 51, 51, .2) !important;
    border-radius: 0 !important;
    font-family: "Open Sans", sans-serif !important;
    font-optical-sizing: auto !important;
    font-size: 1rem !important;
    font-style: normal !important;
    font-variation-settings: "wdth" 100 !important;
    font-weight: 400 !important;
    letter-spacing: .0625rem !important;
    line-height: 1.75 !important;
    word-spacing: .0125rem !important;
}

.full-width {
    width: 100% !important;
}

.freeform-form-errors {
    border-radius: 0 !important;
}

.asterisk {
    font: italic 400 sans-serif;
    color: #dc3545;
}

/* ==========================================================================
   Image wall
   ========================================================================== */

.image-wall {
    padding: var(--padding-image-wall);
    text-align: center;
    width: 100%;
}

.image-wall div + div {
    padding-top: 1.25rem;
}

/* ==========================================================================
   Image wall (single image)
   ========================================================================== */

.image-wall--single-image {
    display: grid;
    grid-template-columns: 1fr;
    margin: 0 auto;
    width: 100%;
}

.image-wall--single-image figure {
    margin: 0;
    overflow: hidden;
    padding: 0 0.625rem;
    position: relative;
}

.image-wall--single-image img {
    display: block;
    height: 100%;
    object-fit: cover;
    width: 100%;
}

.image-wall--single-image figcaption {
    background: rgba(0, 0, 0, 0.5);
    border-radius: 1.25rem;
    color: var(--colour-light);
    font-size: var(--font-size-regular);
    left: 50%;
    max-width: 80%;
    padding: 0.5rem 1rem;
    position: absolute;
    text-align: center;
    top: 50%;
    transform: translate(-50%, -50%);
}

/* ==========================================================================
   Image wall (double image)
   ========================================================================== */

.image-wall--double-image {
    display: grid;
    grid-template-columns: 1fr 1fr;
    margin: 0 auto;
    width: 100%;
}

.image-wall--double-image figure {
    margin: 0;
    overflow: hidden;
    padding: 0 0.625rem;
    position: relative;
}

.image-wall--double-image img {
    display: block;
    height: 100%;
    object-fit: cover;
    width: 100%;
}

.image-wall--double-image figcaption {
    background: rgba(0, 0, 0, 0.5);
    border-radius: 1.25rem;
    color: var(--colour-light);
    font-size: var(--font-size-regular);
    left: 50%;
    max-width: 80%;
    padding: 0.5rem 1rem;
    position: absolute;
    text-align: center;
    top: 50%;
    transform: translate(-50%, -50%);
}

/* ==========================================================================
   Image wall (triple image - large small small)
   ========================================================================== */

.image-wall--large-small-small {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr;
    margin: 0 auto;
    width: 100%;
}

.image-wall--large-small-small figure {
    margin: 0;
    overflow: hidden;
    padding: 0 0.625rem;
    position: relative;
}

.image-wall--large-small-small img {
    display: block;
    height: 100%;
    object-fit: cover;
    width: 100%;
}

.image-wall--large-small-small figcaption {
    background: rgba(0, 0, 0, 0.5);
    border-radius: 1.25rem;
    color: var(--colour-light);
    font-size: var(--font-size-regular);
    left: 50%;
    max-width: 80%;
    padding: 0.5rem 1rem;
    position: absolute;
    text-align: center;
    top: 50%;
    transform: translate(-50%, -50%);
}

/* ==========================================================================
   Image wall (triple image - small small large)
   ========================================================================== */

.image-wall--small-small-large {
    display: grid;
    grid-template-columns: 1fr 1fr 2fr;
    margin: 0 auto;
    width: 100%;
}

.image-wall--small-small-large figure {
    margin: 0;
    overflow: hidden;
    padding: 0 0.625rem;
    position: relative;
}

.image-wall--small-small-large img {
    display: block;
    height: 100%;
    object-fit: cover;
    width: 100%;
}

.image-wall--small-small-large figcaption {
    background: rgba(0, 0, 0, 0.5);
    border-radius: 1.25rem;
    color: var(--colour-light);
    font-size: var(--font-size-regular);
    left: 50%;
    max-width: 80%;
    padding: 0.5rem 1rem;
    position: absolute;
    text-align: center;
    top: 50%;
    transform: translate(-50%, -50%);
}

/* ==========================================================================
   Image wall responsive breakpoints
   ========================================================================== */

@media (max-width: 40em) {
    .image-wall div + div {
        padding-top: 0.625rem;
    }

    .image-wall--single-image figure,
    .image-wall--double-image figure,
    .image-wall--large-small-small figure,
    .image-wall--small-small-large figure {
        padding: 0 0.3125rem;
    }

    /* image wall small small large two rows */
    .image-wall--large-small-small {
        grid-template-columns: 1fr; /* stack items */
        row-gap: 0.625rem;
    }

    .image-wall--large-small-small > :first-child {
        grid-column: 1 / -1; /* make the large (2fr) item full width */
    }

    .image-wall--large-small-small > :nth-child(2),
    .image-wall--large-small-small > :nth-child(3) {
        grid-column: span 1; /* each of the two 1fr items takes half */
    }

    .image-wall--large-small-small {
        grid-template-columns: 1fr 1fr; /* two columns for the smaller items */
        grid-auto-rows: auto;
    }

    /* image wall large small small in two rows */
    .image-wall--small-small-large {
        grid-template-columns: 1fr 1fr; /* two columns for the smaller items */
        grid-auto-rows: auto;
        row-gap: 0.625rem;
    }

    .image-wall--small-small-large > :nth-child(1),
    .image-wall--small-small-large > :nth-child(2) {
        grid-column: span 1; /* each small item half width */
    }

    .image-wall--small-small-large > :nth-child(3) {
        grid-column: 1 / -1; /* large item full width below */
    }
}