/* TT Organizer: responsive Divi Services navigation.
 * Add the CSS class `tt-accordion-menu` to the top-level WordPress menu item.
 * Desktop (981px+): compact 3-column mega menu showing hub headings + direct child links only.
 * Tablet/mobile (<=980px): accessible accordion, preserving the deeper menu hierarchy.
 */

/* ---------- Desktop mega menu ---------- */
@media (min-width:981px){
  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu{
    position:static!important;
  }

  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu > ul.sub-menu{
    left:50%!important;
    right:auto!important;
    top:100%!important;
    transform:translateX(-50%)!important;

    width:1100px!important;
    max-width:calc(100vw - 48px)!important;
    min-width:0!important;

    /* Divi normally opens this on hover. Desktop opening is click-only. */
    display:none!important;
    visibility:hidden!important;
    opacity:0!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:28px 42px!important;

    padding:30px 36px 34px!important;
    margin:0!important;
    box-sizing:border-box!important;

    overflow:visible!important;
    background:#fff!important;
    border-top:3px solid #c69a35!important;
    box-shadow:0 14px 35px rgba(0,0,0,.16)!important;
  }

  /* Each hub is one mega-menu section. */
  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu > ul.sub-menu > li{
    position:relative!important;
    display:block!important;
    float:none!important;
    width:auto!important;
    padding:0!important;
    margin:0!important;
  }

  /* Clickable hub heading. */
  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu > ul.sub-menu > li > a{
    display:block!important;
    width:100%!important;
    box-sizing:border-box!important;
    padding:0 0 10px!important;
    white-space:normal!important;
    overflow-wrap:anywhere!important;
    margin:0 0 10px!important;

    font-family:'Cormorant Custom',Georgia,serif!important;
    font-size:21px!important;
    line-height:1.2!important;
    font-weight:700!important;
    color:#3c5e51!important;
    background:transparent!important;
    border-bottom:1px solid rgba(60,94,81,.18)!important;
  }

  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu > ul.sub-menu > li > a:hover{
    color:#c69a35!important;
    opacity:1!important;
  }

  /* Keep the current hub aligned and make the active state unambiguous. */
  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu > ul.sub-menu > li.current-menu-item > a,
  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu > ul.sub-menu > li.current_page_item > a,
  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu > ul.sub-menu > li.current-menu-ancestor > a,
  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu > ul.sub-menu > li.current_page_ancestor > a{
    padding:0 0 10px!important;
    margin:0 0 10px!important;
    font-size:21px!important;
    font-weight:700!important;
    color:#c69a35!important;
    transform:none!important;
  }

  /* The hub's direct children become its visible desktop shortlist. */
  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu > ul.sub-menu > li > ul.sub-menu{
    position:static!important;
    left:auto!important;
    right:auto!important;
    top:auto!important;
    transform:none!important;

    display:block!important;
    visibility:visible!important;
    opacity:1!important;

    width:100%!important;
    min-width:0!important;
    padding:0!important;
    margin:0!important;
    box-sizing:border-box!important;

    background:transparent!important;
    border:0!important;
    box-shadow:none!important;
  }

  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu > ul.sub-menu > li > ul.sub-menu > li{
    position:static!important;
    display:block!important;
    float:none!important;
    width:100%!important;
    padding:0!important;
    margin:0!important;
  }

  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu > ul.sub-menu > li > ul.sub-menu > li > a{
    display:block!important;
    width:100%!important;
    box-sizing:border-box!important;
    padding:5px 0!important;
    white-space:normal!important;
    overflow-wrap:anywhere!important;

    font-family:'Raleway Custom',Helvetica,Arial,sans-serif!important;
    font-size:15px!important;
    line-height:1.35!important;
    font-weight:400!important;
    color:#3c5e51!important;
    background:transparent!important;
    transition:color .18s ease,padding-left .18s ease!important;
  }

  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu > ul.sub-menu > li > ul.sub-menu > li > a:hover{
    color:#c69a35!important;
    padding-left:5px!important;
    opacity:1!important;
  }

  /* Highlight the active service page without Divi's size/offset treatment. */
  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu > ul.sub-menu > li > ul.sub-menu > li.current-menu-item > a,
  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu > ul.sub-menu > li > ul.sub-menu > li.current_page_item > a,
  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu > ul.sub-menu > li > ul.sub-menu > li.current-menu-ancestor > a,
  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu > ul.sub-menu > li > ul.sub-menu > li.current_page_ancestor > a{
    padding:5px 0!important;
    font-size:15px!important;
    font-weight:700!important;
    color:#c69a35!important;
    transform:none!important;
  }

  /* Keep desktop concise: grandchildren and deeper remain available via the hub/category pages. */
  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu > ul.sub-menu > li > ul.sub-menu ul.sub-menu{
    display:none!important;
    visibility:hidden!important;
    opacity:0!important;
  }

  /* Remove arrows that would imply hidden desktop flyouts. */
  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu ul.sub-menu .menu-item-has-children > a::after{
    display:none!important;
  }

  /* Native Divi mega-menu classes can coexist; neutralise their column rules here. */
  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu.mega-menu > ul.sub-menu > li{
    width:auto!important;
    clear:none!important;
  }

  /* Mobile-only controls are never shown on desktop. */
  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu .tt-mobile-menu-toggle{
    display:none!important;
  }

  body .et_pb_menu.et_pb_module .et-menu > li.tt-accordion-menu.tt-desktop-open > ul.sub-menu{
    display:grid!important;
    visibility:visible!important;
    opacity:1!important;
  }
}

