/* Accessibility overrides: colour contrast in the footer bottom bar (WCAG 2.1 AA). */
.footer-4 .footer-bottom {
    background-color: #ffffff;
}
.footer-4 .footer-bottom,
.footer-4 .footer-bottom .col-md-6 {
    color: #4a4a5a;
}
.footer-4 .footer-bottom a,
.footer-4 .footer-bottom-content a {
    color: #1f4fa3 !important;
}
.footer-4 .footer-bottom a:hover,
.footer-4 .footer-bottom a:focus {
    color: #173b7a !important;
}

/* Reserve the hero slider's space before its script runs, so the page does not jump when the
   carousel initialises. Before initialisation only the first slide is shown. */
.hero-slider-active-2 {
    display: block;
}
.hero-slider-active-2:not(.owl-loaded) > .single-slide:not(:first-child) {
    display: none;
}

/* The theme's scroll-to-top button sits above the floating WhatsApp button (bottom-right). */
#scrollUp,
.scrollUp {
    bottom: 96px !important;
    right: 20px !important;
}

/* Current page in the navigation (desktop and mobile). */
.main-menu li.active > a,
.main-menu .sub-menu li.active > a,
#mobile-menu li.active > a,
#mobile-menu .sub-menu li.active > a {
    color: #1f4fa3 !important;
    font-weight: 700;
}

/* Keyboard users can open the dropdowns with Tab, not only with the mouse. */
.main-menu li:focus-within > ul.sub-menu {
    visibility: visible;
    opacity: 1;
    display: block;
}

/* Portfolio cards are links to case studies. */
.portfolio-card-link {
    display: block;
    color: inherit;
    text-decoration: none;
}
.portfolio-card-link img {
    width: 100%;
    height: auto;
    aspect-ratio: 1000 / 430;
    object-fit: cover;
    display: block;
    border-radius: 8px;
}
.portfolio-card-text {
    padding-top: 14px;
}
.portfolio-card-cta {
    display: inline-block;
    margin-top: 10px;
    color: #9bbcf0;
    font-weight: 600;
}
.portfolio-card-link:hover .portfolio-card-cta,
.portfolio-card-link:focus-visible .portfolio-card-cta {
    text-decoration: underline;
}

/* Portfolio grid: every card in a row has the same height and its link sits at the bottom. */
.portfolio-grid > div {
    display: flex;
    margin-bottom: 30px;
}
.portfolio-grid .single-service-item {
    width: 100%;
    display: flex;
    flex-direction: column;
}
.portfolio-grid .portfolio-card-link {
    flex: 1;
    display: flex;
    flex-direction: column;
}
.portfolio-grid .portfolio-card-text {
    flex: 1;
}
.portfolio-grid .portfolio-card-cta {
    margin-top: auto;
    padding-bottom: 14px;
}

/* Keep every image in its own proportions: the height follows the width, so images are never
   stretched or squeezed. Images cropped on purpose (portfolio) are handled above. */
img[width][height]:not(.portfolio-card-link img) {
    height: auto;
    max-width: 100%;
}

/* Article bodies: bulleted lists and paragraph spacing. */
.blog-article ul {
    list-style: disc;
    padding-left: 1.4em;
    margin: 0 0 1.2em;
}
.blog-article li {
    list-style: disc;
    display: list-item;
    margin-bottom: 6px;
}
.blog-article p {
    margin-bottom: 1.1em;
}
.blog-article h2 {
    font-size: 1.6rem;
    margin: 1.6em 0 0.6em;
}

/* Article and case-study banners: a smaller, clearly readable title over a darker overlay. */
.page-banner-wrap.banner-article {
    position: relative;
    padding: 90px 0 70px;
}
.page-banner-wrap.banner-article::before {
    content: "";
    position: absolute;
    inset: 0;
    background: rgba(23, 59, 122, 0.72);
    z-index: 0;
}
.page-banner-wrap.banner-article > * {
    position: relative;
    z-index: 1;
}
.page-banner-wrap.banner-article h1 {
    font-size: clamp(28px, 3.6vw, 46px);
    line-height: 1.22;
    letter-spacing: 0;
    margin: 0 0 16px;
    max-width: 960px;
    text-shadow: 0 2px 12px rgba(0, 0, 0, 0.35);
}
.page-banner-wrap.banner-article .breadcrumb {
    margin: 0;
    font-size: 15px;
}

