/* v14 sidebar sticky refinement
   Only the support navigation and sidebar footer stick on desktop.
   The logo/sidebar container itself remains in normal document flow. */
.gt-sidebar__sticky {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

@media (min-width: 1081px) {
    .gt-app-shell {
        align-items: stretch;
    }

    .gt-app-shell > .gt-sidebar,
    .gt-sidebar {
        position: relative;
        height: auto;
        max-height: none;
        min-height: 100vh;
        overflow: visible;
    }

    .gt-sidebar__sticky {
        position: sticky;
        top: 0;
        height: auto;
        min-height: 0;
        display: flex;
        flex-direction: column;
        align-self: flex-start;
        overflow: visible;
    }

    body.admin-bar .gt-sidebar__sticky {
        top: 32px;
        min-height: 0;
    }

    .gt-sidebar__sticky > .gt-side-nav,
    .gt-sidebar__sticky > .gt-sidebar__footer {
        flex: 0 0 auto;
    }

    .gt-sidebar__sticky > .gt-sidebar__footer {
        margin-top: 36px;
    }
}

@media (max-width: 1080px) {
    .gt-sidebar__sticky {
        position: static;
        min-height: 0;
        height: auto;
        display: flex;
        flex-direction: column;
    }
}


/* v16 skip-link target refinement */
#gt-content {
    scroll-margin-top: calc(var(--gt-topbar, 88px) + 24px);
}
#gt-content:focus,
.gt-main:focus {
    outline: none;
}
@media (max-width: 1080px) {
    #gt-content {
        scroll-margin-top: calc(var(--gt-topbar, 88px) + 24px);
    }
}

/* v17 skip-link target: front page now jumps past hero/support cards to the editable content area. */
.gt-content-anchor {
    display: block;
    position: relative;
    scroll-margin-top: calc(var(--gt-topbar) + 12px);
    outline: none;
}
.gt-content-anchor:focus,
.gt-content-anchor:focus-visible {
    outline: none;
}


