/* Tablet layout and the shared fullscreen navigation. */
@media (max-width: 991px) {
  .header_section {
    top: 0;
  }

  .custom_nav-container {
    min-height: 86px;
  }

  .custom_nav-container .navbar-toggler {
    padding: 0;
    border: 0;
  }

  .custom_nav-container .navbar-toggler:focus-visible {
    outline: 2px solid var(--lime);
    outline-offset: 5px;
  }

  .custom_nav-container .navbar-toggler span,
  .custom_nav-container .navbar-toggler span::before,
  .custom_nav-container .navbar-toggler span::after {
    position: relative;
    display: block;
    width: 28px;
    height: 2px;
    background: #fff;
    transition: .2s;
  }

  .custom_nav-container .navbar-toggler span::before,
  .custom_nav-container .navbar-toggler span::after {
    position: absolute;
    left: 0;
    content: "";
  }

  .custom_nav-container .navbar-toggler span::before {
    top: -8px;
  }

  .custom_nav-container .navbar-toggler span::after {
    top: 8px;
  }

  .custom_nav-container .navbar-toggler[aria-expanded="true"] span {
    background: transparent;
  }

  .custom_nav-container .navbar-toggler[aria-expanded="true"] span::before {
    top: 0;
    transform: rotate(45deg);
  }

  .custom_nav-container .navbar-toggler[aria-expanded="true"] span::after {
    top: 0;
    transform: rotate(-45deg);
  }

  /* A no-JavaScript fallback keeps the regular navigation readable. */
  .navbar-collapse {
    margin: 0 -15px;
    padding: 17px 25px 24px;
    background: var(--forest-dark);
  }

  .custom_nav-container .navbar-nav {
    align-items: flex-start;
    gap: 6px;
  }

  .custom_nav-container .nav-item .nav-link {
    padding: 9px 0;
  }

  .nav-cta {
    display: inline-block;
    margin: 15px 0 0;
  }

  .about-copy {
    padding-right: 15px;
  }

  .about-visual {
    margin-top: 48px;
    padding-left: 15px;
  }

  .about-image {
    height: 460px;
  }

  .experience-card {
    left: 0;
  }

  .section-heading {
    align-items: flex-start;
    flex-direction: column;
    gap: 14px;
  }

  .location-panel {
    grid-template-columns: 1.3fr .7fr;
  }

  .location-copy {
    padding: 50px;
  }

  .location-detail {
    padding: 35px;
  }

  .contact-copy {
    padding-right: 15px;
    margin-bottom: 40px;
  }

  .footer-brand {
    margin-bottom: 35px;
  }

  .footer-social {
    margin-top: 30px;
  }

  .contact-layout {
    grid-template-columns: 1fr;
    gap: 35px;
  }

  .location-card {
    grid-template-columns: 1fr;
  }

  .location-map {
    min-height: 320px;
  }

  .location-info {
    padding: 52px;
  }

  .custom_nav-container .navbar-brand {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 64px;
    line-height: 0;
  }

  .custom_nav-container .navbar-brand img {
    display: block;
    width: auto;
    height: 58px;
    max-height: 58px;
    object-fit: contain;
    object-position: center;
  }
}

/* Independent fullscreen menu: it intentionally bypasses Bootstrap collapse
   so opening, closing and scroll restoration remain stable on iOS. */
.mobile-full-menu {
  display: none;
}