/* ---------- Tablet/mobile accordion ---------- */
@media (max-width:980px){
  body .et_pb_menu.et_pb_module .et_mobile_menu li.tt-accordion-menu,
  body .et_pb_menu.et_pb_module .et_mobile_menu li.tt-accordion-menu li{
    position:relative!important;
  }

  /* Hide every nested level inside Services until explicitly expanded. */
  body .et_pb_menu.et_pb_module .et_mobile_menu li.tt-accordion-menu ul.sub-menu{
    position:static!important;
    left:auto!important;
    right:auto!important;
    top:auto!important;
    transform:none!important;

    display:none!important;
    visibility:visible!important;
    opacity:1!important;

    width:100%!important;
    min-width:0!important;
    max-width:none!important;
    margin:0!important;
    padding:0 0 0 14px!important;
    box-sizing:border-box!important;

    background:transparent!important;
    border:0!important;
    box-shadow:none!important;
  }

  body .et_pb_menu.et_pb_module .et_mobile_menu li.tt-accordion-menu.tt-mobile-open > ul.sub-menu,
  body .et_pb_menu.et_pb_module .et_mobile_menu li.tt-accordion-menu li.tt-mobile-open > ul.sub-menu{
    display:block!important;
  }

  /* Leave room for the separate toggle so labels remain normal clickable links. */
  body .et_pb_menu.et_pb_module .et_mobile_menu li.tt-accordion-menu.menu-item-has-children > a,
  body .et_pb_menu.et_pb_module .et_mobile_menu li.tt-accordion-menu li.menu-item-has-children > a{
    padding-right:54px!important;
  }

  /* Divi's own submenu arrow is replaced by the accessible button. */
  body .et_pb_menu.et_pb_module .et_mobile_menu li.tt-accordion-menu .menu-item-has-children > a::after,
  body .et_pb_menu.et_pb_module .et_mobile_menu li.tt-accordion-menu.menu-item-has-children > a::after{
    display:none!important;
  }

  body .et_pb_menu.et_pb_module .et_mobile_menu .tt-mobile-menu-toggle{
    position:absolute!important;
    z-index:5!important;
    top:3px!important;
    right:6px!important;
    width:42px!important;
    height:42px!important;
    padding:0!important;
    margin:0!important;
    border:0!important;
    border-radius:50%!important;
    background:transparent!important;
    color:#3c5e51!important;
    cursor:pointer!important;

    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
  }

  body .et_pb_menu.et_pb_module .et_mobile_menu .tt-mobile-menu-toggle:hover,
  body .et_pb_menu.et_pb_module .et_mobile_menu .tt-mobile-menu-toggle:focus-visible{
    background:rgba(60,94,81,.08)!important;
    outline:none!important;
  }

  body .et_pb_menu.et_pb_module .et_mobile_menu .tt-mobile-menu-toggle:focus-visible{
    box-shadow:0 0 0 2px #c69a35!important;
  }

  body .et_pb_menu.et_pb_module .et_mobile_menu .tt-mobile-menu-toggle::before{
    content:'›';
    display:block;
    font-family:Arial,sans-serif!important;
    font-size:24px!important;
    font-weight:300!important;
    line-height:1!important;
    transform:translateY(-1px);
  }

  body .et_pb_menu.et_pb_module .et_mobile_menu .tt-mobile-menu-toggle[aria-expanded="true"]::before{
    content:'⌄';
  }

  /* Keep nested service text compact and readable. */
  body .et_pb_menu.et_pb_module .et_mobile_menu li.tt-accordion-menu ul.sub-menu a{
    font-family:'Raleway Custom',Helvetica,Arial,sans-serif!important;
    line-height:1.35!important;
  }
}

/* ---------- Divi 5 mobile panel sizing / containment ----------
 * Divi's mobile dropdown is positioned from the very narrow Menu module that
 * contains the hamburger, so the panel can inherit a tiny width.  When our
 * responsive Services menu is present, JS adds .tt-responsive-menu-panel to
 * the mobile UL and sets --tt-mobile-menu-top to the bottom of the header.
 */