/* v19/v20 hero image preload, whole-page entrance and animated loader */
.gt-js body.gt-is-loading .gt-app-shell {
    opacity: 0;
}
.gt-js body.gt-is-ready .gt-app-shell {
    opacity: 1;
    transition: opacity 0.55s var(--ease-snappy-polished);
}
.gt-js body.gt-is-loading,
.gt-js body.gt-is-ready {
    background: var(--gt-dark, #001715);
}
.gt-hero-slide__media {
    opacity: 0;
    transition: opacity 0.65s var(--ease-snappy-polished);
}
.gt-hero-slide.is-media-ready .gt-hero-slide__media,
body.gt-is-ready .gt-hero-slide__media {
    opacity: 1;
}
.gt-hero-slide.is-active .gt-hero-slide__media {
    animation: gtHeroImageFade 0.75s var(--ease-snappy-polished) both;
}
@keyframes gtHeroImageFade {
    from { opacity: 0; }
    to { opacity: 1; }
}
.gt-page-loader {
    position: fixed;
    inset: 0;
    z-index: 99999;
    display: grid;
    place-items: center;
    background: var(--gt-dark, #001715);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition:
        opacity 0.42s var(--ease-snappy-polished),
        visibility 0.42s var(--ease-snappy-polished);
}
.gt-js body.gt-is-loading .gt-page-loader {
    opacity: 1;
    visibility: visible;
}
.gt-js body.gt-is-ready .gt-page-loader {
    opacity: 0;
    visibility: hidden;
}
.gt-page-loader__inner {
    position: relative;
    width: 86px;
    height: 86px;
    display: grid;
    place-items: center;
}
.gt-page-loader__ring {
    position: absolute;
    inset: 0;
    border: 3px solid rgba(255, 255, 255, 0.12);
    border-top-color: var(--gt-green, #33cc33);
    border-radius: 50%;
    animation: gtLoaderSpin 0.9s linear infinite;
}
.gt-page-loader__dot {
    position: absolute;
    width: 10px;
    height: 10px;
    border-radius: 999px;
    background: var(--gt-green, #33cc33);
    animation: gtLoaderPulse 1.05s var(--ease-snappy-polished) infinite;
}
.gt-page-loader__dot--one {
    transform: translateX(-18px);
    animation-delay: 0s;
}
.gt-page-loader__dot--two {
    transform: translateX(0);
    animation-delay: 0.12s;
}
.gt-page-loader__dot--three {
    transform: translateX(18px);
    animation-delay: 0.24s;
}
@keyframes gtLoaderSpin {
    to { transform: rotate(360deg); }
}
@keyframes gtLoaderPulse {
    0%, 100% { opacity: 0.35; transform: translateX(var(--gt-loader-x, 0)) scale(0.72); }
    50% { opacity: 1; transform: translateX(var(--gt-loader-x, 0)) scale(1); }
}
.gt-page-loader__dot--one { --gt-loader-x: -18px; }
.gt-page-loader__dot--two { --gt-loader-x: 0; }
.gt-page-loader__dot--three { --gt-loader-x: 18px; }

@media (prefers-reduced-motion: reduce) {
    .gt-js body.gt-is-loading .gt-app-shell,
    .gt-js body.gt-is-ready .gt-app-shell,
    .gt-hero-slide__media {
        opacity: 1 !important;
        transition: none !important;
        animation: none !important;
    }
    .gt-page-loader {
        display: none !important;
    }
}


/* v23: accessible single-control side-menu disclosures. */
.gt-side-nav__link {
    width: 100%;
    display: grid;
    grid-template-columns: 64px minmax(0, 1fr) 18px;
    align-items: center;
    gap: 20px;
    min-height: 132px;
    padding: 24px 27px;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: #fff;
    font: inherit;
    text-align: left;
    text-decoration: none;
    cursor: pointer;
    appearance: none;
    -webkit-appearance: none;
}
.gt-side-nav__item:not(.has-children) > .gt-side-nav__link {
    grid-template-columns: 64px minmax(0, 1fr);
}
.gt-side-nav__link:hover .gt-side-nav__chev,
.gt-side-nav__link:focus-visible .gt-side-nav__chev {
    transform: translateX(25%);
}
.gt-side-nav__item.is-open > .gt-side-nav__link,
.gt-side-nav__link:hover {
    background: rgba(128, 232, 121, 0.065);
}
.gt-side-nav__link:focus-visible {
    position: relative;
    z-index: 2;
}

/* Keyboard focus alone must not reveal a submenu. */
.gt-side-nav__item.has-children:not(.is-open):focus-within > .gt-side-panel {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translateX(-12px);
}

@media (max-width: 1280px) and (min-width: 1081px) {
    .gt-side-nav__link {
        grid-template-columns: 58px minmax(0, 1fr) 16px;
        gap: 16px;
        padding-left: 22px;
        padding-right: 22px;
    }
    .gt-side-nav__item:not(.has-children) > .gt-side-nav__link {
        grid-template-columns: 58px minmax(0, 1fr);
    }
}

@media (max-width: 1080px) {
    .gt-side-nav__link {
        grid-template-columns: 48px minmax(0, 1fr) 16px;
        gap: 14px;
        min-height: 84px;
        padding: 18px 0;
    }
    .gt-side-nav__item:not(.has-children) > .gt-side-nav__link {
        grid-template-columns: 48px minmax(0, 1fr);
    }
    .gt-side-nav__item.has-children.is-open > .gt-side-nav__link .gt-side-nav__chev {
        transform: rotate(90deg);
    }
    /* Touch layouts reveal panels only after explicit activation. */
    .gt-side-nav__item.has-children:not(.is-open) > .gt-side-panel,
    .gt-side-nav__item.has-children:not(.is-open):hover > .gt-side-panel,
    .gt-side-nav__item.has-children:not(.is-open):focus-within > .gt-side-panel {
        max-height: 0;
        margin: 0;
        padding-top: 0;
        padding-bottom: 0;
        opacity: 0;
        visibility: hidden;
        pointer-events: none;
    }
}

/* v25 semantic submenu lists and consistent side-menu focus treatment */
.gt-side-nav__list,
.gt-side-panel__list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.gt-side-panel__item,
.gt-side-panel__footer-item {
    margin: 0;
    padding: 0;
}

.gt-side-nav__toggle {
    width: 100%;
    border: 0;
    border-radius: 0;
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.gt-side-nav__link:focus,
.gt-side-nav__link:focus-visible,
.gt-side-nav__toggle:focus,
.gt-side-nav__toggle:focus-visible {
    position: relative;
    z-index: 3;
    outline: 3px solid var(--gt-green) !important;
    outline-offset: -3px !important;
    border-radius: 0 !important;
}

.gt-side-panel__footer-item {
    margin: 0 -28px;
}

.gt-side-panel__footer {
    margin: 0;
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }
}


/* v41 content gutters: match the footer's responsive horizontal spacing.
   Scoped to the editable page-content wrappers so hero, sidebar and footer layouts are unaffected. */
.gt-page-content,
.gt-front-page-content {
    padding-left: clamp(28px, 5vw, 72px);
    padding-right: clamp(28px, 5vw, 72px);
}

.gt-page-content > .wp-block-group,
.gt-front-page-content > .wp-block-group {
    padding-left: 0;
    padding-right: 0;
}



/* Main-area container used by global alignfull calculations. */
.gt-main {
    container-type: inline-size;
}
