/* Explicit priority overrides legacy page-specific CTA rules.
   Shared action component: geometry, typography, colour and interaction states. */
:root{--cta-radius:10px;--cta-height:48px;--cta-background:#15324a;--cta-hover:#2463a0}
html body .site-cta,
html body .news-filters button,
html body .insight-search button,
html body .insight-empty button{
 display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:12px!important;
 min-height:var(--cta-height)!important;padding:12px 22px!important;border:1px solid #ffffff24!important;
 border-radius:var(--cta-radius)!important;background:var(--cta-background)!important;color:#fff!important;
 font-family:inherit!important;font-size:16px!important;font-weight:500!important;line-height:1.35!important;letter-spacing:0!important;
 text-decoration:none!important;box-shadow:none!important;transform:none!important;
 transition:background .2s,color .2s;
}
html body .site-cta:hover,
html body .insight-search button:hover,
html body .insight-empty button:hover{background:var(--cta-hover)!important;color:#fff!important;text-decoration:none!important;transform:none!important;box-shadow:none!important}
html body .site-cta:focus-visible,
html body .news-filters button:focus-visible{outline:2px solid #527a9b;outline-offset:4px}
html body .home-hero:is([data-colour="1"],[data-colour="2"],[data-colour="3"]) .hero-cta{border:0!important}
html body .news-filters button[aria-pressed=false]{background:transparent!important;color:var(--navy)!important;border-color:#15324a35}
@media(hover:hover) and (pointer:fine){
 html body .news-filters button[aria-pressed=true]:hover{background:var(--cta-hover)!important}
 html body .news-filters button[aria-pressed=false]:hover{background:#15324a10!important}
}
html body .news-filters button:after{display:none!important}
html body .site-cta .cta-arrow,html body .site-cta .nav-cta-arrow{width:16px;height:16px;flex:0 0 16px;margin:0;opacity:1}
html body .site-cta.service-link:after{margin:0;opacity:1;flex:0 0 16px;width:16px;height:16px}
html body .site-cta.service-link:has(svg):after{display:none!important}
@media(max-width:760px){html body .news-filters button{flex:1 1 auto;padding-inline:14px}}

.site-footer .footer-social{display:grid;place-items:center;flex:0 0 48px;margin:0;width:48px;height:48px;border-radius:10px;background:#15324a;color:white;box-shadow:none;transition:background .2s;transform:none}
.site-footer .footer-social:hover{background:var(--cta-hover);color:#fff;text-decoration:none;transform:none}
.site-footer .footer-social svg{width:22px;height:22px}
.site-header .mega-panel>.submenu-overview{display:inline-flex;align-items:center;gap:14px;min-height:44px;margin-bottom:18px;padding:6px 0;color:#15324a;font-size:17px;font-weight:550;text-decoration:none}
.site-header .mega-panel>.submenu-overview:hover{text-decoration:underline;text-underline-offset:5px}
@media(max-width:1000px){.site-header .mega-panel>.submenu-overview{font-size:17px;margin-bottom:8px}}

/* Insights filters use fill and text colour to indicate selection. */
html body.insights-page .news-filters button{border-color:transparent!important}

/* Footer follows the main navigation, with one social destination. */
.site-footer .footer-grid{display:flex;align-items:center;justify-content:space-between;gap:32px}
.site-footer .footer-nav{display:flex;align-items:center;flex-wrap:nowrap;gap:22px 44px}
.site-footer .footer-nav :is(a,button){display:block;width:fit-content;margin:0;color:var(--navy);font-family:inherit;font-size:16px;font-weight:500;line-height:1.5;padding:10px 0}
@media(max-width:1100px){
 .site-footer .footer-grid{align-items:flex-start;gap:24px}
 .site-footer .footer-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(4,auto);grid-auto-flow:column;justify-items:center;gap:8px 22px;flex:1}
 .site-footer .footer-nav :is(a,button){text-align:center;justify-content:center}
}
@media(max-width:760px){
 .site-footer .footer-nav :is(a,button){font-size:14px;min-height:44px;display:flex;align-items:center}
 .site-footer .footer-bottom{flex-direction:column;align-items:flex-start}
 .site-footer .footer-bottom>.footer-social{flex:none;margin-top:12px}
 }

/* Shared dialogs use the same navy as the rest of the interface. */
dialog{color:var(--navy)}
dialog h2,dialog a{color:var(--navy)}
dialog .search-close,dialog #privacy-close{background:var(--navy);color:#fff}
dialog:is(#site-search,#privacy,#imprint) .dialog-dismiss button:hover{background:var(--cta-hover);color:#fff}

/* Keep focus indicators on search controls, not the dialog surface. */
html body dialog,html body dialog:focus,html body dialog:focus-visible{border:0;outline:none!important;box-shadow:none}
.dialog-dismiss{margin:0;padding:0;border:0}
html body #site-search input:focus,html body #site-search input:focus-visible{outline:none}
dialog .dialog-dismiss button{z-index:2;pointer-events:auto}

/* Contact confirmation occupies the same column as the form. */
.enquiry-confirmation{align-self:start;padding:clamp(28px,4vw,56px);border-radius:16px;background:#15324a08;color:var(--navy)}
.enquiry-check{width:48px;height:48px;margin-bottom:28px}
.enquiry-confirmation h3{font-size:clamp(28px,3vw,40px);max-width:520px;outline:none}
.enquiry-confirmation p{max-width:480px;margin-bottom:32px}

/* Text navigation shares the blue hover used by the offering menu. */
.site-header #navigation a:not(.site-cta),
.site-header #navigation .nav-group>summary,
.site-footer .footer-grid .footer-nav :is(a,button),
.site-footer .footer-bottom button{
 color:var(--navy);text-decoration:none;transition:color .2s ease;
}
.site-header #navigation a:not(.site-cta):hover,
.site-header #navigation .nav-group>summary:hover,
.site-footer .footer-grid .footer-nav :is(a,button):hover,
.site-footer .footer-bottom button:hover{
 color:#2463a0;text-decoration:none;opacity:1;
}
.site-header #navigation a:not(.site-cta):focus-visible,
.site-header #navigation .nav-group>summary:focus-visible,
.site-footer .footer-grid .footer-nav :is(a,button):focus-visible,
.site-footer .footer-bottom button:focus-visible{
 color:#2463a0;text-decoration:none;outline:2px solid #527a9b;outline-offset:4px;
}
@media(prefers-reduced-motion:reduce){
 .site-header #navigation a:not(.site-cta),
 .site-header #navigation .nav-group>summary,
 .site-footer .footer-grid .footer-nav :is(a,button),
 .site-footer .footer-bottom button{transition:none}
}

/* Search suggestions and results are navigation links. */
#site-search #site-search-results a{color:var(--navy);text-decoration:none;transition:color .2s ease}
#site-search #site-search-results a:hover{color:#2463a0;text-decoration:none}
#site-search #site-search-results a:focus-visible{color:#2463a0;text-decoration:none;outline:2px solid #527a9b;outline-offset:4px}
@media(prefers-reduced-motion:reduce){#site-search #site-search-results a{transition:none}}

/* Shared hover accent for remaining navigation and utility controls. */
html body dialog .search-close:hover,
html body dialog #privacy-close:hover,
html body .home-hero .hero-pause:hover,
html body .circle-button:hover{
 background:var(--cta-hover);color:#fff;border-color:var(--cta-hover);
}
html body .home-hero .hero-thumb:not(.is-active):hover .hero-story-number{background:var(--cta-hover);color:#fff}
html body .site-header .search-toggle:hover,
html body .site-header .menu:hover,
html body .gallery-arrow:hover{
 background:transparent;color:var(--cta-hover);
}
html body .breadcrumbs a:hover,
html body .hero-down:hover,
html body .about-linkedin:hover,
html body .offering-evidence-link:hover,
html body .personal-video-link a:hover,
html body .service-link:not(.site-cta):hover,
html body .text-link:not(.site-cta):hover,
html body .article-back:hover{
 color:var(--cta-hover);text-decoration:none;
}
html body .about-linkedin{ text-decoration:none }
html body .faq-list summary:hover,
html body .geography-heading .map-controls button:not([aria-pressed=true]):hover,
html body main p a:not(.site-cta):hover,
html body dialog p a:hover{color:var(--cta-hover)}
html body .offering-tile:hover h3,
html body .story-card:hover h3,
html body .detail-preview:hover h3{color:var(--cta-hover);text-decoration:none}
html body.insights-page .insight-search #insight-clear:hover{color:var(--cta-hover)!important;text-decoration:none!important}
html body dialog .search-close,
html body dialog #privacy-close,
html body .site-header .menu,
html body .site-header .search-toggle,
html body .hero-down,
html body .about-linkedin,
html body .faq-list summary,
html body .offering-tile h3,
html body .story-card h3,
html body .hero-story-number{transition:color .2s ease,background-color .2s ease}
@media(prefers-reduced-motion:reduce){
 html body dialog .search-close,html body dialog #privacy-close,
 html body .site-header .menu,html body .site-header .search-toggle,
 html body .hero-down,html body .about-linkedin,html body .faq-list summary,
 html body .offering-tile h3,html body .story-card h3,html body .hero-story-number{transition:none}
}

/* Offering-card arrows follow the title's hover accent. */
html body .offering-tile .round-link{transition:color .2s ease}
html body .offering-tile:hover .round-link{color:var(--cta-hover)}
@media(prefers-reduced-motion:reduce){html body .offering-tile .round-link{transition:none}}

/* Clear hierarchy for collapsed navigation and a compact utility row. */
@media(max-width:1000px){
 .site-header .menu{font-size:0;gap:0}
 .site-header #navigation>a:not(.nav-contact),
 .site-header #navigation>.nav-group>summary{
  display:flex;align-items:center;justify-content:center;gap:16px;
  width:100%;min-height:60px;padding:16px 0;margin:0;
  border:0;border-radius:0;background:transparent;box-shadow:none;
  font-family:inherit;font-size:20px;font-weight:500;line-height:1.4;letter-spacing:0;color:var(--navy);text-align:center;
 }
 .site-header #navigation>.nav-group>summary{justify-content:center;gap:10px}
 .site-header #navigation>.nav-group>summary:before{content:'';flex:0 0 14px}
 .site-header #navigation>.nav-group>summary .nav-chevron{flex:none}
 .site-header #navigation .mega-panel{padding:4px 0 20px 0}
 .site-header #navigation .submenu-links{margin-inline-start:12px;padding-inline-start:20px;border-inline-start:1px solid #15324a20;gap:2px}
 .site-header #navigation .submenu-links>a{width:100%;min-height:44px;padding:10px 0;font-size:16px;font-weight:400;line-height:1.5;color:var(--muted)}
 .site-header #navigation .submenu-links>a:hover{color:#2463a0}
 .site-header #navigation .mobile-nav-actions{display:grid;flex-shrink:0;grid-template-columns:minmax(0,1fr) 44px 44px minmax(0,1fr);align-items:stretch;gap:8px 12px;margin-top:20px;padding-block:8px 24px}
 .site-header #navigation .mobile-nav-footer{
  position:sticky;z-index:3;bottom:0;flex-shrink:0;width:100%;margin-top:auto;
  padding:16px 0 calc(20px + env(safe-area-inset-bottom,0px));background:var(--paper);
 }
 .site-header #navigation .mobile-nav-footer>.nav-contact{width:100%;max-width:100%;margin:0}
 .site-header #navigation .mobile-nav-actions>.search-toggle{grid-column:2;display:flex;align-items:center;justify-content:center;width:100%;min-width:44px;height:100%;min-height:var(--cta-height);padding:8px}
 .site-header #navigation .mobile-nav-actions>.search-toggle svg{width:28px;height:28px}
 .site-header #navigation .mobile-nav-actions>.language-control{display:contents}
 .site-header #navigation .mobile-nav-actions .language-toggle{grid-column:3;display:flex;align-items:center;justify-content:center;height:100%;min-width:44px;min-height:var(--cta-height);padding-inline:2px;font-size:19px}
 .site-header #navigation .language-panel{position:static;grid-column:1/-1;width:100%;max-width:none;max-height:none;overflow:visible;margin:8px 0 0;padding:8px;border:0;border-radius:10px;box-shadow:none}
 .site-header #navigation .language-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 8px}
}

/* The collapsed menu opens services as a separate view with a persistent back control. */
.menu-back,.mobile-submenu-title{display:none}
@media(max-width:1000px){
 html.mobile-menu-open,body.mobile-menu-open{overflow:hidden;overscroll-behavior:none}
 /* Keep the page's real scroll position: fixing the body resets scrollY and
    flashes the scroll-driven background. Only the header needs fixing. */
 body.mobile-menu-open{padding-top:var(--menu-header-space)}
 /* A fixed header avoids mobile Safari's sticky offset when its toolbar moves. */
 body{padding-top:82px}
 .site-header{position:fixed;top:0;inset-inline:0}
 .site-header{transition:none}
 .site-header:has(#navigation.open):before{
  position:fixed;inset:0;height:100vh;height:100lvh;
  min-height:var(--mobile-menu-height,100dvh);max-height:none;border-radius:0;backdrop-filter:none;
 }
 .site-header{--mobile-nav-header-height:82px}
 .site-header #navigation.open{
  height:calc(100svh - var(--mobile-nav-header-height));
  height:calc(min(100dvh,var(--mobile-menu-height,100dvh)) - var(--mobile-nav-header-height));max-height:none;
  padding-bottom:0;
  background:var(--paper);border-radius:0;
  justify-content:flex-start;overscroll-behavior:none;
 }
 .site-header:has(#navigation.open) .identity-name{display:inline}
 .site-header #navigation>.nav-group>summary .nav-chevron{transform:rotate(-90deg)}
 .site-header .menu-back{
  display:inline-flex;align-items:center;gap:12px;min-height:44px;flex-shrink:0;
  position:sticky;top:0;z-index:2;margin-bottom:16px;
  padding:8px 0;border:0;background:var(--paper);color:var(--navy);
  font:500 18px/1.4 Satoshi,Arial,sans-serif;text-align:start;
 }
 .menu-back svg{width:24px;height:24px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
 html[dir=rtl] .menu-back svg{transform:rotate(180deg)}
 .site-header .menu-back:hover{color:var(--cta-hover)}
 .site-header.is-submenu-open #navigation>:not(.is-active-submenu):not(.menu-back),
 .site-header.is-submenu-open #navigation>.is-active-submenu>summary{display:none}
 .site-header.is-submenu-open #navigation{padding-bottom:24px}
 .site-header.is-submenu-open #navigation .mega-panel{padding:4px 0 24px}
 .site-header.is-submenu-open .mobile-submenu-title{
  display:block;margin:0 0 18px;color:var(--navy);font-size:28px;line-height:1.2;font-weight:500;text-align:center;
 }
 .site-header.is-submenu-open #navigation .submenu-links{
  margin:0;padding:0;border:0;gap:0;grid-template-columns:minmax(0,1fr);
 }
 .site-header.is-submenu-open #navigation .submenu-links>a{
  min-height:52px;padding:12px 0;font-size:20px;line-height:1.4;color:var(--navy);justify-content:center;text-align:center;
 }
}
@media(max-width:760px){body{padding-top:76px}.site-header{--mobile-nav-header-height:76px}}

/* Preserve the tablet page gutters when the layout switches to mobile. */
@media(max-width:760px){
 :root{--mobile-page-gutter:32px}
 .wrap{width:calc(100% - 2 * var(--mobile-page-gutter))}
 html .site-header,html .site-header #navigation,.home-page .home-hero,.site-footer{padding-inline:var(--mobile-page-gutter)}
 .home-page .home-insights .story-slider{width:calc(100% - 2 * var(--mobile-page-gutter));padding-inline:0}
 .home-page .offering-gallery{padding-inline:var(--mobile-page-gutter)}
}

/* Footer navigation, social column, and full-width signature. */
.site-footer .footer-wordmark{font-size:var(--footer-wordmark-size,13.6vw)}
.site-footer .footer-bottom{justify-content:center;align-items:center;text-align:center}
.site-footer .footer-bottom p{margin:0;flex-basis:auto}
@media(max-width:760px){
 .site-footer{padding-bottom:calc(32px + env(safe-area-inset-bottom,0px))}
 .site-footer .footer-wordmark{padding-bottom:.2em}
}
@media(max-width:1100px){
 .site-footer .footer-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;align-items:start}
 .site-footer .footer-nav{grid-column:1/span 2}
 .site-footer .footer-grid>.footer-social{grid-column:3;justify-self:center;margin:0}
}