@media (max-width: 991px) {
  .js .navbar-collapse {
    display: none !important;
  }

  body.mobile-menu-open {
    overflow: hidden;
    overscroll-behavior: none;
  }

  .mobile-full-menu {
    position: fixed;
    z-index: 10050;
    inset: 0;
    display: grid;
    grid-template-rows: auto minmax(0, 1fr);
    min-height: 100dvh;
    padding: max(22px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) max(30px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left));
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    isolation: isolate;
    background: linear-gradient(145deg, #103d2d 0%, #0b3124 58%, #082b20 100%);
    color: #fff;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translate3d(0, -10px, 0);
    transition: transform .42s cubic-bezier(.2, .75, .25, 1), opacity .28s ease, visibility .42s;
  }

  body.mobile-menu-open .mobile-full-menu {
    visibility: visible;
    pointer-events: auto;
    opacity: 1;
    transform: none;
  }

  .mobile-menu-bar {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    min-height: 60px;
  }

  .mobile-menu-brand {
    grid-column: 2;
    align-self: center;
  }

  .mobile-menu-brand img {
    display: block;
    width: 146px;
    max-height: 58px;
    object-fit: contain;
    object-position: center;
  }

  .mobile-menu-close {
    display: flex;
    grid-column: 3;
    align-items: center;
    justify-content: center;
    justify-self: end;
    width: 46px;
    height: 46px;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: #fff;
    transition: color .25s ease, transform .35s cubic-bezier(.2, .75, .25, 1);
  }

  .mobile-menu-close:hover,
  .mobile-menu-close:focus-visible {
    outline: 2px solid var(--lime);
    outline-offset: 3px;
    color: var(--lime);
    transform: rotate(90deg) scale(1.05);
  }

  .mobile-menu-close span,
  .mobile-menu-close span::before {
    display: block;
    width: 25px;
    height: 2px;
    background: currentColor;
    content: "";
    transform: rotate(45deg);
  }

  .mobile-menu-close span::before {
    transform: rotate(90deg);
  }

  .mobile-menu-links {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 0;
    padding: clamp(28px, 8vh, 74px) 0 clamp(34px, 8vh, 72px);
    text-align: center;
  }

  .mobile-menu-links .navbar-nav {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    margin: 0;
    padding: 0;
    list-style: none;
  }

  .mobile-menu-links .nav-item {
    width: auto;
    opacity: 0;
    transform: translate3d(0, 14px, 0);
  }

  .mobile-menu-links .nav-link,
  .mobile-menu-links .nav-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 9px 12px;
    color: #fff;
    font-size: clamp(24px, 7vw, 31px);
    font-weight: 700;
    letter-spacing: -.025em;
    line-height: 1.22;
    text-transform: none;
  }

  .mobile-menu-links .nav-item.active .nav-link,
  .mobile-menu-links .nav-link[aria-current="page"],
  .mobile-menu-links .nav-link:hover {
    color: var(--lime);
  }

  .mobile-menu-links .nav-link:focus-visible {
    outline: 2px solid var(--lime);
    outline-offset: 5px;
    color: var(--lime);
  }

  .mobile-menu-links .nav-cta {
    min-height: 48px;
    margin: 25px 0 0;
    padding: 13px 20px;
    background: var(--lime);
    color: var(--forest-dark);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .045em;
    line-height: 1.2;
    text-transform: uppercase;
    opacity: 0;
    transform: translate3d(0, 14px, 0);
    transition: background-color .3s ease, color .3s ease, transform .3s cubic-bezier(.2, .75, .25, 1);
  }

  .mobile-menu-links .nav-cta:hover,
  .mobile-menu-links .nav-cta:focus-visible {
    outline: 1px solid var(--lime);
    outline-offset: 0;
    background: transparent;
    color: var(--lime);
    transform: translateY(-2px);
  }

  .mobile-menu-links .nav-cta i {
    margin-left: 8px;
  }

  body.mobile-menu-open .mobile-menu-links .nav-item,
  body.mobile-menu-open .mobile-menu-links .nav-cta {
    animation: fullscreen-menu-item .48s cubic-bezier(.2, .7, .25, 1) forwards;
  }

  body.mobile-menu-open .mobile-menu-links .nav-item:nth-child(1) {
    animation-delay: .10s;
  }

  body.mobile-menu-open .mobile-menu-links .nav-item:nth-child(2) {
    animation-delay: .17s;
  }

  body.mobile-menu-open .mobile-menu-links .nav-item:nth-child(3) {
    animation-delay: .24s;
  }

  body.mobile-menu-open .mobile-menu-links .nav-item:nth-child(4) {
    animation-delay: .31s;
  }

  body.mobile-menu-open .mobile-menu-links .nav-cta {
    animation-delay: .40s;
  }

  .mobile-full-menu:focus {
    outline: 0;
  }
}

@keyframes fullscreen-menu-item {
  to {
    opacity: 1;
    transform: none;
  }
}

@media (max-width: 991px) and (max-height: 640px) {
  .mobile-menu-links {
    justify-content: flex-start;
    padding-top: 26px;
    padding-bottom: 24px;
  }

  .mobile-menu-links .nav-link {
    padding: 6px 12px;
    font-size: clamp(21px, 5.8vw, 27px);
  }

  .mobile-menu-links .nav-cta {
    min-height: 44px;
    margin-top: 16px;
    padding: 11px 17px;
  }
}

