﻿/* Final core review: opt-in overrides only. Established shared assets are untouched. */
.final-core .nav-wrapper { background:#fff!important; }
.final-core .nav-wrapper .nav-search-btn { color:#101828!important; }
.final-core .nav-wrapper a:focus-visible,
.final-core .mobile-nav :is(a,button,input):focus-visible { outline:2px solid #003d82; outline-offset:3px; }
.final-core .sm-ui :is(input,select,textarea):focus-visible { outline:2px solid #003d82; outline-offset:3px; }
.final-core .sm-ui #mainmate :is(a,button):focus-visible { outline-color:#fff; }
/* Preserve the approved full-height desktop home hero. */
@media(min-width:992px) { .final-core--home #mainmate { min-height:100vh!important; } }
.final-core--about #company-facts .about-facts-wrap { background:#fff; }
.final-core--contact #mainmate.core-contact-hero { display:block!important; padding:64px max(24px,10%) 56px!important; height:auto!important; min-height:0!important; }
.final-core--contact #mainmate.core-contact-hero::before { background:linear-gradient(105deg,#00446c99,#00446c40); }
.core-contact-hero-grid { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(0,.8fr); gap:64px; align-items:center; width:100%; }
.final-core--contact #mainmate .subheading { font-size:14px; line-height:1.5; padding:0; margin:0 0 16px; }
.final-core--contact #mainmate h1.home-h1 { font-size:clamp(32px,3.1vw,52px)!important; line-height:1.16!important; font-weight:900; max-width:19ch; margin:0 0 24px; }
.final-core--contact #mainmate .p { font-size:18px; line-height:1.65; padding:0; margin:0; max-width:65ch; }
.core-contact-nav { display:flex; flex-direction:column; min-width:0; }
.core-contact-nav a { display:grid; grid-template-columns:30px minmax(0,1fr) 20px; gap:16px; align-items:center; border-top:1px solid #ffffff50; color:#fff; padding:20px 0; font-size:16px; font-weight:600; line-height:1.5; text-decoration:none; }
.core-contact-nav a:hover { text-decoration:underline; text-underline-offset:4px; }
.core-contact-nav a span:first-child { color:#d0e4f0; font-size:14px; }
.final-core--contact #form > .title-wrapper .p { padding:0; margin:0; }
.final-core--contact #form > .softothemecontent.contact { display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.4fr); gap:64px; margin-top:32px; width:100%; }
.final-core--contact #form .contact-info { display:block; min-width:0; }
.final-core--contact .contact-info-wrapper { margin:0 0 28px; }
.final-core--contact .contact-info-wrapper .contact-link { display:inline-block; font-size:20px!important; line-height:1.5; margin-top:8px; overflow-wrap:anywhere; }
.final-core--contact .contact-info-wrapper .p.small { font-size:14px!important; line-height:1.65!important; opacity:1!important; color:#475467; padding:0; margin:8px 0 0!important; }
.core-contact-socials { display:flex; flex-wrap:wrap; gap:12px 20px; margin:0 0 28px; font-size:15px; }
.core-contact-socials a,.core-address-panel a { color:#003d82; text-decoration:underline; text-underline-offset:3px; }
.core-address-panel { padding:24px; background:#eef3f9; border:1px solid #dce4ef; border-radius:10px; }
.final-core--contact .core-address-panel p { margin:0 0 16px; padding:0; }
.final-core--contact .core-address-panel .subheading { font-size:14px; line-height:1.5; }
.final-core--contact .contact-form-wrapper { min-width:0; width:100%; padding:0; }
.final-core--contact .contact-form-title { margin:0 0 16px; }
.final-core--contact .contact-form-title .subheading { font-size:14px; line-height:1.5; margin:0 0 16px; }
.final-core--contact .core-form-note { font-size:14px; color:#475467; margin:0 0 24px; padding:0; }
.final-core--contact .form.on-contact { display:grid!important; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; margin:0; width:100%; }
.final-core--contact .form.on-contact > div { min-width:0; width:auto!important; margin:0; }
.final-core--contact .form.on-contact :is(.full-width-field,.form-col-full,.form-submit-wrap,#contact-turnstile,#contact-ts-hint) { grid-column:1/-1; }
.final-core--contact .form.on-contact label { display:block; margin:0 0 8px; font-size:15px; line-height:1.5; font-weight:600; }
.final-core--contact .form.on-contact .form-field { width:100%; min-width:0; height:48px; padding:10px 12px; border:1px solid #98a6b9; border-radius:6px; background:#fff; color:#101828; font-size:16px; line-height:1.5; text-transform:none; margin:0; box-sizing:border-box; }
.final-core--contact .form.on-contact textarea.form-field { min-height:144px; height:144px; resize:vertical; }
.final-core--contact #contact-turnstile:empty { display:none; }
.final-core--contact .form-submit-wrap { justify-self:start; }
.final-core--contact #book-a-call .case-study-card { display:grid; grid-template-columns:minmax(0,1.25fr) minmax(0,1fr); gap:40px; align-items:center; height:auto; }
.final-core--contact #book-a-call .case-study-cntent { width:auto; padding:0; min-width:0; }
.final-core--contact #book-a-call .case-study-cntent .title-wrapper { width:100%; gap:12px; margin:0 0 20px; }
.final-core--contact #book-a-call .case-study-cntent .title-wrapper > * { margin:0; padding:0; }
.final-core--contact #book-a-call .case-study-cntent .p { padding:0; }
.final-core--contact #book-a-call .img-wrapper.case-study { width:100%; height:auto; aspect-ratio:4/3; border-radius:10px; overflow:hidden; }
.final-core--contact #book-a-call .case-study-img { width:100%; height:100%; object-fit:cover; object-position:center; }
.final-core--contact #office .location-wrapper { width:100%; }
.final-core--contact #office .location-contact-info a { overflow-wrap:anywhere; }
@media(max-width:991px) {
 .final-core--contact #mainmate.core-contact-hero { padding:48px 6% 40px!important; }
 .core-contact-hero-grid { grid-template-columns:minmax(0,1fr); gap:32px; }
 .core-contact-nav { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; }
 .core-contact-nav a { grid-template-columns:24px minmax(0,1fr); gap:8px; font-size:15px; }
 .core-contact-nav a span:last-child { display:none; }
 .final-core--contact #form > .softothemecontent.contact { grid-template-columns:minmax(0,1fr); gap:40px; }
 .final-core--contact #form .contact-info { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }
 .final-core--contact .contact-info-wrapper,.core-contact-socials { margin:0; }
 .core-address-panel { grid-column:1/-1; }
}
@media(max-width:767px) {
 .final-core--contact #mainmate.core-contact-hero { padding:32px 24px!important; }
 .final-core--contact #mainmate .p { font-size:16px; }
 .core-contact-nav { display:flex; gap:0; }
 .core-contact-nav a { grid-template-columns:24px minmax(0,1fr) 20px; padding:16px 0; }
 .core-contact-nav a span:last-child { display:inline; }
 .final-core--contact #form .contact-info { grid-template-columns:minmax(0,1fr); }
 .final-core--contact .form.on-contact { grid-template-columns:minmax(0,1fr); gap:20px; }
 .final-core--contact .form-submit-wrap { justify-self:stretch; }
 .final-core--contact #book-a-call .case-study-card { grid-template-columns:minmax(0,1fr); gap:24px; }
 .final-core--contact #book-a-call .case-study-cntent .title-wrapper { height:auto; position:relative; }
}
.final-core--contact .core-contact-nav a { grid-template-columns:minmax(0,1fr) 20px; }
.final-core--contact #book-a-call > .softothemecontent { margin-top:0!important; }
.final-core--contact #book-a-call :is(.cms-wrapper,.cms-list,.case-study-card) { margin-top:0!important; }
.core-office-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:40px; padding-top:24px; border-top:1px solid #dce4ef; }
.core-office-grid address { font-style:normal; }
.final-core--contact .core-office-grid h3 { margin:0 0 16px; }
.final-core--contact .core-office-grid p { margin:0 0 16px; padding:0; }
.core-office-grid a { color:#003d82; text-decoration:underline; text-underline-offset:3px; overflow-wrap:anywhere; }
@media(max-width:767px) { .core-office-grid { grid-template-columns:minmax(0,1fr); gap:24px; } }
.final-core--contact .core-office-grid { width:100%; box-sizing:border-box; }
/* Tighten the established About desktop hero without changing its composition. */
@media(min-width:992px) {
 .final-core--about #mainmate.sm-about-hero { padding-top:48px!important; padding-bottom:32px!important; }
 .final-core--about #mainmate.sm-about-hero h1 { font-size:clamp(32px,2.9vw,48px)!important; margin-bottom:20px; }
 .final-core--about #mainmate .sm-about-hero-note { margin-top:20px; }
 .final-core--about .sm-about-hero-actions { margin-top:28px; }
}

/* Homepage hero revision: anchor the content near the top and separate each reading step. */
.final-core--home #mainmate.home-mainmate {
 display:flex!important; flex-direction:column!important; align-items:flex-start!important;
 justify-content:flex-start!important; padding-top:clamp(110px,12vh,140px)!important;
 padding-bottom:64px!important;
}
.final-core--home #mainmate .main-banner-content {
 width:100%!important; max-width:none!important; margin:0 0 0 -22px!important;
 align-self:flex-start!important; justify-content:flex-start!important;
}
.final-core--home #mainmate .hero-eyebrow {
 padding:8px 15px!important; margin:0 0 clamp(24px,3.4vh,38px)!important;
}
.final-core--home #mainmate .hero-h1-oneline {
 line-height:1.14!important; margin:0 0 24px!important; padding:0!important;
}
.final-core--home #mainmate .hero-typing-oneline {
 width:72%; max-width:960px; margin:0!important; padding:0!important; line-height:1.45!important;
}
.final-core--home #mainmate .mainmate-softothemecontent {
 display:flex!important; flex-direction:column!important; align-items:flex-start!important;
 width:100%!important; margin:clamp(32px,5vh,56px) 0 0!important;
 gap:clamp(28px,4vh,44px)!important;
}
.final-core--home #mainmate .hero-chips {
 width:min(860px,72%)!important; max-width:100%; margin:0!important;
 gap:12px!important;
}
.final-core--home #mainmate .hero-cta-row-2 { order:0!important; margin:0!important; }
@media(min-width:992px) {
 .final-core--home #mainmate.home-mainmate { height:100vh!important; min-height:100vh!important; }
 /* Share the available screen height across the five reading groups. The
    final CTA now finishes 32px above the ticker rather than leaving a void. */
 .final-core--home #mainmate .main-banner-content {
  flex:1 0 auto!important; display:flex!important; flex-direction:column!important;
  justify-content:space-between!important; gap:28px!important;
 }
 .final-core--home #mainmate .hero-eyebrow,
 .final-core--home #mainmate .hero-h1-oneline { margin-bottom:0!important; }
 .final-core--home #mainmate .mainmate-softothemecontent { display:contents!important; }
 .final-core--home #mainmate .hero-chips,
 .final-core--home #mainmate .hero-cta-row-2 { flex-shrink:0!important; }
}
@media(min-width:992px) and (max-height:650px) {
 .final-core--home #mainmate.home-mainmate { padding-top:86px!important; }
 .final-core--home #mainmate .main-banner-content { gap:20px!important; }
}
@media(max-width:991px) {
 .final-core--home #mainmate.home-mainmate { height:auto!important; min-height:0!important; padding-top:104px!important; padding-bottom:0!important; }
 .final-core--home #mainmate .main-banner-content { margin:0!important; }
 .final-core--home #mainmate .hero-eyebrow { margin-bottom:24px!important; }
 .final-core--home #mainmate .hero-typing-oneline { width:100%; max-width:75ch; font-size:20px!important; line-height:1.5!important; }
 .final-core--home #mainmate .mainmate-softothemecontent { margin-top:32px!important; gap:28px!important; }
 .final-core--home #mainmate .hero-chips { width:100%!important; }
 .final-core--home #mainmate .softo-ticker { flex-shrink:0; margin-top:32px!important; }
}
@media(max-width:600px) {
 .final-core--home #mainmate.home-mainmate { padding-top:100px!important; }
 .final-core--home #mainmate .hero-eyebrow { padding:8px 10px!important; }
 .final-core--home #mainmate .hero-h1-oneline { margin-bottom:24px!important; }
 .final-core--home #mainmate .hero-typing-oneline { font-size:18px!important; }
 .final-core--home #mainmate .hero-chips { gap:10px!important; }
}