@media (max-width:980px){
  html.tt-mobile-menu-open,
  body.tt-mobile-menu-open{
    overflow-x:hidden!important;
  }

  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel{
    position:fixed!important;
    z-index:999999!important;
    left:12px!important;
    right:12px!important;
    top:var(--tt-mobile-menu-top, 120px)!important;
    transform:none!important;

    width:auto!important;
    min-width:0!important;
    max-width:none!important;
    box-sizing:border-box!important;

    max-height:calc(100dvh - var(--tt-mobile-menu-top, 120px) - 12px)!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    overscroll-behavior:contain;

    padding:0!important;
    margin:0!important;
    background:#fff!important;
    border-top:3px solid #c69a35!important;
    box-shadow:0 12px 30px rgba(0,0,0,.18)!important;
  }

  /* Reset Divi's mobile list widths so every row uses the full panel. */
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel > li,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li ul.sub-menu,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li ul.sub-menu li{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    box-sizing:border-box!important;
    float:none!important;
  }

  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel > li > a{
    display:block!important;
    width:100%!important;
    box-sizing:border-box!important;
    padding:14px 18px!important;
    white-space:normal!important;
    overflow-wrap:normal!important;
    word-break:normal!important;
  }

  /* Top-level Services heading inside the mobile menu. */
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel > li.tt-accordion-menu > a{
    font-family:'Cormorant Custom',Georgia,serif!important;
    font-size:28px!important;
    line-height:1.15!important;
    color:#3c5e51!important;
  }

  /* Hub headings. */
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu > ul.sub-menu > li > a{
    font-family:'Cormorant Custom',Georgia,serif!important;
    font-size:22px!important;
    line-height:1.2!important;
    font-weight:700!important;
    color:#3c5e51!important;
    padding:12px 54px 12px 18px!important;
    border-top:1px solid rgba(60,94,81,.12)!important;
    white-space:normal!important;
    word-break:normal!important;
    overflow-wrap:normal!important;
  }

  /* Service/category links below a hub. */
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu ul.sub-menu ul.sub-menu a{
    font-family:'Raleway Custom',Helvetica,Arial,sans-serif!important;
    font-size:16px!important;
    line-height:1.35!important;
    font-weight:400!important;
    color:#3c5e51!important;
    padding:10px 54px 10px 28px!important;
    white-space:normal!important;
    word-break:normal!important;
    overflow-wrap:normal!important;
  }

  /* Deeper service links get a small extra indent, not an ever-narrower column. */
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu ul.sub-menu ul.sub-menu ul.sub-menu a{
    padding-left:42px!important;
    font-size:15px!important;
  }

  /* Keep toggles aligned with their row regardless of inherited Divi styles. */
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel .tt-mobile-menu-toggle{
    top:5px!important;
    right:8px!important;
  }
}


/* Divi 5 may output its own submenu indicator as a real element rather than
   the classic anchor ::after pseudo-element. Hide those inside our accordion
   so only the TT toggle is shown. */
@media (max-width:980px){
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu > .et_mobile_menu_arrow,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu li > .et_mobile_menu_arrow,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu > .mobile-toggle,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu li > .mobile-toggle,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu > a > .et-pb-icon,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu li > a > .et-pb-icon,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu > a > .et_mobile_menu_arrow,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu li > a > .et_mobile_menu_arrow{
    display:none!important;
  }

  body .et_pb_menu.et_pb_module .et_mobile_menu .tt-mobile-menu-toggle::before{
    font-size:30px!important;
    font-weight:400!important;
    line-height:1!important;
    transform:none!important;
  }

  body .et_pb_menu.et_pb_module .et_mobile_menu .tt-mobile-menu-toggle[aria-expanded="true"]::before{
    font-size:24px!important;
    transform:translateY(-2px)!important;
  }
}

/* ---------- v1.0.24: suppress Divi/legacy mobile + indicators ----------
 * Some Divi/mobile-menu customisations draw their toggle with ::before rather
 * than ::after (or on the LI itself). Our TT button is the only control we want.
 */