@media (max-width: 767px) {
  .section-padding {
    padding: 76px 0;
  }

  .site-topbar {
    display: none;
  }

  .topbar-inner {
    justify-content: center;
    min-height: 36px;
  }

  .topbar-inner p {
    display: none;
  }

  .topbar-links {
    gap: 17px;
  }

  .topbar-links a {
    font-size: 12px;
  }

  .header_section,
  .inner-page .header_section {
    top: 0;
  }

  .custom_nav-container {
    position: relative;
    justify-content: center;
    min-height: 84px;
  }

  .header_section.is-scrolled .custom_nav-container {
    min-height: 72px;
  }

  .custom_nav-container .navbar-brand {
    position: absolute;
    top: 50%;
    left: 50%;
    height: 60px;
    transform: translate(-50%, -50%);
  }

  .header_section.is-scrolled .custom_nav-container .navbar-brand {
    height: 52px;
  }

  .header_section.is-scrolled .custom_nav-container .navbar-brand img {
    height: 52px;
    max-height: 52px;
  }

  .custom_nav-container .navbar-toggler {
    z-index: 1;
    align-self: center;
    margin-left: auto;
  }

  .mobile-hero-title {
    display: inline;
  }

  .desktop-hero-title {
    display: none;
  }

  .hero_section {
    min-height: 100svh;
    align-items: center;
  }

  .hero_bg_box img {
    object-position: 42% center;
  }

  .hero_bg_box::after {
    background: linear-gradient(90deg, rgba(8, 39, 27, .88), rgba(11, 48, 32, .70));
  }

  .hero-content {
    width: 100%;
    padding: 126px 0 58px;
  }

  .hero-copy {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
  }

  .hero-copy .eyebrow {
    justify-content: center;
    margin-bottom: 20px;
  }

  .hero-copy h1 {
    max-width: 330px;
    margin: 0 auto;
    font-size: clamp(46px, 13.5vw, 58px);
    line-height: 1.05;
  }

  .hero-lead {
    max-width: 305px;
    margin: 25px auto 0;
    font-size: 16px;
    line-height: 1.8;
  }

  .hero-actions {
    display: grid;
    grid-template-columns: 1fr;
    width: min(100%, 306px);
    margin: 37px auto 0;
    gap: 13px;
  }

  .hero-actions .button {
    width: 100%;
    min-height: 52px;
  }

  .hero-trust,
  .scroll-hint {
    display: none;
  }

  .about-copy h2,
  .section-heading h2,
  .contact-copy h2 {
    font-size: 38px;
  }

  .about-copy .intro {
    font-size: 17px;
  }

  .about-image {
    height: 390px;
  }

  .service-card,
  .service-card p {
    min-height: 0;
  }

  .location_section {
    padding-top: 0;
  }

  .location-panel {
    grid-template-columns: 1fr;
  }

  .location-copy {
    padding: 45px 31px;
  }

  .location-copy h2 {
    font-size: 37px;
  }

  .location-detail {
    padding: 35px 31px;
  }

  .contact-form {
    padding: 25px 20px;
  }

  .footer-bottom {
    align-items: flex-start;
    flex-direction: column;
    gap: 5px;
    margin-top: 40px;
  }

  .info_section {
    padding-top: 50px;
  }

  .page-banner h1 {
    font-size: 43px;
  }

  .inner-page .page-banner {
    min-height: 310px;
    padding: 128px 0 56px;
  }

  .page-intro {
    margin-bottom: 38px;
  }

  .contact-form-large {
    padding: 28px 20px;
  }

  .contact-form-large h2 {
    font-size: 30px;
  }

  .location-map {
    min-height: 245px;
  }

  .location-info {
    padding: 40px 28px;
  }

  .location-info h2 {
    font-size: 38px;
  }

  .location-actions {
    display: grid;
    grid-template-columns: 1fr;
  }

  .location-actions .button {
    width: 100%;
  }

  .visit-notes {
    grid-template-columns: 1fr;
  }

  .visit-note {
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }

  .visit-note:last-child {
    border-bottom: 0;
  }
}

@media (max-width: 430px) {
  .topbar-links a:last-child {
    display: none;
  }

  .about-image {
    height: 330px;
  }

  .experience-card {
    bottom: 17px;
    width: 195px;
    padding: 17px 44px 18px 18px;
  }

  .experience-card strong {
    font-size: 20px;
  }

  .about-points div {
    align-items: flex-start;
  }

  .section-heading h2 {
    font-size: 35px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .mobile-full-menu,
  .mobile-menu-close,
  .mobile-menu-links .nav-cta {
    transition: none;
  }

  body.mobile-menu-open .mobile-menu-links .nav-item,
  body.mobile-menu-open .mobile-menu-links .nav-cta {
    animation: none;
    opacity: 1;
    transform: none;
  }
}
