/* Dimensions follow the 1920px version 03 reference. */
.knowledge.knowledge-with-credentials { padding-top: 5rem; }
.geo-credentials { margin-bottom: 7rem; }
.geo-credentials-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 3.5rem;
}
.geo-credential {
    position: relative;
    min-width: 0;
    min-height: 7.125rem;
    padding: 1.5rem 0 1.375rem;
    border-bottom: 1px solid #dce5f0;
}
.geo-credential:nth-child(-n+2) { min-height: 5.625rem; padding-top: 0; }
.geo-credential:not(#customer-credential):hover { border-bottom-color: #288cff; }
#customer-credential { cursor: pointer; }
#customer-credential:focus-visible { outline: 2px solid #288cff; outline-offset: 4px; }
.geo-credential-link { display: block; }
.geo-credential-link:hover h3,
.geo-credential-link:focus-visible h3 { color: #288cff; }
.geo-credential h3 {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding-right: 2rem;
    color: #13263e;
    font-size: 1.25rem;
    font-weight: 600;
    line-height: 1.5;
}
.geo-credential-icon {
    flex: 0 0 auto;
    width: 2rem;
    height: 1.5rem;
    color: #269fff;
}
.geo-credential p {
    margin-top: 1rem;
    color: #52677f;
    font-size: .875rem;
    line-height: 1.5;
    overflow-wrap: anywhere;
}
.geo-credential .geo-credential-arrow {
    position: absolute;
    top: 3rem;
    right: 0;
    width: 1rem;
    height: 1rem;
    color: #288cff;
}
.geo-credential:nth-child(-n+2) .geo-credential-arrow { top: 1.5rem; }
@media (max-width: 760px) {
    .knowledge.knowledge-with-credentials { padding-top: 2.5rem; }
    .geo-credentials { margin-bottom: 3.5rem; }
    .geo-credentials-grid { grid-template-columns: 1fr; }
    .geo-credential,
    .geo-credential:nth-child(-n+2) { min-height: 0; padding: 1.5rem 0; }
    .geo-credential:first-child { padding-top: 0; }
    .geo-credential h3 { font-size: 1.15rem; }
    .geo-credential p { margin-top: .65rem; font-size: .9rem; line-height: 1.8; }
    .geo-credential:nth-child(-n+2) .geo-credential-arrow { top: 3rem; }
    .geo-credential:first-child .geo-credential-arrow { top: 1.5rem; }
}

:root { scroll-padding-top: calc(max(4.375rem, 48px) + 1rem); }
.site-header.geo-header {
    position: sticky;
    top: 0;
    z-index: 100;
    height: 4.375rem;
}
.geo-header .brand { flex-shrink: 0; }
.geo-header .brand img { width: 15rem; height: auto; }
.geo-header .main-nav {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    margin-left: auto;
    margin-right: 2.5rem;
    gap: 2.25rem;
    font-size: .9375rem;
    color: #718096;
    white-space: nowrap;
}
.geo-header .main-nav a {
    flex-shrink: 0;
    font-weight: 400;
    line-height: 1.5;
}
.geo-header .main-nav a:first-child { color: inherit; font-weight: 400; }
.geo-header .main-nav a:hover,
.geo-header .main-nav a:focus-visible { color: #2f70ff; }
.geo-header .header-contact-menu { position: relative; flex-shrink: 0; }
.geo-header .header-contact {
    width: 7.5rem;
    min-height: 2.5rem;
    padding: 0;
    gap: .5rem;
    border-radius: .5rem;
    background: #2f70ff;
    color: #fff;
    font-size: .875rem;
    list-style: none;
    cursor: pointer;
}
.geo-header .header-contact .icon { width: .875rem; height: .875rem; }
.geo-header .header-contact:hover { background: #2463ed; transform: none; }
.geo-header .header-contact:focus-visible { outline: 3px solid #47aaff; outline-offset: 5px; }
.geo-header .header-contact-panel {
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
    transform: translateY(.375rem) scale(.98);
    transform-origin: top right;
    transition: opacity .18s ease, transform .22s cubic-bezier(.2, .8, .2, 1), visibility 0s linear .22s;
    position: absolute;
    top: calc(100% + .6875rem);
    right: 0;
    z-index: 3;
    width: 16.75rem;
    padding: .9375rem;
    border: 1px solid #e3e8ef;
    border-radius: .75rem;
    background: #fff;
    box-shadow: 0 .5rem 2rem rgb(22 56 89 / 5%);
    font-size: .875rem;
    line-height: 1.5;
}
.geo-header .header-contact-menu:hover .header-contact-panel,
.geo-header .header-contact-menu:has(:focus-visible) .header-contact-panel {
    visibility: visible;
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0) scale(1);
    transition-delay: 0s;
}
@media (hover: none) {
    .geo-header .header-contact-menu:focus-within .header-contact-panel {
        visibility: visible;
        opacity: 1;
        pointer-events: auto;
        transform: translateY(0) scale(1);
        transition-delay: 0s;
    }
}
.geo-header .header-contact-panel::before {
    content: "";
    position: absolute;
    right: 0;
    bottom: 100%;
    left: 0;
    height: 1.25rem;
}
@media (prefers-reduced-motion: reduce) {
    .geo-header .header-contact-panel { transition: none; transform: none; }
}
.geo-header .header-contact-panel p { color: #52677f; }
.geo-header .header-contact-panel p:not(:first-child) { margin-top: .75rem; }
.geo-header .header-contact-panel a { display: block; white-space: nowrap; color: #0b2441; }
.geo-header .header-contact-panel a:hover { color: #0875ff; }

.hero.geo-hero { height: 48.875rem; }
#geo-system {
    width: 100%;
    height: 0;
    padding-top: 42.7083333333%;
    background-image: url("../images/geo-system-hero-compressed.svg");
    background-position: center top;
    background-size: 100% auto;
    background-repeat: no-repeat;
}
.geo-hero-banner { position: relative; width: 100%; }
/* Button bounds in the 1920 × 820 artwork: (240, 472, 143, 48) and (397, 472, 143, 48). */
.geo-hero-hotspot {
    position: absolute;
    top: 57.560976%;
    width: 7.447917%;
    height: 5.853659%;
    border-radius: .5rem;
    cursor: pointer;
}
.geo-hero-hotspot-demo { left: 12.5%; }
.geo-hero-hotspot-products { left: 20.677083%; }
.geo-hero-hotspot:focus-visible { outline: 3px solid #004396; outline-offset: 3px; box-shadow: 0 0 0 3px #fff; }
@media (max-width: 767.98px) {
    #geo-system {
        padding-top: 128%;
        background-image: url("../images/m-header.jpg");
    }
    /* Button bounds in the 1500 × 1920 mobile artwork: (450, 768, 286, 96) and (764, 768, 286, 96). */
    .geo-hero-hotspot { top: 40%; width: 19.066667%; height: 5%; }
    .geo-hero-hotspot-demo { left: 30%; }
    .geo-hero-hotspot-products { left: 50.933333%; }
}
.geo-hero .hero-content { padding-top: 7.25rem; }
.geo-hero .eyebrow { color: #10243e; font-size: 1.5rem; line-height: 2.25rem; font-weight: 700; letter-spacing: 0; }
.geo-hero .hero-services { display: flex; align-items: center; gap: 2rem; margin-top: .75rem; }
.geo-hero .hero-services a { display: flex; align-items: center; gap: .75rem; white-space: nowrap; }
.geo-hero .hero-service-icon {
    display: grid;
    place-items: center;
    flex-shrink: 0;
    width: 1.875rem;
    height: 1.875rem;
    border-radius: .375rem;
    color: #168bff;
    background: linear-gradient(135deg, #c2dcff, #edf7ff 50%, #aad1ff);
    box-shadow: inset 0 0 .375rem rgb(142 190 255 / 35%);
}
.geo-hero .hero-service-icon .icon { width: 1.125rem; height: 1.125rem; stroke-width: 2.2; }
.geo-hero .hero-services strong { display: block; font-size: 1.125rem; font-weight: 600; line-height: 1.6875rem; color: #0b2441; }
.geo-hero .hero-services small { display: block; font-size: 1rem; line-height: 1.5rem; color: #52677f; }
.hero.geo-hero .hero-promise {
    width: 39rem;
    max-width: 100%;
    margin-top: 2.5rem;
    font-size: 2.625rem;
    font-weight: 700;
    line-height: 4rem;
    letter-spacing: .125rem;
}
.geo-hero .hero-promise span {
    display: block;
    width: fit-content;
    color: #126cda;
    background: linear-gradient(100deg, #004396, #187ded 65%, #3bbaff);
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
}
.geo-hero .hero-promise span:nth-child(2) { margin-left: auto; }
.geo-hero .hero-promise span:nth-child(3) { margin-left: 6rem; }
.geo-hero .hero-actions { gap: .875rem; margin-top: 1.6875rem; }
.geo-hero .hero-actions .btn { width: 8.9375rem; min-height: 3rem; padding: 0; gap: .5rem; border-radius: .5rem; font-size: .875rem; }
.geo-hero .hero-actions .icon { width: 1rem; height: 1rem; }
.geo-hero .hero-stats { grid-template-columns: 170fr 362fr 267fr 228fr 195fr 218fr; align-items: start; bottom: 5.5rem; }
.geo-hero .stat { height: 4.5rem; padding-left: 2.5rem; justify-content: flex-start; border-left-color: #bfdaf5; }
.geo-hero .stat:first-child { padding-left: 0; border-left: 0; }
.geo-hero .stat strong { font-size: 2.125rem; font-weight: 600; line-height: 2.875rem; color: #0b2441; }
.geo-hero .stat span { margin-top: .25rem; font-size: 1rem; line-height: 1.5rem; color: #52677f; white-space: nowrap; }

@media (max-width: 760px) {
    :root { scroll-padding-top: 10rem; }
    .site-header.geo-header { height: auto; min-height: 4.5rem; }
    .geo-header .header-inner { flex-wrap: wrap; gap: .875rem; padding: .75rem 0; }
    .geo-header .brand { max-width: calc(100% - 7rem); }
    .geo-header .main-nav { display: flex; order: 3; width: 100%; margin: 0; padding-bottom: .375rem; gap: 1.25rem; overflow-x: auto; scrollbar-width: none; font-size: .9rem; }
    .geo-header .main-nav::-webkit-scrollbar { display: none; }
    .geo-header .main-nav a:first-child { display: block; }
    .geo-header .header-contact-menu { margin-left: auto; }
    .geo-header .header-contact { width: 6rem; min-height: 2.25rem; font-size: .875rem; }
    .geo-header .header-contact-panel { width: 19rem; font-size: 1rem; }
    .hero.geo-hero { display: flex; flex-direction: column; height: auto; min-height: 0; }
    .geo-hero .hero-content { order: 1; padding-top: 2.5rem; }
    .geo-hero .eyebrow { font-size: 1.25rem; line-height: 1.5; }
    .geo-hero .hero-services { align-items: flex-start; flex-direction: column; gap: .875rem; margin-top: 1rem; }
    .geo-hero .hero-services strong { font-size: 1rem; line-height: 1.5; }
    .geo-hero .hero-services small { font-size: .875rem; line-height: 1.5; }
    .hero.geo-hero .hero-promise { width: 100%; margin-top: 1.5rem; font-size: 1.9rem; line-height: 1.65; letter-spacing: 0; }
    .geo-hero .hero-promise span:nth-child(3) { margin-left: auto; margin-right: auto; }
    .geo-hero .hero-actions { margin-top: 1.5rem; }
    .geo-hero .hero-actions .btn { width: 9rem; min-height: 2.8rem; font-size: .95rem; }
    .geo-hero .hero-art { position: relative; order: 2; top: auto; left: 50%; right: auto; width: 125%; height: auto; margin: 1.5rem 0 -1.5rem; transform: translateX(-50%); }
    .geo-hero .hero-stats { position: relative; order: 3; left: auto; right: auto; bottom: auto; width: calc(100% - 2.5rem); margin: 0 auto; padding: 0 0 2.5rem; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem .75rem; }
    .geo-hero .stat { height: auto; min-height: 5rem; padding-left: 1rem; }
    .geo-hero .stat:nth-child(odd) { padding-left: 0; border-left: 0; }
    .geo-hero .stat strong { font-size: 1.875rem; line-height: 1.35; }
    .geo-hero .stat span { font-size: .85rem; line-height: 1.5; white-space: normal; }
}

.geo-back-to-top {
    position: fixed;
    right: 24px;
    bottom: calc(24px + env(safe-area-inset-bottom, 0px));
    z-index: 90;
    display: block;
    width: 72px;
    height: 72px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: transparent;
    line-height: 0;
}
.geo-back-to-top[hidden] { display: none; }
.geo-back-to-top img { display: block; width: 100%; height: auto; }
@media (max-width: 760px) {
    .geo-back-to-top { right: 8px; bottom: calc(16px + env(safe-area-inset-bottom, 0px)); }
}
@media print {
    .geo-back-to-top { display: none; }
}
