
/* Production hardening overrides */
html{scroll-padding-top:var(--oa-header-height)}
body{overflow-x:hidden}
button,a,input,select,textarea{touch-action:manipulation}
:focus-visible{outline:var(--oa-focus);outline-offset:3px}
.nav-toggle{font-size:0}.nav-toggle::before{content:"☰";font-size:22px;line-height:1}
.nav-toggle[aria-expanded="true"]::before{content:"×"}
.nav-links[hidden]{display:none!important}
.hero__side{min-width:0}
.company-card{min-width:0}.company-card>*{min-width:0}
.company-card__services{overflow-wrap:anywhere}
.arch-frame img{background:var(--oa-primary-50)}
.modal{overscroll-behavior:contain}.modal[aria-hidden="true"]{visibility:hidden}
.modal__caption{color:#fff;margin:12px 0 0}.modal__dialog:focus{outline:none}
.modal__video{width:100%;aspect-ratio:16/9;border:0;display:block;background:var(--oa-primary-900)}
.video-placeholder{display:grid;place-items:center;min-height:320px;padding:40px;text-align:center;background:var(--oa-gradient-deep);color:#fff}
.video-placeholder h2{color:#fff}.video-placeholder p{color:var(--oa-secondary-200)}
.cookie{max-height:min(80vh,420px);overflow:auto}.cookie__manage{display:none;margin-top:12px;padding-top:12px;border-top:1px solid var(--oa-border)}.cookie.is-managing .cookie__manage{display:block}
.cookie__manage label{display:flex;gap:10px;align-items:flex-start}.cookie__manage input{margin-top:4px}
.field__error:empty{display:none}.field.has-error input,.field.has-error select,.field.has-error textarea{border-color:var(--oa-primary-700)}
.newsletter{align-items:flex-start;flex-wrap:wrap}.newsletter__consent{width:100%;display:flex;gap:8px;align-items:flex-start;font-size:13px;color:var(--oa-secondary-200)}.newsletter__consent input{margin-top:4px;flex:0 0 auto}.newsletter__consent a{color:#fff;text-decoration:underline}
@media(max-width:820px){:root{--oa-header-height:74px}.nav{min-height:74px}.nav-links{top:74px;max-height:calc(100vh - 88px);overflow:auto}.cookie{left:12px;right:12px;bottom:12px}.cookie__actions{width:100%}.cookie__actions .btn{flex:1 1 180px;text-align:center}}
@media(max-width:560px){.modal__dialog{width:100%}.modal__close{right:0}.modal__nav{gap:8px}.modal__nav button{min-height:44px}.video-placeholder{min-height:240px;padding:24px}}

.breadcrumb-wrap{padding-top:18px}.section-subheading{margin-top:90px}.matrix__note{margin-top:28px}.entity--navy{--entity-primary:#00145A}.entity--purple{--entity-primary:#6E4687}.entity--grey{--entity-primary:#707070}.entity--pearl{--entity-primary:#14344C}.modal__caption{color:#fff}

.mt-20{margin-top:20px}.mt-35{margin-top:35px}.entity-border--navy{border-color:#00145A!important;color:#00145A!important}.entity-border--purple{border-color:#6E4687!important;color:#6E4687!important}.entity-border--grey{border-color:#707070!important;color:#707070!important}.entity-border--pearl{border-color:#14344C!important;color:#14344C!important}

.mt-25{margin-top:25px}.map-placeholder{margin-top:18px;min-height:230px}.notfound{min-height:70vh}.article-body{margin-top:55px}.search-form-wrap{flex:1;max-width:720px}.faq-heading{margin:0}
body.nav-open{overflow:hidden}@media(min-width:821px){body.nav-open{overflow:auto}}


/* v3.0.1 navigation, cookie and newsletter refinements */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.nav-links .nav-cta{margin-left:4px}
.newsletter{display:grid!important;grid-template-columns:1fr!important;gap:12px!important;align-items:start!important}
.newsletter__input-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;width:100%}
.newsletter__input-row input{min-width:0;width:100%}
.newsletter__input-row button{min-height:44px;white-space:nowrap}
.newsletter__consent{width:100%!important;display:grid!important;grid-template-columns:18px minmax(0,1fr)!important;gap:9px!important;align-items:start!important;margin:0!important;font-size:13px!important;line-height:1.45!important}
.newsletter__consent input{width:18px;height:18px;margin:1px 0 0!important}
.newsletter__consent span{min-width:0;overflow-wrap:anywhere}
.newsletter__consent a{color:#fff;text-decoration:underline}
.cookie{padding:22px;left:18px;right:18px;bottom:18px}
.cookie[hidden]{display:none!important}
.cookie__inner{align-items:flex-start!important}
.cookie__content{min-width:0;flex:1}
.cookie__content h2{font-size:clamp(28px,3vw,40px);margin-bottom:8px}
.cookie__content p{max-width:760px}
.cookie__policy{margin-top:4px;font-family:Cinzel,serif;font-size:11px;letter-spacing:.08em;text-transform:uppercase}
.cookie__manage[hidden]{display:none!important}
.cookie__manage{background:var(--oa-primary-50);padding:14px;border:1px solid var(--oa-border)}
.cookie__manage label{display:grid;grid-template-columns:18px minmax(0,1fr);gap:9px;align-items:start;font-size:15px}
.cookie__manage input{width:18px;height:18px;margin:2px 0 0}
.cookie__actions{flex:0 0 auto;max-width:360px}
.cookie__save[hidden]{display:none!important}
.article-body{max-width:900px}
.article-body h2{margin-top:48px}
.article-body .article-cta{margin-top:64px}
.related-insights{padding-left:22px;margin:12px 0 0}
.related-insights li{margin:8px 0}
.related-insights a{font-family:Cinzel,serif;font-size:11px;letter-spacing:.06em;text-transform:uppercase;font-weight:700}
@media(max-width:820px){.newsletter__input-row{grid-template-columns:1fr}.newsletter__input-row button{width:100%}.cookie__inner{display:grid!important;grid-template-columns:1fr!important}.cookie__actions{max-width:none;width:100%}.cookie__actions .btn{flex:1 1 190px}.cookie{max-height:calc(100vh - 24px)}}
@media(max-width:560px){.cookie{padding:16px}.cookie__actions{display:grid;grid-template-columns:1fr}.cookie__actions .btn{width:100%}.article-body h2{margin-top:38px}}

/* v3.1 hero video, cookie action and search refinements */
.hero{isolation:isolate;background:var(--oa-primary-900)}
.hero__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;opacity:.68}
.hero__scrim{position:absolute;inset:0;z-index:0;background:linear-gradient(90deg,rgba(31,37,50,.94) 0%,rgba(31,37,50,.72) 48%,rgba(31,37,50,.52) 100%),linear-gradient(0deg,rgba(31,37,50,.7),rgba(31,37,50,.08) 60%);pointer-events:none}
.hero__grid{z-index:2}
.hero__video-toggle{position:absolute;right:clamp(20px,4vw,64px);bottom:24px;z-index:4;min-height:42px;padding:9px 14px;border:1px solid rgba(255,255,255,.55);background:rgba(31,37,50,.55);backdrop-filter:blur(8px);color:#fff;font-family:Cinzel,serif;font-size:10px;letter-spacing:.12em;text-transform:uppercase}
.hero__video-toggle:focus-visible,.hero__watch:focus-visible{outline:var(--oa-focus);outline-offset:4px}
.hero__watch{display:inline-flex;align-items:center;gap:12px;margin-top:22px;color:#fff;font-family:Cinzel,serif;font-size:11px;letter-spacing:.12em;text-transform:uppercase;border-bottom:1px solid rgba(255,255,255,.5);padding-bottom:7px}
.cookie__actions{display:grid!important;grid-template-columns:1fr!important;gap:10px!important;align-content:start}
.cookie__actions .btn{width:100%;min-width:0}
.newsletter__input-row{display:grid!important;grid-template-columns:1fr!important;gap:10px!important;width:100%}
.newsletter__input-row button{width:100%}
.search-result-card{min-height:100%}
.search-result-card .insight-card__body{height:100%;display:flex;flex-direction:column}
.search-result-card .company-card__link{margin-top:auto;align-self:flex-start;padding-top:16px}
@media(max-width:820px){.hero__video-toggle{right:20px;bottom:18px}.hero__grid{padding-bottom:90px}}
@media(prefers-reduced-motion:reduce){.hero__video{display:none}.hero{background-image:url('/images/hero-video-poster.jpg');background-size:cover;background-position:center}.hero.hero--poster-missing{background-image:none;background-color:var(--oa-primary-900)}.hero__scrim{background:linear-gradient(90deg,rgba(31,37,50,.95),rgba(31,37,50,.7))}}
.hero:before{display:none}


/* v3.2 — icon-only global search control */
.nav-search-icon {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:44px;
  height:44px;
  padding:0;
  border:0;
  background:transparent;
  color:inherit;
  text-decoration:none;
  border-radius:999px;
}
.nav-search-icon:hover { background:rgba(92,108,148,.10); }
.nav-search-icon:focus-visible { outline:3px solid currentColor; outline-offset:3px; }
.nav-search-icon .icon-search { display:block; }
@media (max-width: 900px) {
  .nav-search-icon { width:44px; height:44px; }
}


/* v3.3 — keep primary navigation labels and CTA on one line */
.nav-links > a,
.nav-links .nav-cta,
.nav-links .nav-search-icon {
  white-space: nowrap;
}

.nav-links .nav-cta {
  flex-shrink: 0;
}

.nav-links > a:not(.nav-cta):not(.nav-search-icon) {
  flex-shrink: 0;
}

@media (min-width: 901px) {
  .nav-links {
    flex-wrap: nowrap;
  }

  .nav-links > a {
    white-space: nowrap;
  }
}

/* v3.5 QA: keep the Search page control row vertically aligned */
.search-page .search-form {
  display: flex;
  align-items: stretch;
}
.search-page .search-form input[type="search"],
.search-page .search-form input[type="text"] {
  height: 3.25rem;
  box-sizing: border-box;
}
.search-page .search-form button,
.search-page .search-form .search-button {
  height: 3.25rem;
  min-height: 3.25rem;
  box-sizing: border-box;
  align-self: stretch;
}
@media (max-width: 640px) {
  .search-page .search-form {
    align-items: stretch;
  }
  .search-page .search-form input[type="search"],
  .search-page .search-form input[type="text"],
  .search-page .search-form button,
  .search-page .search-form .search-button {
    height: 3.25rem;
    min-height: 3.25rem;
  }
}

/* v3.7.3 — Search page: exact control-height alignment */
#search-form {
  align-items: flex-end;
}
#search-form .search-form-wrap input[type="search"],
#search-form input[type="search"] {
  height: 48px;
  min-height: 48px;
  box-sizing: border-box;
}
#search-form > button[type="submit"] {
  height: 48px;
  min-height: 48px;
  box-sizing: border-box;
  align-self: flex-end;
  margin: 0;
}
@media (max-width: 640px) {
  #search-form {
    align-items: stretch;
  }
  #search-form > button[type="submit"],
  #search-form .search-form-wrap input[type="search"],
  #search-form input[type="search"] {
    height: 48px;
    min-height: 48px;
  }
}

/* v3.7.3 — footer social icons: no separators */
.site-footer .social-icon::before,
.site-footer .social-icon::after,
.site-footer .social-links .social-icon::before,
.site-footer .social-links .social-icon::after {
  content: none !important;
}

/* v3.7.4 — documented image placeholder / auto-swap system */
.arch-frame { position: relative; overflow: hidden; }
.arch-frame-placeholder {
  display: none;
  min-height: 320px;
  width: 100%;
  place-items: center;
  padding: 40px;
  box-sizing: border-box;
  background: var(--oa-primary-50);
  color: var(--oa-primary-700);
}
.arch-frame-placeholder svg { width: 72px; height: 72px; }
.arch-frame.is-empty .arch-frame-placeholder { display: grid; }
.arch-frame.is-empty img { display: none; }
@media (max-width: 560px) {
  .arch-frame-placeholder { min-height: 240px; padding: 24px; }
}

/* v3.8 — Image Placeholder / Auto-Swap System
   Governing rule: placeholder hidden by default; visible only after
   genuine image-load failure adds .is-empty to the image container. */
.event-card-placeholder,
.course-card-placeholder,
.course-purchase-placeholder,
.cart-line-placeholder,
.image-placeholder {
  display: none;
}

.event-card-image.is-empty .event-card-placeholder,
.course-card-image.is-empty .course-card-placeholder,
.course-purchase-image.is-empty .course-purchase-placeholder,
.cart-line-image.is-empty .cart-line-placeholder,
.image-frame.is-empty .image-placeholder {
  display: grid;
}

/* Intentional empty-state backgrounds: preserve the designed state
   instead of leaving an unstyled blank area. */
.event-card-image,
.course-card-image,
.course-purchase-image,
.cart-line-image {
  background: var(--event-placeholder-bg, #D9E4F5);
}

/* v3.9 — placeholder-first visual image policy */
.image-placeholder { display: none; }
.image-frame.is-empty .image-placeholder,
.image-placeholder-wrap.is-empty .image-placeholder,
.media-placeholder.is-empty .image-placeholder { display: grid; }

/* v4.0 — placeholder-first visual image fallback */
.arch-frame { position: relative; overflow: hidden; }
.arch-frame-placeholder {
  display: none;
  min-height: 320px;
  width: 100%;
  place-items: center;
  padding: 40px;
  box-sizing: border-box;
  background: var(--oa-primary-50);
  color: var(--oa-primary-700);
}
.arch-frame-placeholder svg { width: 72px; height: 72px; }
.arch-frame.is-empty .arch-frame-placeholder { display: grid; }
.arch-frame.is-empty img { display: none; }
@media (max-width: 560px) {
  .arch-frame-placeholder { min-height: 240px; padding: 24px; }
}

/* v4.1 — Complete image fallback coverage */
.arch-frame-placeholder {
  display:none;
  position:absolute;
  inset:0;
  place-items:center;
  align-content:center;
  gap:10px;
  padding:32px;
  box-sizing:border-box;
  background:var(--oa-primary-50);
  color:var(--oa-primary-700);
  text-align:center;
}
.arch-frame-placeholder__icon svg { width:64px; height:64px; }
.arch-frame-placeholder__label {
  font-family:Cinzel,serif;
  font-size:10px;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.arch-frame.is-empty .arch-frame-placeholder { display:grid; }
.arch-frame.is-empty > img { display:none; }

.modal__media { position:relative; min-height:240px; }
.lightbox-placeholder {
  display:none;
  position:absolute;
  inset:0;
  place-items:center;
  background:var(--oa-primary-900);
  color:var(--oa-secondary-200);
  font-family:Cinzel,serif;
  font-size:10px;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.modal__media.is-empty .lightbox-placeholder { display:grid; }
.modal__media.is-empty img { display:none; }

.hero__poster-placeholder {
  display:none;
  position:absolute;
  inset:0;
  z-index:0;
  place-items:center;
  background:var(--oa-primary-900);
  color:var(--oa-secondary-300);
}
.hero__poster-placeholder-icon svg { width:84px; height:84px; }
.hero.hero--poster-missing .hero__poster-placeholder { display:grid; }
.hero.hero--poster-missing .hero__video { background:var(--oa-primary-900); }


/* v4.2 — CSP-safe image fallback sizing */
.insight-card .arch-frame { aspect-ratio: 16 / 9; min-height: 0; }
.page-hero .arch-frame { min-height: 320px; }
.gallery-item .arch-frame { min-height: 260px; }
.arch-frame-placeholder { z-index: 1; }
.arch-frame-placeholder__icon { display: grid; place-items: center; }

/* v4.3 — inner hero sizing must not re-expand the background */
.page-hero .arch-frame{min-height:0}


/* v4.4 — balanced mobile/tablet navigation */
@media (max-width: 960px){
  :root{--oa-header-height:74px}
  .nav{
    min-height:74px;
    width:100%;
    gap:14px;
    padding:10px max(16px,var(--oa-gutter));
  }
  .brand{
    min-width:0;
    flex:1 1 auto;
    max-width:calc(100% - 58px);
  }
  .brand img{
    width:clamp(112px,32vw,142px);
    max-width:100%;
    max-height:48px;
  }
  .nav-toggle{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    flex:0 0 44px;
    margin-left:auto;
    width:44px;
    height:44px;
    padding:0;
  }
  .nav-links{
    position:absolute;
    left:max(12px,var(--oa-gutter));
    right:max(12px,var(--oa-gutter));
    top:74px;
    width:auto;
    max-height:calc(100vh - 86px);
    overflow:auto;
    padding:14px;
    display:none;
    flex-direction:column;
    align-items:stretch;
    gap:2px;
    margin:0;
    background:#fff;
    border:1px solid var(--oa-border);
    box-shadow:var(--oa-shadow);
  }
  .nav-links.is-open{display:flex}
  .nav-links>a{
    width:100%;
    min-height:44px;
    display:flex;
    align-items:center;
    padding:10px 12px;
    white-space:nowrap;
  }
  .nav-links .nav-cta{
    width:100%;
    justify-content:flex-start;
    margin:4px 0 0;
    padding:13px 16px!important;
    white-space:nowrap;
  }
  .nav-links .nav-search-icon{
    align-self:flex-start;
    width:44px;
    flex:0 0 44px;
  }
  .page-main{padding-top:74px}
}
@media (max-width: 560px){
  .nav{padding-left:14px;padding-right:14px}
  .brand img{width:118px}
  .nav-links{left:12px;right:12px}
}

/* v4.4 — logo loading spinner / throbber */
.site-loader{
  position:fixed;
  inset:0;
  z-index:10000;
  display:grid;
  place-items:center;
  background:rgba(255,255,255,.98);
  opacity:1;
  visibility:visible;
  pointer-events:auto;
  transition:opacity 320ms ease,visibility 320ms ease;
}
.site-loader.is-hidden{
  opacity:0;
  visibility:hidden;
  pointer-events:none;
}
.site-loader__inner{
  display:grid;
  place-items:center;
  gap:18px;
  min-width:150px;
  text-align:center;
}
.site-loader__mark{
  position:relative;
  width:96px;
  height:96px;
  display:grid;
  place-items:center;
}
.site-loader__mark::before{
  content:"";
  position:absolute;
  inset:0;
  border:2px solid var(--oa-primary-200);
  border-top-color:var(--oa-primary);
  border-right-color:var(--oa-primary);
  border-radius:50%;
  animation:oa-logo-spin 1.05s linear infinite;
}
.site-loader__logo{
  width:58px;
  height:58px;
  object-fit:contain;
  background:#fff;
  border-radius:4px;
}
.site-loader__label{
  font-family:Cinzel,serif;
  font-size:9px;
  line-height:1.4;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--oa-primary-700);
}
@keyframes oa-logo-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){
  .site-loader__mark::before{animation:none}
  .site-loader{transition:none}
}


/* v4.6 — true full-bleed inner-page heroes
   The hero image must belong to the page hero itself, not the centered
   content container. The image element is retained so the existing
   placeholder-first / load-failure mechanism remains intact. */
.page-hero{
  min-height:380px;
  position:relative;
  overflow:hidden;
}
.page-hero__grid{
  position:static !important;
  min-height:380px;
  display:flex;
  align-items:center;
}
.page-hero__grid > div:first-child{
  position:relative;
  z-index:3;
  width:min(68%,760px);
  padding:48px 0;
}
.page-hero .arch-frame{
  position:absolute !important;
  inset:0 !important;
  z-index:0;
  width:100% !important;
  height:100% !important;
  min-height:0 !important;
  max-width:none !important;
  aspect-ratio:auto !important;
  border:0;
}
.page-hero .arch-frame > img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  max-width:none;
  object-fit:cover;
  object-position:center center;
}
.page-hero .arch-frame::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:2;
  pointer-events:none;
  background:linear-gradient(
    90deg,
    rgba(7,17,38,.94) 0%,
    rgba(7,17,38,.78) 36%,
    rgba(7,17,38,.43) 66%,
    rgba(7,17,38,.18) 100%
  );
}
.page-hero h1{
  font-size:clamp(46px,5.2vw,72px);
  line-height:1.02;
  max-width:760px;
}
.page-hero .lede{
  max-width:680px;
  font-size:clamp(17px,1.45vw,21px);
  line-height:1.45;
}
.page-hero .card-meta{
  position:relative;
  z-index:3;
}

/* Missing-image state: retain the same full-bleed footprint. */
.page-hero .arch-frame.is-empty .arch-frame-placeholder{
  display:grid;
  position:absolute;
  inset:0;
  min-height:0;
}
.page-hero .arch-frame.is-empty::after{
  background:rgba(7,17,38,.94);
}

/* Mobile: preserve the Home-page navigation scale while keeping the
   inner hero compact and genuinely edge-to-edge. */
@media (max-width:900px){
  .page-hero{min-height:330px}
  .page-hero__grid{
    min-height:330px;
    display:flex;
    align-items:center;
  }
  .page-hero__grid > div:first-child{
    width:100%;
    padding:42px 0;
  }
  .page-hero h1{
    font-size:clamp(42px,8.5vw,58px);
    line-height:1.02;
  }
  .page-hero .lede{
    font-size:18px;
    line-height:1.45;
    max-width:620px;
  }
  .page-hero .arch-frame::after{
    background:linear-gradient(
      90deg,
      rgba(7,17,38,.91) 0%,
      rgba(7,17,38,.72) 55%,
      rgba(7,17,38,.48) 100%
    );
  }
}

@media (max-width:560px){
  .page-hero{min-height:300px}
  .page-hero__grid{min-height:300px}
  .page-hero__grid > div:first-child{padding:34px 0}
  .page-hero h1{
    font-size:clamp(38px,10vw,50px);
  }
  .page-hero .lede{
    font-size:16px;
    line-height:1.4;
  }
}


/* v4.7 — mobile header logo visibility
   Keep the supplied OA Group brand mark as a non-shrinking header asset.
   The previous flex rule allowed the logo box to participate in available
   width calculations; this explicit rule makes the brand width deterministic
   on narrow screens without affecting the hamburger control. */
@media (max-width: 960px){
  .site-header .nav{
    flex-wrap:nowrap;
  }
  .site-header .brand{
    display:inline-flex;
    flex:0 0 auto;
    width:auto;
    min-width:0;
    max-width:none;
    overflow:visible;
  }
  .site-header .brand img{
    display:block;
    width:clamp(118px,30vw,142px);
    height:auto;
    max-width:none;
    max-height:none;
    object-fit:contain;
    visibility:visible;
    opacity:1;
  }
  .site-header .nav-toggle{
    flex:0 0 44px;
  }
}

@media (max-width: 560px){
  .site-header .brand img{
    width:122px;
  }
}

/* v4.8 — taller inner-page heroes for safer human subject framing */
.page-hero{min-height:460px;}
.page-hero__grid{min-height:460px;}
.page-hero .arch-frame > img{object-position:center 38%;}

@media (max-width:900px){
  .page-hero{min-height:410px;}
  .page-hero__grid{min-height:410px;}
  .page-hero .arch-frame > img{object-position:center 38%;}
}
@media (max-width:560px){
  .page-hero{min-height:370px;}
  .page-hero__grid{min-height:370px;}
  .page-hero .arch-frame > img{object-position:center 34%;}
}

/* v4.8 — editorial body-image system */
.visual-break{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(30px,6vw,80px);align-items:center;}
.visual-break--reverse{grid-template-columns:.95fr 1.05fr;}
.visual-break__media .arch-frame{aspect-ratio:16/9;border:1px solid var(--oa-border);box-shadow:var(--oa-shadow-soft);}
.visual-break__copy{max-width:620px;}
.visual-break__copy h2{margin-bottom:16px;}
.visual-break__copy p:last-child{margin-bottom:0;}
.visual-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
.visual-card{background:#fff;border:1px solid var(--oa-border);overflow:hidden;}
.visual-card .arch-frame{aspect-ratio:16/10;}
.visual-card__body{padding:20px 22px 22px;}
.visual-card__body h3{font-size:28px;margin-bottom:8px;}
.visual-card__body p{color:var(--oa-muted);font-size:16px;margin-bottom:0;}
@media (max-width:900px){
  .visual-break,.visual-break--reverse{grid-template-columns:1fr;}
  .visual-break__copy{max-width:none;}
  .visual-grid{grid-template-columns:1fr;}
}

/* v4.9 — definitive OA Group logo rendering
   The logo is a protected brand asset. It must not shrink to zero, inherit
   content-image placeholder rules, or be clipped by the responsive header. */
.site-header .brand{
  display:inline-flex;
  align-items:center;
  justify-content:flex-start;
  flex:0 0 auto;
  width:160px;
  min-width:160px;
  max-width:160px;
  height:72px;
  overflow:visible;
  line-height:0;
}
.site-header .brand img{
  display:block;
  flex:0 0 auto;
  width:148px;
  height:auto;
  max-width:none;
  max-height:none;
  min-width:0;
  min-height:0;
  object-fit:contain;
  object-position:left center;
  visibility:visible;
  opacity:1;
}
.footer-brand img{
  display:block;
  width:148px;
  height:auto;
  max-width:100%;
  max-height:none;
  object-fit:contain;
  object-position:left center;
  visibility:visible;
  opacity:1;
}

@media (max-width:960px){
  .site-header .brand{
    width:142px;
    min-width:142px;
    max-width:142px;
    height:64px;
  }
  .site-header .brand img{
    width:132px;
  }
}
@media (max-width:560px){
  .site-header .brand{
    width:128px;
    min-width:128px;
    max-width:128px;
    height:58px;
  }
  .site-header .brand img{
    width:122px;
  }
}

.site-loader__logo{
  display:block;
  width:160px;
  height:auto;
  max-width:160px;
  max-height:none;
  object-fit:contain;
  visibility:visible;
  opacity:1;
}

/* v4.10 — restrained OA Group brand sizing */
.site-header .brand{
  width:124px;
  min-width:124px;
  max-width:124px;
  height:58px;
}
.site-header .brand img{
  width:108px;
  max-width:108px;
  height:auto;
}
.footer-brand img{
  width:112px;
  max-width:100%;
  height:auto;
}
.site-loader__mark{
  width:72px;
  height:72px;
}
.site-loader__logo{
  display:block;
  width:40px;
  height:40px;
  max-width:40px;
  max-height:40px;
  object-fit:contain;
  background:#fff;
  border-radius:3px;
}
@media (max-width:960px){
  .site-header .brand{
    width:116px;
    min-width:116px;
    max-width:116px;
    height:54px;
  }
  .site-header .brand img{
    width:102px;
    max-width:102px;
  }
}
@media (max-width:560px){
  .site-header .brand{
    width:110px;
    min-width:110px;
    max-width:110px;
    height:52px;
  }
  .site-header .brand img{
    width:96px;
    max-width:96px;
  }
}

/* v4.10 — guaranteed hero placeholder presentation */
.page-hero .arch-frame.is-empty .arch-frame-placeholder{
  display:grid;
  position:absolute;
  inset:0;
  z-index:1;
  min-height:0;
  background:var(--oa-primary-50);
  color:var(--oa-primary-700);
}
.page-hero .arch-frame.is-empty::after{
  z-index:2;
  background:rgba(7,17,38,.94);
}
.page-hero .arch-frame-placeholder__icon,
.page-hero .arch-frame-placeholder__label{
  position:relative;
  z-index:3;
}
.page-hero .arch-frame-placeholder__label{
  max-width:420px;
}

/* v4.11 — deterministic placeholder-first hero rendering */
.page-hero .arch-frame.is-placeholder-pending .arch-frame-placeholder{
  display:grid;
  position:absolute;
  inset:0;
  z-index:1;
  min-height:0;
  background:var(--oa-primary-50);
  color:var(--oa-primary-700);
}
.page-hero .arch-frame.is-placeholder-pending > img{
  display:none;
}
.page-hero .arch-frame.is-placeholder-pending::after{
  z-index:2;
  background:rgba(7,17,38,.94);
}
.page-hero .arch-frame.is-placeholder-pending .arch-frame-placeholder__icon,
.page-hero .arch-frame.is-placeholder-pending .arch-frame-placeholder__label{
  position:relative;
  z-index:3;
}

/* v4.11 — smaller loading mark; the logo is an identity cue, not the spinner */
.site-loader__mark{
  width:64px;
  height:64px;
}
.site-loader__logo{
  width:28px;
  height:28px;
  max-width:28px;
  max-height:28px;
}

/* v4.12 — confirmed OA Group office address */
.contact-address,.footer-address{
  line-height:1.65;
}
.contact-address__label{
  display:inline-block;
  margin-bottom:4px;
  font-family:var(--oa-font-sans,inherit);
  font-size:.72rem;
  font-weight:700;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.office-location .contact-address{
  max-width:520px;
}

/* v4.13 — canonical, visible page-hero placeholder */
.page-hero .arch-frame{
  position:relative;
  overflow:hidden;
  isolation:isolate;
}
.page-hero .arch-frame > img{position:relative;z-index:1;}
.page-hero .arch-frame .arch-frame-placeholder{
  position:absolute;
  inset:0;
  z-index:5;
  display:none;
  place-items:center;
  align-content:center;
  justify-items:center;
  gap:12px;
  padding:24px;
  box-sizing:border-box;
  background:var(--oa-primary-50);
  color:var(--oa-primary-700);
  text-align:center;
}
.page-hero .arch-frame .arch-frame-placeholder__icon{
  display:grid;
  place-items:center;
  width:54px;
  height:54px;
  border:1px solid currentColor;
  border-radius:4px;
  opacity:.85;
}
.page-hero .arch-frame .arch-frame-placeholder__icon svg{width:30px;height:30px;}
.page-hero .arch-frame .arch-frame-placeholder__label{
  display:block;
  max-width:360px;
  font-family:var(--oa-font-sans,Arial,sans-serif);
  font-size:11px;
  line-height:1.55;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.page-hero .arch-frame.is-empty .arch-frame-placeholder,
.page-hero .arch-frame.is-placeholder-pending .arch-frame-placeholder{display:grid;}
.page-hero .arch-frame.is-empty > img,
.page-hero .arch-frame.is-placeholder-pending > img{display:none;}
.page-hero .arch-frame.is-empty::after,
.page-hero .arch-frame.is-placeholder-pending::after{display:none !important;}

/* v4.14 — placeholder-state hero content contrast
   When the hero photograph is unavailable, the hero background becomes the
   light approved placeholder. The editorial copy must therefore switch from
   white-on-image to dark ink, while retaining the same layout. */
.page-hero:has(.arch-frame.is-placeholder-pending) .page-hero__grid > div:first-child,
.page-hero:has(.arch-frame.is-empty) .page-hero__grid > div:first-child{
  color:var(--oa-ink);
}
.page-hero:has(.arch-frame.is-placeholder-pending) h1,
.page-hero:has(.arch-frame.is-placeholder-pending) .lede,
.page-hero:has(.arch-frame.is-placeholder-pending) .eyebrow,
.page-hero:has(.arch-frame.is-empty) h1,
.page-hero:has(.arch-frame.is-empty) .lede,
.page-hero:has(.arch-frame.is-empty) .eyebrow{
  color:var(--oa-ink);
  text-shadow:none;
}
.page-hero:has(.arch-frame.is-placeholder-pending) .eyebrow,
.page-hero:has(.arch-frame.is-empty) .eyebrow{
  opacity:1;
}
.page-hero:has(.arch-frame.is-placeholder-pending) .lede,
.page-hero:has(.arch-frame.is-empty) .lede{
  opacity:1;
}

/* v4.14 — fallback for browsers without :has() */
.page-hero.has-placeholder-image .page-hero__grid > div:first-child,
.page-hero.has-placeholder-image h1,
.page-hero.has-placeholder-image .lede,
.page-hero.has-placeholder-image .eyebrow{
  color:var(--oa-ink);
  text-shadow:none;
  opacity:1;
}

/* v4.15 — Solutions Matrix keyboard focus */
.matrix__tab:focus-visible{
  outline:3px solid var(--oa-primary-300);
  outline-offset:-3px;
  position:relative;
  z-index:2;
}