@media (max-width:980px){
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu.menu-item-has-children > a::before,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu.menu-item-has-children > a::after,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu li.menu-item-has-children > a::before,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu li.menu-item-has-children > a::after,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu.menu-item-has-children::before,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu.menu-item-has-children::after,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu li.menu-item-has-children::before,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu li.menu-item-has-children::after{
    content:none!important;
    display:none!important;
  }

  /* Explicitly hide common real-element toggle classes used by Divi snippets/plugins. */
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu .submenu-toggle,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu .sub-menu-toggle,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu .et_mobile_submenu_toggle,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-accordion-menu .et_pb_submenu_toggle{
    display:none!important;
  }

  /* User preference: simple chevrons. */
  body .et_pb_menu.et_pb_module .et_mobile_menu .tt-mobile-menu-toggle::before{
    content:'>'!important;
    font-family:Arial,sans-serif!important;
    font-size:23px!important;
    font-weight:400!important;
  }

  body .et_pb_menu.et_pb_module .et_mobile_menu .tt-mobile-menu-toggle[aria-expanded="true"]::before{
    content:'⌄'!important;
    font-size:24px!important;
  }
}


/* ---------- v1.0.25: lock page behind an open mobile menu ---------- */
@media (max-width:980px){
  html.tt-mobile-menu-open,
  body.tt-mobile-menu-open{
    overscroll-behavior:none!important;
  }

  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel{
    overscroll-behavior:contain!important;
    -webkit-overflow-scrolling:touch;
  }
}


/* ---------- v1.0.26: hard mobile scroll lock + stronger chevrons ---------- */
@media (max-width:980px){
  html.tt-mobile-menu-open,
  html.tt-mobile-menu-open body{
    overscroll-behavior:none!important;
    touch-action:none!important;
  }

  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel{
    touch-action:pan-y!important;
    overscroll-behavior:contain!important;
  }

  /* Draw the arrows instead of relying on a thin font glyph. */
  body .et_pb_menu.et_pb_module .et_mobile_menu .tt-mobile-menu-toggle::before{
    content:''!important;
    display:block!important;
    width:10px!important;
    height:10px!important;
    box-sizing:border-box!important;
    border-right:3px solid currentColor!important;
    border-bottom:3px solid currentColor!important;
    transform:rotate(-45deg)!important;
    transform-origin:center!important;
    font-size:0!important;
    line-height:0!important;
  }

  body .et_pb_menu.et_pb_module .et_mobile_menu .tt-mobile-menu-toggle[aria-expanded="true"]::before{
    content:''!important;
    transform:rotate(45deg)!important;
    margin-top:-4px!important;
  }
}


/* ---------- v1.0.27: reliable page freeze while mobile navigation is open ---------- */
@media (max-width:980px){
  html.tt-mobile-menu-open{
    overflow:hidden!important;
    overscroll-behavior:none!important;
    height:100%!important;
  }

  body.tt-mobile-menu-open{
    overflow:hidden!important;
    overscroll-behavior:none!important;
    touch-action:none!important;
    width:100%!important;
  }

  /* The menu itself remains the only vertically scrollable surface. */
  body.tt-mobile-menu-open .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel{
    overflow-y:auto!important;
    -webkit-overflow-scrolling:touch!important;
    touch-action:pan-y!important;
    overscroll-behavior:contain!important;
  }
}

/* ---------- v1.0.33: clearer mobile accordion controls ---------- */
@media (max-width:980px){
  /* Make every accordion trigger look deliberately clickable. */
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel .tt-mobile-menu-toggle{
    width:44px!important;
    height:44px!important;
    min-width:44px!important;
    top:4px!important;
    right:8px!important;
    margin:0!important;
    padding:0!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    box-sizing:border-box!important;
    border-radius:50%!important;
    background:#3c5e51!important;
    border:2px solid #3c5e51!important;
    color:#ffffff!important;
    cursor:pointer!important;
    transition:background-color .18s ease,border-color .18s ease,transform .18s ease!important;
  }

  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel .tt-mobile-menu-toggle:hover,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel .tt-mobile-menu-toggle:focus-visible{
    background:#3c5e51!important;
    border-color:#c69a35!important;
    color:#ffffff!important;
  }

  /* Closed state: right-facing chevron. */
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel .tt-mobile-menu-toggle::before{
    content:''!important;
    display:block!important;
    width:10px!important;
    height:10px!important;
    box-sizing:border-box!important;
    border-right:3px solid #ffffff!important;
    border-bottom:3px solid #ffffff!important;
    transform:rotate(-45deg)!important;
    transform-origin:center!important;
    margin:0!important;
  }

  /* Open state: keep the button visible, add the gold active ring, rotate down. */
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel .tt-mobile-menu-toggle[aria-expanded="true"],
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-mobile-open > .tt-mobile-menu-toggle{
    background:#3c5e51!important;
    border-color:#c69a35!important;
  }

  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel .tt-mobile-menu-toggle[aria-expanded="true"]::before,
  body .et_pb_menu.et_pb_module .et_mobile_menu.tt-responsive-menu-panel li.tt-mobile-open > .tt-mobile-menu-toggle::before{
    transform:rotate(45deg)!important;
    margin-top:-3px!important;
  }
}
